Re: [Qemu-devel] [patch 0/2] USB UHCI global suspend / remote wakeup

Paul Brook
2010-11-26T12:10:00Z

> On 11/26/10 03:15, Marcelo Tosatti wrote:
> > 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.
> >
> > You are correct in that USB HUB emulation does not propagate resume, but
> > this does not make this patch incorrect.
>
> Well, it does. When the notification is port based our software model
> should better reflect that, so we have the chance to add resume
> propagation to the hub emulation later on.

Exactly. The patch assumes the device is connected to a root hub port. This
assumption is incorrect.

The device should be sending the resume signal to the port/hub to which it is
connected. If that hub is still active it will reactivate the port, and flag a
port change notification in the normal manner. If the hub is also suspended it
will propagate the resume notification upstream (which may or may not be the
root hub).

Paul