On Fri, Nov 26, 2010 at 12:38:28AM +0000, Paul Brook wrote: > > This patch enables USB UHCI global suspend/resume feature. The OS will > > stop the HC once all ports are suspended. If there is activity on the > > port(s), an interrupt signalling remote wakeup will be triggered. > > I'm pretty sure this is wrong. Suspend/resume works based on physical > topology, i.e. the resume notification should go to the the port/hub to which > the device is connected, not directly to the host controller. If the host controller is in global suspend state, and resume is received on any of its root hub ports (given that remote wakeup is enabled for the given port), the system will be interrupted if interrupt enable bit is set. 2.1.2 USB STATUS REGISTER I/O Address: Base + (02-03h) Default Value: 0000h Attribute: Read/Write Clear size: 16 bits This register indicates pending interrupts and various states of the Host Controller Resume Detect. The Host Controller sets this bit to 1 when it receives a âRESUMEâ signal from a USB device. This is only valid if the Host Controller is in a global suspend state (bit 3 of Command register = 1). 2.1.7.1 Behavior Under Global or Selective Suspend Scenarios Resume will be recognized in the USBSTS register (bit 2) if resume is received on a suspended or enabled port when the Host Controller is in the global suspend state (USBCMD register bit 3 is set). 4.2.1 RESUME RECEIVED This event indicates that the HC received a RESUME signal from a device on the USB during a global suspend. If this interrupt is enabled in the HC Interrupt Enable register, a hardware interrupt will be signaled to the system allowing the USB to be brought out of the suspend state and returned to normal operation. You are correct in that USB HUB emulation does not propagate resume, but this does not make this patch incorrect. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html