Re: [PATCH 1/5] introduce .wakeup_event ops

Rafael J. Wysocki
2009-08-20T19:37:06Z

On Thursday 20 August 2009, Alan Stern wrote:
> On Thu, 20 Aug 2009, Matthew Garrett wrote:
>
> > > If the wakeup signal isn't squelched at the source, as part of the
> > > event handling, will we get an interrupt storm? Will the uhci-hcd
> > > resume routine be able to handle this or does it need to be done
> > > earlier? In other words, do we need special-purpose code in the PCI
> > > layer to handler it?
> >
> > No, nothing special needs to be done at the PCI level. It seems that
> > (for Intel at least) there's no need to do anything special at the UHCI
> > level either.
>
> This contradicts what Shaohua wrote:
>
> "The only case is UHCI in my mind. Because UHCI has non-standard wakeup
> event register. If BIOS doesn't handle it correctly (for example, not
> clear the wakeup event after a GPE), we will keep see the wakeup
> event."

I'm not sure what the phrase "we will keep see the wakeup event" is supposed to
mean. For us to "see" any events there has to be a GPE set up or PCIe PME
enabled on the right root port. Otherwise I don't see how we can receive the
event at all.

The bus type wakeup code won't know how to clear the register to acknowledge
the wakeup, but the driver's ->runtime_resume() callback surely can do that.

> What code would be responsible for setting and clearing the
> non-standard wakeup register? Are you assuming that ACPI will always
> handle it? I guess that's a reasonable assumption -- if ACPI wasn't
> aware of the register then it never would get enabled, and conversely,
> if ACPI was aware and could enable the register, then ACPI ought to
> disable it when necessary.

In any case the event has to be raised in one of the standard ways.

Thanks,
Rafael