diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index c56c9ce9800be69073a8a92ed277f1c8a0b1ddaf..aefc4950b4c9df56ec44b897a0fe4a2c2efebd3e 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c @@ -2261,6 +2261,11 @@ static int uhci_start(struct usb_hcd *hcd) uhci->fl->frame[i] = cpu_to_le32(uhci->skelqh[irq]->dma_handle); } + /* + * Some architectures require a full mb() to enforce completion of + * the memory writes above before the I/O transfers in start_hc(). + */ + mb(); start_hc(uhci); init_stall_timer(hcd);