diff -uNr a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c --- a/drivers/usb/host/uhci-hcd.c 2004-03-11 23:52:01.000000000 -0500 +++ b/drivers/usb/host/uhci-hcd.c 2004-03-13 10:38:45.000000000 -0500 @@ -2471,9 +2471,17 @@ pci_set_master(to_pci_dev(uhci_dev(uhci))); - if (uhci->state == UHCI_SUSPENDED) + if (uhci->state == UHCI_SUSPENDED) { + + /* + * Some systtems clear the Interrupt Enable register during + * PM suspend/resume, so reinitialize it. + */ + outw(USBINTR_TIMEOUT | USBINTR_RESUME | USBINTR_IOC | + USBINTR_SP, uhci->io_addr + USBINTR); + uhci->resume_detect = 1; - else { + } else { reset_hc(uhci); start_hc(uhci); }