Messages in this thread | | | From | Daniel Ritz <> | Subject | Re: 2.6.13-mm2 | Date | Wed, 28 Sep 2005 22:05:47 +0200 |
| |
On Friday 23 September 2005 18.52, Rafael J. Wysocki wrote: > Hi, > > [sorry for the delay]
[same :]
> > On Sunday, 18 of September 2005 23:49, Daniel Ritz wrote: > ]--snip--[ > > > > > > BTW, please have a look at: > > > http://bugzilla.kernel.org/show_bug.cgi?id=4416#c36 > > > and > > > http://bugzilla.kernel.org/show_bug.cgi?id=4416#c37 > > > > > > > interesting. i'd say we get interrupt storms from usb which then hurt when > > yenta has it's handler installed but usb has not. usb/hcd-pci.c frees the > > irq on suspend...so it may be enough not to do that (survives suspend-to-ram > > and suspend-to-disk here. yes, restore too :) > > > > could you give that a tree w/o any free_irq-patches for yenta and co? > > I've tried and it apparently works provided that _none_ of the IRQ-sharing > devices drops the IRQ on suspend.
ok. i didn't look too close, but i think ohci-hcd does not fully disable interrupts in it's suspend callback...needs a closer look. cc:ing linux-usb-devel...
> > I think that's the whole point: Either all of the devices should drop/request > IRQs on suspend/resume, or none of them should do this. IMHO we need to > chose one of these options and call it "the right way" or there always > will be problems with this. >
cc:ing linus since he seems to have a strong opinion about that free_irq-in-suspend thing...not doing it for USB fixes the problem for both cases: APM suspend and ACPI suspend...
> Greetings, > Rafael
rgds -daniel
> > > > diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c > > --- a/drivers/usb/core/hcd-pci.c > > +++ b/drivers/usb/core/hcd-pci.c > > @@ -242,7 +242,9 @@ int usb_hcd_pci_suspend (struct pci_dev > > case HC_STATE_SUSPENDED: > > /* no DMA or IRQs except when HC is active */ > > if (dev->current_state == PCI_D0) { > > +#if 0 > > free_irq (hcd->irq, hcd); > > +#endif > > pci_save_state (dev); > > pci_disable_device (dev); > > } > > @@ -374,6 +376,7 @@ int usb_hcd_pci_resume (struct pci_dev * > > > > hcd->state = HC_STATE_RESUMING; > > hcd->saw_irq = 0; > > +#if 0 > > retval = request_irq (dev->irq, usb_hcd_irq, SA_SHIRQ, > > hcd->irq_descr, hcd); > > if (retval < 0) { > > @@ -382,6 +385,7 @@ int usb_hcd_pci_resume (struct pci_dev * > > usb_hc_died (hcd); > > return retval; > > } > > +#endif > > > > retval = hcd->driver->resume (hcd); > > if (!HC_IS_RUNNING (hcd->state)) { > > > > > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |