Actually, one further question:

 > @@ -314,6 +316,9 @@ void mthca_cq_clean(struct mthca_dev *de
 >              wmb();
 >              cq->cons_index += nfreed;
 >              update_cons_index(dev, cq, nfreed);
 > +            /* use mmiowb to ensure update is ordered properly 
 > +             * prior to releasing the spinlock */
 > +            mmiowb();
 >      }
 > 
 >      spin_unlock_irq(&cq->lock);
 > @@ -711,6 +716,11 @@ repoll:
 >              }
 >      }
 > 
 > +    if (freed) {
 > +            /* we rang the MTHCA_CQ_DOORBELL so use mmiowb 
 > +             * to make sure it is ordered properly */
 > +            mmiowb();
 > +    }
 >      spin_unlock_irqrestore(&cq->lock, flags);
 > 
 >      return err == 0 || err == -EAGAIN ? npolled : err;

Would it be cleaner just to put an mmiowb() inside update_cons_index()
in the case where the doorbell gets rung?  That way there's no
unnecessary mmiowb() in the memfree case (which doesn't use a doorbell
or do any writing to PCI at all).

 - R.

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to