Re: 2.6.12-rc1-mm1: resume regression [update] (was: Re:2.6.12-rc1-mm1: Kernel BUG at pci:389)

From: Rafael J. Wysocki (rjw_at_sisk.pl)
Date: 03/25/05

  • Next message: Rafael J. Wysocki: "Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers"
    To: Li Shaohua <shaohua.li@intel.com>
    Date:	Fri, 25 Mar 2005 12:19:23 +0100
    
    

    Hi,

    On Friday, 25 of March 2005 01:49, you wrote:
    ]--snip--[
    > > > I actually added such calls in uhci, ehci and yenta. It's ok for S3 (and
    > > > definitely required for S3). Unclear if it's ok for S4, so please try
    > > > revert the patch.
    > >
    > > 2.6.11-rc1-mm1 with the patch reverted works fine. :-)
    > So just remove the pci_enable/disable_device call in the driver makes
    > the system work?

    I'm a bit confused. :-) I'm not sure if the patch that I have reverted is related
    to pci_enable/disable_device. It's this one:

    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,
     };

    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/
    

  • Next message: Rafael J. Wysocki: "Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers"

    Relevant Pages

    • Re: modprobe + request_module() deadlock
      ... calls request_moduleonce the depending module went to LIVE state. ... +static int pending_call(struct notifier_block *self, unsigned long state, ... +static struct notifier_block pending_notifier = { ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • [2.6 patch] move some code to net/ipx/af_ipx.c
      ... Below is a patch implementing what I was thinking of. ... +static struct datalink_proto *register_8022_client(unsigned char type, ... +static void unregister_8022_client ... +static int p8023_request(struct datalink_proto *dl, ...
      (Linux-Kernel)
    • [2.6 patch] remove ACPI S4bios support
      ... This patch was sent by Pavel Machek on: ... static struct pm_ops acpi_pm_ops; ... extern void do_suspend_lowlevel; ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: 2.6.6-mm5 oops mounting ext3 or reiserfs with -o barrier
      ... So here's a complete patch, that both fixes the code bug and adds some ... support for fool proof checking proper flush support in the ... static int write_cache ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • [PATCH 2.6.7-rc3] Adds class support to msr.c
      ... | `-- dev ... +static struct class_simple *msr_class; ... +static int msr_class_simple_device_add ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)