aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/ipath/ipath_intr.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index eac2e9c5528..4795cb895f8 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -954,7 +954,15 @@ static void handle_urcv(struct ipath_devdata *dd, u32 istat)
954 int i; 954 int i;
955 int rcvdint = 0; 955 int rcvdint = 0;
956 956
957 /* test_bit below needs this... */ 957 /*
958 * test_and_clear_bit(IPATH_PORT_WAITING_RCV) and
959 * test_and_clear_bit(IPATH_PORT_WAITING_URG) below
960 * would both like timely updates of the bits so that
961 * we don't pass them by unnecessarily. the rmb()
962 * here ensures that we see them promptly -- the
963 * corresponding wmb()'s are in ipath_poll_urgent()
964 * and ipath_poll_next()...
965 */
958 rmb(); 966 rmb();
959 portr = ((istat >> INFINIPATH_I_RCVAVAIL_SHIFT) & 967 portr = ((istat >> INFINIPATH_I_RCVAVAIL_SHIFT) &
960 dd->ipath_i_rcvavail_mask) 968 dd->ipath_i_rcvavail_mask)