[ofa-general] [PATCH 5/6] IB/ipath - better comment for rmb() in ipath_intr()
Arthur Jones
arthur.jones at qlogic.com
Fri Dec 7 08:00:59 PST 2007
An internal code review found the comment here
lacking -- update it with more specifics of how
and why the rmb() is there.
Signed-off-by: Arthur Jones <arthur.jones at qlogic.com>
---
drivers/infiniband/hw/ipath/ipath_intr.c | 10 +++++++++-
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 eac2e9c..4795cb8 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)
int i;
int rcvdint = 0;
- /* test_bit below needs this... */
+ /*
+ * test_and_clear_bit(IPATH_PORT_WAITING_RCV) and
+ * test_and_clear_bit(IPATH_PORT_WAITING_URG) below
+ * would both like timely updates of the bits so that
+ * we don't pass them by unnecessarily. the rmb()
+ * here ensures that we see them promptly -- the
+ * corresponding wmb()'s are in ipath_poll_urgent()
+ * and ipath_poll_next()...
+ */
rmb();
portr = ((istat >> INFINIPATH_I_RCVAVAIL_SHIFT) &
dd->ipath_i_rcvavail_mask)
More information about the general
mailing list