Re: [PATCH] PM: fix a lockdep warning in runtime.c

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

 



On Wednesday 02 December 2009, Alan Stern wrote:
> This patch (as1309) fixes a lockdep warning in
> __pm_runtime_set_status().  This is the one place where the runtime PM
> framework acquires a nested power.lock, and the nesting is never more
> than one deep.
> 
> Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

I have a very simila patch queued up already.  The only difference is that it
uses SINGLE_DEPTH_NESTING instead of the new symbol.  My version is appended
below.

> 
> ---
> 
> If anybody is using the runtime PM framework in 2.6.32 then this 
> should be pushed before the final release.

I'll push it to Linus, then, if there still is time.  Would you mind if I used
my version?

Thanks,
Rafael

 
> Index: usb-2.6/drivers/base/power/runtime.c
> ===================================================================
> --- usb-2.6.orig/drivers/base/power/runtime.c
> +++ usb-2.6/drivers/base/power/runtime.c
> @@ -10,6 +10,8 @@
>  #include <linux/pm_runtime.h>
>  #include <linux/jiffies.h>
>  
> +#define	RPM_LOCK_PARENT		1
> +
>  static int __pm_runtime_resume(struct device *dev, bool from_wq);
>  static int __pm_request_idle(struct device *dev);
>  static int __pm_request_resume(struct device *dev);
> @@ -793,7 +795,7 @@ int __pm_runtime_set_status(struct devic
>  	}
>  
>  	if (parent) {
> -		spin_lock(&parent->power.lock);
> +		spin_lock_nested(&parent->power.lock, RPM_LOCK_PARENT);
>  
>  		/*
>  		 * It is invalid to put an active child under a parent that is

---
From: Rafael J. Wysocki <rjw@xxxxxxx>
Subject: PM / Runtime: Fix lockdep warning in __pm_runtime_set_status()

Lockdep complains about taking the parent lock in
__pm_runtime_set_status(), so mark it as nested.

Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx>
---
 drivers/base/power/runtime.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/drivers/base/power/runtime.c
===================================================================
--- linux-2.6.orig/drivers/base/power/runtime.c
+++ linux-2.6/drivers/base/power/runtime.c
@@ -777,7 +777,7 @@ int __pm_runtime_set_status(struct devic
 	}
 
 	if (parent) {
-		spin_lock(&parent->power.lock);
+		spin_lock_nested(&parent->power.lock, SINGLE_DEPTH_NESTING);
 
 		/*
 		 * It is invalid to put an active child under a parent that is
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm

[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux