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

Shaohua Li
2009-08-21T06:46:30Z

On Fri, Aug 21, 2009 at 05:27:10AM +0800, Rafael J. Wysocki wrote:
> On Thursday 20 August 2009, Alan Stern wrote:
> > On Thu, 20 Aug 2009, Rafael J. Wysocki wrote:
> >
> > > 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.
> >
> > I'm still not clear on this. Does the non-standard wakeup register
> > have to be set and cleared by the suspend and resume routines in
> > uhci-hcd, or will it be handled by other code?
>
> I'm not sure if anyone can answer this 100% accurately without doing any
> testing.
As far as I know, when the pci trys to enable pme, we will call corresponding
ACPI methods. In that methods, the non-starndard wakeup registers will be
set/clear. The issue is we must relay on correct BIOS.

Thanks,
Shaohua