Re: [PATCH] usb/core/hcd-pci.c: don't free_irq() on suspend

From: Greg KH
Date: Fri Sep 30 2005 - 18:41:49 EST


<top-post on purpose...>

Daniel, are you sure about this patch (the second part specifically)?
It directly conflicts with a set of patches in my current tree in this
area that fix all of the reported suspend/resume issues with usb host
controllers (that patch series written by David Brownell.)

Yeah, I see that we shouldn't have been dropping the irq on suspend and
getting a new one on resume, that's not good and could have caused
problems for people.

But could you at least drop the linux-usb-devel mailing list a note that
you are having issues, and post the proposed patch? Directly sending it
to Linus is a bit rude, it's not like the USB developers aren't
responsive to emails (yeah, I've been a bit slow at times these past few
weeks, but my traveling all over the place for the past month is now
over, and I'm not going anywhere for a long time...)

David, this conflicts with your usb/usb-pm-06.patch in my quilt tree.
I'll try to resolve the merge with my best guess, but you should check
that I got it right...

thanks,

greg k-h


On Fri, Sep 30, 2005 at 02:01:17PM -0700, Linux Kernel Mailing List wrote:
> tree 04e9dcf7801245d9a31fcab36dde7dd3a846c86b
> parent 1294b118cb53fb14515666e2b218ad5ab40318c1
> author Daniel Ritz <daniel.ritz@xxxxxx> Thu, 29 Sep 2005 21:39:32 +0200
> committer Linus Torvalds <torvalds@xxxxxxxxxxx> Fri, 30 Sep 2005 23:23:30 -0700
>
> [PATCH] usb/core/hcd-pci.c: don't free_irq() on suspend
>
> the free_irq() in USB suspend breaks resume on some setups where USB
> (ohci/ehci) shares the interrupt with an other device.
>
> Signed-off-by: Daniel Ritz <daniel.ritz@xxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxx>
>
> drivers/usb/core/hcd-pci.c | 9 ---------
> 1 files changed, 9 deletions(-)
>
> 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,6 @@ 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) {
> - free_irq (hcd->irq, hcd);
> pci_save_state (dev);
> pci_disable_device (dev);
> }
> @@ -374,14 +373,6 @@ int usb_hcd_pci_resume (struct pci_dev *
>
> hcd->state = HC_STATE_RESUMING;
> hcd->saw_irq = 0;
> - retval = request_irq (dev->irq, usb_hcd_irq, SA_SHIRQ,
> - hcd->irq_descr, hcd);
> - if (retval < 0) {
> - dev_err (hcd->self.controller,
> - "can't restore IRQ after resume!\n");
> - usb_hc_died (hcd);
> - return retval;
> - }
>
> retval = hcd->driver->resume (hcd);
> if (!HC_IS_RUNNING (hcd->state)) {
> -
> To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html

--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/