Re: 2.6.13-mm2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux