Messages in this thread | | | Date | Mon, 2 May 2005 15:54:40 -0700 | From | Andrew Morton <> | Subject | Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers |
| |
"Rafael J. Wysocki" <rjw@sisk.pl> wrote: > > Hi, > > On Friday, 25 of March 2005 09:21, Andrew Morton wrote: > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc1/2.6.12-rc1-mm3/ > > > > - Mainly a bunch of fixes relative to 2.6.12-rc1-mm2. > > First, rmmod works again (thanks ;-)). > > > - Again, we'd like people who have had recent DRM and USB resume problems to > > test and report, please. > > My box is still hanged solid on resume (swsusp) by the drivers: > > ohci_hcd > ehci_hcd > yenta_socket > > possibly others, too. To avoid this, I had to revert the following patch from > the Len's tree:
Rafael, does this problem still exist in latest -mm?
I think it does...
> diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c > --- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00 > +++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00 > @@ -72,10 +72,12 @@ > u8 active; /* Current IRQ */ > u8 edge_level; /* All IRQs */ > u8 active_high_low; /* All IRQs */ > - u8 initialized; > u8 resource_type; > u8 possible_count; > u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE]; > + u8 initialized:1; > + u8 suspend_resume:1; > + u8 reserved:6; > }; > > struct acpi_pci_link { > @@ -530,6 +532,10 @@ > > ACPI_FUNCTION_TRACE("acpi_pci_link_allocate"); > > + if (link->irq.suspend_resume) { > + acpi_pci_link_set(link, link->irq.active); > + link->irq.suspend_resume = 0; > + } > if (link->irq.initialized) > return_VALUE(0); > > @@ -713,38 +719,24 @@ > return_VALUE(result); > } > > - > -static int > -acpi_pci_link_resume ( > - struct acpi_pci_link *link) > -{ > - ACPI_FUNCTION_TRACE("acpi_pci_link_resume"); > - > - if (link->irq.active && link->irq.initialized) > - return_VALUE(acpi_pci_link_set(link, link->irq.active)); > - else > - return_VALUE(0); > -} > - > - > static int > -irqrouter_resume( > - struct sys_device *dev) > +irqrouter_suspend( > + struct sys_device *dev, > + u32 state) > { > struct list_head *node = NULL; > struct acpi_pci_link *link = NULL; > > - ACPI_FUNCTION_TRACE("irqrouter_resume"); > + ACPI_FUNCTION_TRACE("irqrouter_suspend"); > > list_for_each(node, &acpi_link.entries) { > - > link = list_entry(node, struct acpi_pci_link, node); > if (!link) { > ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n")); > continue; > } > - > - acpi_pci_link_resume(link); > + if (link->irq.active && link->irq.initialized) > + link->irq.suspend_resume = 1; > } > return_VALUE(0); > } > @@ -856,7 +848,7 @@ > > static struct sysdev_class irqrouter_sysdev_class = { > set_kset_name("irqrouter"), > - .resume = irqrouter_resume, > + .suspend = irqrouter_suspend, > }; > > > # This is a BitKeeper generated diff -Nru style patch. > # > # ChangeSet > # 2005/03/18 16:30:29-05:00 len.brown@intel.com > # [ACPI] S3 Suspend to RAM: interrupt resume fix > # > # Delete PCI Interrupt Link Device .resume method -- > # it is the device driver's job to request interrupts, > # not the Link's job to remember what the devices want. > # > # This addresses the issue of attempting to run > # the ACPI interpreter too early in resume, when > # interrupts are still disabled. > # > # http://bugzilla.kernel.org/show_bug.cgi?id=3469 > # > # Signed-off-by: David Shaohua Li <shaohua.li@intel.com> > # Signed-off-by: Len Brown <len.brown@intel.com> > # > # drivers/acpi/pci_link.c > # 2005/03/02 22:23:50-05:00 len.brown@intel.com +14 -22 > # Delete PCI Interrupt Link .resume method > # > > Greets, > Rafael > > > -- > - Would you tell me, please, which way I ought to go from here? > - That depends a good deal on where you want to get to. > -- Lewis Carroll "Alice's Adventures in Wonderland" - 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/
| |