On Wed, 31 Aug 2011 tom.leiming@xxxxxxxxx wrote: > From: Ming Lei <tom.leiming@xxxxxxxxx> > > qh_refresh is always called when the qh is idle and has not been > linked into hardware queue, so EHCI will not access overlay of > the qh at this time. Just before linking qh into hardware queue, there > has already one wmb to order writing qh descriptor and writing dma > address of the qh into hardware queue, so HC can always see > up-to-date qh descriptor once the qh is fetched with its dma address > by EHCI. > > Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx> > --- > drivers/usb/host/ehci-q.c | 2 -- > 1 files changed, 0 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c > index 0917e3a..4431876 100644 > --- a/drivers/usb/host/ehci-q.c > +++ b/drivers/usb/host/ehci-q.c > @@ -111,8 +111,6 @@ qh_update (struct ehci_hcd *ehci, struct ehci_qh *qh, struct ehci_qtd *qtd) > } > } > > - /* HC must see latest qtd and qh data before we clear ACTIVE+HALT */ > - wmb (); > hw->hw_token &= cpu_to_hc32(ehci, QTD_TOGGLE | QTD_STS_PING); > } Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> You might want to remove also the first wmb() in qh_append_tds(). Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html