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: 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 [EMAIL PROTECTED] # [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 <[EMAIL PROTECTED]> # Signed-off-by: Len Brown <[EMAIL PROTECTED]> # # drivers/acpi/pci_link.c # 2005/03/02 22:23:50-05:00 [EMAIL PROTECTED] +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 [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/