Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers

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

 



"Rafael J. Wysocki" <[email protected]> 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 [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/

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