All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Renninger <trenn-l3A5Bk7waGM@public.gmane.org>
To: "Pallipadi,
	Venkatesh"
	<venkatesh.pallipadi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "Mathieu Desnoyers"
	<mathieu.desnoyers-scC8bbJcJLCw5LPnMra/2Q@public.gmane.org>,
	"Simon Holm Thøgersen"
	<odie-t5LvXY1cjzpaa/9Udqfwiw@public.gmane.org>,
	"Dave Jones" <davej-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"Pekka Enberg" <penberg-bbCR+/B0CizivPeTLB3BmA@public.gmane.org>,
	"Dave Young"
	<hidave.darkstar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Rafael J. Wysocki" <rjw-KKrjLPT3xs0@public.gmane.org>,
	"Linux Kernel Mailing List"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Kernel Testers List"
	<kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"cpufreq-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<cpufreq-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Rusty Russell" <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>,
	"sven.wegener-sQQoR7IzGU7R7s880joybQ@public.gmane.org"
	<sven.wegener-sQQoR7IzGU7R7s880joybQ@public.gmane.org>
Subject: Re: [Bug #13475] suspend/hibernate lockdep warning
Date: Wed, 17 Jun 2009 17:29:12 +0200	[thread overview]
Message-ID: <200906171729.16272.trenn@suse.de> (raw)
In-Reply-To: <20090617003925.GA3900-UEgXbdCqpo40dzWUSSna/BL4W9x8LtSr@public.gmane.org>

On Wednesday 17 June 2009 02:39:25 Pallipadi, Venkatesh wrote:
> On Thu, Jun 11, 2009 at 08:23:29AM -0700, Mathieu Desnoyers wrote:
> > * Simon Holm Thøgersen (odie@cs.aau.dk) wrote:
> > > man, 08 06 2009 kl. 10:32 -0400, skrev Dave Jones: 
> > > > On Mon, Jun 08, 2009 at 08:48:45AM -0400, Mathieu Desnoyers wrote:
> > > >  
> > > >  > > > >> Bug-Entry       : http://bugzilla.kernel.org/show_bug.cgi?id=13475
> > > >  > > > >> Subject         : suspend/hibernate lockdep warning
> > > >  > > > >> References      : http://marc.info/?l=linux-kernel&m=124393723321241&w=4
> > > >  > > > 
> > > >  > > > I suspect the following commit, after revert this patch I test 5 times
> > > >  > > > without lockdep warnings.
> > > >  > > > 
> > > >  > > > commit b14893a62c73af0eca414cfed505b8c09efc613c
> > > >  > > > Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> > > >  > > > Date:   Sun May 17 10:30:45 2009 -0400
> > > >  > > > 
> > > >  > > > 	[CPUFREQ] fix timer teardown in ondemand governor
> > > >  > > 
> > > >  > > The patch is probably not at fault here. I suspect it's some latent bug
> > > >  > > that simply got exposed by the change to cancel_delayed_work_sync(). In
> > > >  > > any case, Mathieu, can you take a look at this please?
> > > >  > 
> > > >  > Yes, it's been looked at and discussed on the cpufreq ML. The short
> > > >  > answer is that they plan to re-engineer cpufreq and remove the policy
> > > >  > rwlock taken around almost every operations at the cpufreq level.
> > > >  > 
> > > >  > The short-term solution, which is recognised as ugly, would be do to the
> > > >  > following before doing the cancel_delayed_work_sync() :
> > > >  > 
> > > >  > unlock policy rwlock write lock
> > > >  > 
> > > >  > lock policy rwlock write lock
> > > >  > 
> > > >  > It basically works because this rwlock is unneeded for teardown, hence
> > > >  > the future re-work planned.
> > > >  > 
> > > >  > I'm sorry I cannot prepare a patch current... I've got quite a few pages
> > > >  > of Ph.D. thesis due for the beginning of July.
> > > >  
> > > > I'm kinda scared to touch this code at all for .30 due to the number of
> > > > unexpected gotchas we seem to run into every time we touch something
> > > > locking related.  So I'm inclined to just live with the lockdep warning
> > > > for .30, and see how the real fixes look for .31, and push them back
> > > > as -stable updates if they work out.
> > > 
> > > Unfortunately I don't think it is just theoretical, I've actually hit
> > > the following (that haven't got anything to do with suspend/hibernate)
> > > 
> > > INFO: task cpufreqd:4676 blocked for more than 120 seconds.
> > >  "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> > >  cpufreqd      D eee2ac60     0  4676      1
> > >   ee01bd68 00000086 eee2aad0 eee2ac60 00000533 eee2aad0 eee2ac60 0002b16f
> > >   00000000 eee2ac60 7fffffff 7fffffff eee2ac60 7fffffff 7fffffff 00000000
> > >   ee01bd70 c03117ee ee01bdbc c0311c0c eee2aad0 eecf6900 eee2aad0 eecf6900
> > >  Call Trace:
> > >   [<c03117ee>] schedule+0x12/0x24
> > >   [<c0311c0c>] schedule_timeout+0x17/0x170
> > >   [<c011a4f7>] ? __wake_up+0x2b/0x51
> > >   [<c0311afd>] wait_for_common+0xc4/0x135
> > >   [<c011a694>] ? default_wake_function+0x0/0xd
> > >   [<c0311be0>] wait_for_completion+0x12/0x14
> > >   [<c012bc6a>] __cancel_work_timer+0xfe/0x129
> > >   [<c012b635>] ? wq_barrier_func+0x0/0xd
> > >   [<c012bca0>] cancel_delayed_work_sync+0xb/0xd
> > >   [<f20948f9>] cpufreq_governor_dbs+0x22e/0x291 [cpufreq_ondemand]
> > >   [<c02af857>] __cpufreq_governor+0x65/0x9d
> > >   [<c02af960>] __cpufreq_set_policy+0xd1/0x11f
> > >   [<c02b02ae>] store_scaling_governor+0x18a/0x1b2
> > >   [<c02b09a5>] ? handle_update+0x0/0xd
> > >   [<c02b0124>] ? store_scaling_governor+0x0/0x1b2
> > >   [<c02b08c9>] store+0x48/0x61
> > >   [<c01acbf4>] sysfs_write_file+0xb4/0xdf
> > >   [<c01acb40>] ? sysfs_write_file+0x0/0xdf
> > >   [<c0175535>] vfs_write+0x8a/0x104
> > >   [<c0175648>] sys_write+0x3b/0x60
> > >   [<c0103110>] sysenter_do_call+0x12/0x2c
> > >  INFO: task kondemand/0:4956 blocked for more than 120 seconds.
> > >  "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> > >  kondemand/0   D 00000533     0  4956      2
> > >   ee1d9efc 00000046 c011815f 00000533 071148de ee1e0080 ee1e0210 00000000
> > >   c03ff478 9189e633 00000082 c03ff478 ee1e0210 c04159f4 c04159f0 00000000
> > >   ee1d9f04 c03117ee ee1d9f28 c0313104 ee1d9f30 c04159f4 ee1e0080 c01183be
> > >  Call Trace:
> > >   [<c011815f>] ? update_curr+0x6c/0x14b
> > >   [<c03117ee>] schedule+0x12/0x24
> > >   [<c0313104>] rwsem_down_failed_common+0x150/0x16e
> > >   [<c01183be>] ? dequeue_task_fair+0x51/0x56
> > >   [<c031313d>] rwsem_down_write_failed+0x1b/0x23
> > >   [<c031317e>] call_rwsem_down_write_failed+0x6/0x8
> > >   [<c03125dd>] ? down_write+0x14/0x16
> > >   [<c02b0460>] lock_policy_rwsem_write+0x1d/0x33
> > >   [<f20944aa>] do_dbs_timer+0x45/0x266 [cpufreq_ondemand]
> > >   [<c012b8f7>] worker_thread+0x165/0x212
> > >   [<f2094465>] ? do_dbs_timer+0x0/0x266 [cpufreq_ondemand]
> > >   [<c012e639>] ? autoremove_wake_function+0x0/0x33
> > >   [<c012b792>] ? worker_thread+0x0/0x212
> > >   [<c012e278>] kthread+0x42/0x67
> > >   [<c012e236>] ? kthread+0x0/0x67
> > >   [<c01038eb>] kernel_thread_helper+0x7/0x10
> > > 
> > > I've only seen it once in 5 boots and CONFIG_PROVELOCKING does not give any
> > > warnings about this, though it does yell when switching governor as reported
> > > by others in bug #13493.
> > > 
> > > Let's hope Mathieu nails it, though I know he's busy with his thesis.
> > > 
> > 
> > Thanks for the lockdep reports,
> > 
> > I'm currently looking into it, and it's not pretty. Basically we have :
> > 
> > A
> >   B
> > (means B nested in A)
> > 
> > work
> >   read rwlock policy
> > 
> > dbs_mutex
> >   work
> >     read rwlock policy
> > 
> > write rwlock policy
> >   dbs_mutex
> > 
> > So the added dbs_mutex <- work <- rwlock policy dependency (for proper
> > teardown) is firing the reverse dependency between policy rwlock and
> > dbs_mutex.
> > 
> > The real way to fix this is to do not take the rwlock policy around
> > non-policy-related actions, like governor START/STOP doing worker
> > creation/teardown.
> > 
> > One simple short-term solution would be to take a mutex outside of the
> > policy rwlock write lock in cpufreq.c. This mutex would be the
> > equivalent of dbs_mutex "lifted" outside of the rwlock write lock. For
> > teardown, we only need to hold this mutex, not the rwlock write lock.
> > Then we can remove the dbs_mutex from the governors.
> > 
> > But looking at cpufreq.c's cpufreq_add_dev() is very much like kicking a
> > wasp nest: a lot of error paths are not handled properly, and I fear
> > someone will have to go through the code, fix the currently incorrect
> > code paths, and then add the lifted mutex.
> > 
> > I currently have no time for implementation due to my thesis, but I'll
> > be happy to review a patch.
> > 
> 
> How about below patch on top of Mathieu's patch here
> http://marc.info/?l=linux-kernel&m=124448150529838&w=2
> 
> [PATCH] cpufreq: Eliminate lockdep issue with dbs_mutex and policy_rwsem
> 
> This removes the unneeded dependency of 
> write rwlock policy
>   dbs_mutex
> 
> dbs_mutex does not have anything to do with timer_init and timer_exit. It
> is just to protect dbs tunables in sysfs cpufreq/ondemand
Why is sysfs tunables protection needed at all?

The ondemand locking very much looks like taken over from the userspace
governor. There you need the lock because a write to set_speed directly
calls ->target.

What is urgently missing is a description for what the locks are
really used, not only in which case they deadlock.

From your comment above:
> dbs_mutex does not have anything to do with timer_init and timer_exit.
But this is what it seems to do?
If it's not needed to protect calling timer_init while in timer_exit
(or the other way around) and sysfs_create_group while
in sysfs_remove_group I think the mutex can be deleted.
What do you think about this patch (compile tested only and not
for .30)?

Is someone aware of any test scenarios I could run to try without
the mutex and run into trouble?
Do I totally miss something here or does this make sense?

Thanks,

      Thomas

-----

CPUFREQ ondemand: Remove unneeded dbs_mutex

There is no need to protect general (not per core) ondemand sysfs variables
against per core governor (de-)activation (GOV_START/GOV_STOP).

It must just be assured that these are only initialized once, before userspace
can modify them (otherwise userspace modifications will be overriden by
re-initializing the general variables).
This should already be the case.

Signed-off-by: Thomas Renninger <trenn@suse.de>

---
 drivers/cpufreq/cpufreq_ondemand.c |   64 +++++++------------------------------
 1 file changed, 13 insertions(+), 51 deletions(-)

Index: linux-2.6.29-master/drivers/cpufreq/cpufreq_ondemand.c
===================================================================
--- linux-2.6.29-master.orig/drivers/cpufreq/cpufreq_ondemand.c
+++ linux-2.6.29-master/drivers/cpufreq/cpufreq_ondemand.c
@@ -17,7 +17,6 @@
 #include <linux/cpu.h>
 #include <linux/jiffies.h>
 #include <linux/kernel_stat.h>
-#include <linux/mutex.h>
 #include <linux/hrtimer.h>
 #include <linux/tick.h>
 #include <linux/ktime.h>
@@ -91,16 +90,6 @@ static DEFINE_PER_CPU(struct cpu_dbs_inf
 
 static unsigned int dbs_enable;	/* number of CPUs using this policy */
 
-/*
- * DEADLOCK ALERT! There is a ordering requirement between cpu_hotplug
- * lock and dbs_mutex. cpu_hotplug lock should always be held before
- * dbs_mutex. If any function that can potentially take cpu_hotplug lock
- * (like __cpufreq_driver_target()) is being called with dbs_mutex taken, then
- * cpu_hotplug lock should be taken before that. Note that cpu_hotplug lock
- * is recursive for the same process. -Venki
- */
-static DEFINE_MUTEX(dbs_mutex);
-
 static struct workqueue_struct	*kondemand_wq;
 
 static struct dbs_tuners {
@@ -266,14 +255,7 @@ static ssize_t store_sampling_rate(struc
 	int ret;
 	ret = sscanf(buf, "%u", &input);
 
-	mutex_lock(&dbs_mutex);
-	if (ret != 1) {
-		mutex_unlock(&dbs_mutex);
-		return -EINVAL;
-	}
 	dbs_tuners_ins.sampling_rate = max(input, minimum_sampling_rate());
-	mutex_unlock(&dbs_mutex);
-
 	return count;
 }
 
@@ -284,16 +266,12 @@ static ssize_t store_up_threshold(struct
 	int ret;
 	ret = sscanf(buf, "%u", &input);
 
-	mutex_lock(&dbs_mutex);
 	if (ret != 1 || input > MAX_FREQUENCY_UP_THRESHOLD ||
 			input < MIN_FREQUENCY_UP_THRESHOLD) {
-		mutex_unlock(&dbs_mutex);
 		return -EINVAL;
 	}
 
 	dbs_tuners_ins.up_threshold = input;
-	mutex_unlock(&dbs_mutex);
-
 	return count;
 }
 
@@ -312,9 +290,7 @@ static ssize_t store_ignore_nice_load(st
 	if (input > 1)
 		input = 1;
 
-	mutex_lock(&dbs_mutex);
 	if (input == dbs_tuners_ins.ignore_nice) { /* nothing to do */
-		mutex_unlock(&dbs_mutex);
 		return count;
 	}
 	dbs_tuners_ins.ignore_nice = input;
@@ -329,8 +305,6 @@ static ssize_t store_ignore_nice_load(st
 			dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;
 
 	}
-	mutex_unlock(&dbs_mutex);
-
 	return count;
 }
 
@@ -347,11 +321,8 @@ static ssize_t store_powersave_bias(stru
 	if (input > 1000)
 		input = 1000;
 
-	mutex_lock(&dbs_mutex);
 	dbs_tuners_ins.powersave_bias = input;
 	ondemand_powersave_bias_init();
-	mutex_unlock(&dbs_mutex);
-
 	return count;
 }
 
@@ -580,16 +551,6 @@ static int cpufreq_governor_dbs(struct c
 		if (this_dbs_info->enable) /* Already enabled */
 			break;
 
-		mutex_lock(&dbs_mutex);
-		dbs_enable++;
-
-		rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);
-		if (rc) {
-			dbs_enable--;
-			mutex_unlock(&dbs_mutex);
-			return rc;
-		}
-
 		for_each_cpu(j, policy->cpus) {
 			struct cpu_dbs_info_s *j_dbs_info;
 			j_dbs_info = &per_cpu(cpu_dbs_info, j);
@@ -604,10 +565,10 @@ static int cpufreq_governor_dbs(struct c
 		}
 		this_dbs_info->cpu = cpu;
 		/*
-		 * Start the timerschedule work, when this governor
-		 * is used for first time
+		 * Initialize general ondemand tunables only ones, not for
+		 * each core
 		 */
-		if (dbs_enable == 1) {
+		if (!dbs_enable) {
 			unsigned int latency;
 			/* policy latency is in nS. Convert it to uS first */
 			latency = policy->cpuinfo.transition_latency / 1000;
@@ -619,30 +580,31 @@ static int cpufreq_governor_dbs(struct c
 				    MIN_STAT_SAMPLING_RATE);
 
 			dbs_tuners_ins.sampling_rate = def_sampling_rate;
+		}			
+		rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);
+		if (rc) {
+			this_dbs_info->enable = 0;
+			return rc;
 		}
 		dbs_timer_init(this_dbs_info);
-
-		mutex_unlock(&dbs_mutex);
+		dbs_enable++;
 		break;
 
 	case CPUFREQ_GOV_STOP:
-		mutex_lock(&dbs_mutex);
-		dbs_timer_exit(this_dbs_info);
-		sysfs_remove_group(&policy->kobj, &dbs_attr_group);
+		if (this_dbs_info->enable) {
+			dbs_timer_exit(this_dbs_info);
+			sysfs_remove_group(&policy->kobj, &dbs_attr_group);
+		}
 		dbs_enable--;
-		mutex_unlock(&dbs_mutex);
-
 		break;
 
 	case CPUFREQ_GOV_LIMITS:
-		mutex_lock(&dbs_mutex);
 		if (policy->max < this_dbs_info->cur_policy->cur)
 			__cpufreq_driver_target(this_dbs_info->cur_policy,
 				policy->max, CPUFREQ_RELATION_H);
 		else if (policy->min > this_dbs_info->cur_policy->cur)
 			__cpufreq_driver_target(this_dbs_info->cur_policy,
 				policy->min, CPUFREQ_RELATION_L);
-		mutex_unlock(&dbs_mutex);
 		break;
 	}
 	return 0;
\0

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Renninger <trenn@suse.de>
To: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
Cc: "Mathieu Desnoyers" <mathieu.desnoyers@polymtl.ca>,
	"Simon Holm Thøgersen" <odie@cs.aau.dk>,
	"Dave Jones" <davej@redhat.com>,
	"Pekka Enberg" <penberg@cs.helsinki.fi>,
	"Dave Young" <hidave.darkstar@gmail.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Kernel Testers List" <kernel-testers@vger.kernel.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"Rusty Russell" <rusty@rustcorp.com.au>,
	"sven.wegener@stealer.net" <sven.wegener@stealer.net>
Subject: Re: [Bug #13475] suspend/hibernate lockdep warning
Date: Wed, 17 Jun 2009 17:29:12 +0200	[thread overview]
Message-ID: <200906171729.16272.trenn@suse.de> (raw)
In-Reply-To: <20090617003925.GA3900@linux-os.sc.intel.com>

On Wednesday 17 June 2009 02:39:25 Pallipadi, Venkatesh wrote:> On Thu, Jun 11, 2009 at 08:23:29AM -0700, Mathieu Desnoyers wrote:> > * Simon Holm Thøgersen (odie@cs.aau.dk) wrote:> > > man, 08 06 2009 kl. 10:32 -0400, skrev Dave Jones: > > > > On Mon, Jun 08, 2009 at 08:48:45AM -0400, Mathieu Desnoyers wrote:> > > >  > > > >  > > > >> Bug-Entry       : http://bugzilla.kernel.org/show_bug.cgi?id=13475> > > >  > > > >> Subject         : suspend/hibernate lockdep warning> > > >  > > > >> References      : http://marc.info/?l=linux-kernel&m=124393723321241&w=4> > > >  > > > > > > >  > > > I suspect the following commit, after revert this patch I test 5 times> > > >  > > > without lockdep warnings.> > > >  > > > > > > >  > > > commit b14893a62c73af0eca414cfed505b8c09efc613c> > > >  > > > Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>> > > >  > > > Date:   Sun May 17 10:30:45 2009 -0400> > > >  > > > > > > >  > > > 	[CPUFREQ] fix timer teardown in ondemand governor> > > >  > > > > > >  > > The patch is probably not at fault here. I suspect it's some latent bug> > > >  > > that simply got exposed by the change to cancel_delayed_work_sync(). In> > > >  > > any case, Mathieu, can you take a look at this please?> > > >  > > > > >  > Yes, it's been looked at and discussed on the cpufreq ML. The short> > > >  > answer is that they plan to re-engineer cpufreq and remove the policy> > > >  > rwlock taken around almost every operations at the cpufreq level.> > > >  > > > > >  > The short-term solution, which is recognised as ugly, would be do to the> > > >  > following before doing the cancel_delayed_work_sync() :> > > >  > > > > >  > unlock policy rwlock write lock> > > >  > > > > >  > lock policy rwlock write lock> > > >  > > > > >  > It basically works because this rwlock is unneeded for teardown, hence> > > >  > the future re-work planned.> > > >  > > > > >  > I'm sorry I cannot prepare a patch current... I've got quite a few pages> > > >  > of Ph.D. thesis due for the beginning of July.> > > >  > > > > I'm kinda scared to touch this code at all for .30 due to the number of> > > > unexpected gotchas we seem to run into every time we touch something> > > > locking related.  So I'm inclined to just live with the lockdep warning> > > > for .30, and see how the real fixes look for .31, and push them back> > > > as -stable updates if they work out.> > > > > > Unfortunately I don't think it is just theoretical, I've actually hit> > > the following (that haven't got anything to do with suspend/hibernate)> > > > > > INFO: task cpufreqd:4676 blocked for more than 120 seconds.> > >  "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.> > >  cpufreqd      D eee2ac60     0  4676      1> > >   ee01bd68 00000086 eee2aad0 eee2ac60 00000533 eee2aad0 eee2ac60 0002b16f> > >   00000000 eee2ac60 7fffffff 7fffffff eee2ac60 7fffffff 7fffffff 00000000> > >   ee01bd70 c03117ee ee01bdbc c0311c0c eee2aad0 eecf6900 eee2aad0 eecf6900> > >  Call Trace:> > >   [<c03117ee>] schedule+0x12/0x24> > >   [<c0311c0c>] schedule_timeout+0x17/0x170> > >   [<c011a4f7>] ? __wake_up+0x2b/0x51> > >   [<c0311afd>] wait_for_common+0xc4/0x135> > >   [<c011a694>] ? default_wake_function+0x0/0xd> > >   [<c0311be0>] wait_for_completion+0x12/0x14> > >   [<c012bc6a>] __cancel_work_timer+0xfe/0x129> > >   [<c012b635>] ? wq_barrier_func+0x0/0xd> > >   [<c012bca0>] cancel_delayed_work_sync+0xb/0xd> > >   [<f20948f9>] cpufreq_governor_dbs+0x22e/0x291 [cpufreq_ondemand]> > >   [<c02af857>] __cpufreq_governor+0x65/0x9d> > >   [<c02af960>] __cpufreq_set_policy+0xd1/0x11f> > >   [<c02b02ae>] store_scaling_governor+0x18a/0x1b2> > >   [<c02b09a5>] ? handle_update+0x0/0xd> > >   [<c02b0124>] ? store_scaling_governor+0x0/0x1b2> > >   [<c02b08c9>] store+0x48/0x61> > >   [<c01acbf4>] sysfs_write_file+0xb4/0xdf> > >   [<c01acb40>] ? sysfs_write_file+0x0/0xdf> > >   [<c0175535>] vfs_write+0x8a/0x104> > >   [<c0175648>] sys_write+0x3b/0x60> > >   [<c0103110>] sysenter_do_call+0x12/0x2c> > >  INFO: task kondemand/0:4956 blocked for more than 120 seconds.> > >  "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.> > >  kondemand/0   D 00000533     0  4956      2> > >   ee1d9efc 00000046 c011815f 00000533 071148de ee1e0080 ee1e0210 00000000> > >   c03ff478 9189e633 00000082 c03ff478 ee1e0210 c04159f4 c04159f0 00000000> > >   ee1d9f04 c03117ee ee1d9f28 c0313104 ee1d9f30 c04159f4 ee1e0080 c01183be> > >  Call Trace:> > >   [<c011815f>] ? update_curr+0x6c/0x14b> > >   [<c03117ee>] schedule+0x12/0x24> > >   [<c0313104>] rwsem_down_failed_common+0x150/0x16e> > >   [<c01183be>] ? dequeue_task_fair+0x51/0x56> > >   [<c031313d>] rwsem_down_write_failed+0x1b/0x23> > >   [<c031317e>] call_rwsem_down_write_failed+0x6/0x8> > >   [<c03125dd>] ? down_write+0x14/0x16> > >   [<c02b0460>] lock_policy_rwsem_write+0x1d/0x33> > >   [<f20944aa>] do_dbs_timer+0x45/0x266 [cpufreq_ondemand]> > >   [<c012b8f7>] worker_thread+0x165/0x212> > >   [<f2094465>] ? do_dbs_timer+0x0/0x266 [cpufreq_ondemand]> > >   [<c012e639>] ? autoremove_wake_function+0x0/0x33> > >   [<c012b792>] ? worker_thread+0x0/0x212> > >   [<c012e278>] kthread+0x42/0x67> > >   [<c012e236>] ? kthread+0x0/0x67> > >   [<c01038eb>] kernel_thread_helper+0x7/0x10> > > > > > I've only seen it once in 5 boots and CONFIG_PROVELOCKING does not give any> > > warnings about this, though it does yell when switching governor as reported> > > by others in bug #13493.> > > > > > Let's hope Mathieu nails it, though I know he's busy with his thesis.> > > > > > > Thanks for the lockdep reports,> > > > I'm currently looking into it, and it's not pretty. Basically we have :> > > > A> >   B> > (means B nested in A)> > > > work> >   read rwlock policy> > > > dbs_mutex> >   work> >     read rwlock policy> > > > write rwlock policy> >   dbs_mutex> > > > So the added dbs_mutex <- work <- rwlock policy dependency (for proper> > teardown) is firing the reverse dependency between policy rwlock and> > dbs_mutex.> > > > The real way to fix this is to do not take the rwlock policy around> > non-policy-related actions, like governor START/STOP doing worker> > creation/teardown.> > > > One simple short-term solution would be to take a mutex outside of the> > policy rwlock write lock in cpufreq.c. This mutex would be the> > equivalent of dbs_mutex "lifted" outside of the rwlock write lock. For> > teardown, we only need to hold this mutex, not the rwlock write lock.> > Then we can remove the dbs_mutex from the governors.> > > > But looking at cpufreq.c's cpufreq_add_dev() is very much like kicking a> > wasp nest: a lot of error paths are not handled properly, and I fear> > someone will have to go through the code, fix the currently incorrect> > code paths, and then add the lifted mutex.> > > > I currently have no time for implementation due to my thesis, but I'll> > be happy to review a patch.> > > > How about below patch on top of Mathieu's patch here> http://marc.info/?l=linux-kernel&m=124448150529838&w=2> > [PATCH] cpufreq: Eliminate lockdep issue with dbs_mutex and policy_rwsem> > This removes the unneeded dependency of > write rwlock policy>   dbs_mutex> > dbs_mutex does not have anything to do with timer_init and timer_exit. It> is just to protect dbs tunables in sysfs cpufreq/ondemandWhy is sysfs tunables protection needed at all?
The ondemand locking very much looks like taken over from the userspacegovernor. There you need the lock because a write to set_speed directlycalls ->target.
What is urgently missing is a description for what the locks arereally used, not only in which case they deadlock.
>From your comment above:> dbs_mutex does not have anything to do with timer_init and timer_exit.But this is what it seems to do?If it's not needed to protect calling timer_init while in timer_exit(or the other way around) and sysfs_create_group whilein sysfs_remove_group I think the mutex can be deleted.What do you think about this patch (compile tested only and notfor .30)?
Is someone aware of any test scenarios I could run to try withoutthe mutex and run into trouble?Do I totally miss something here or does this make sense?
Thanks,
      Thomas
-----
CPUFREQ ondemand: Remove unneeded dbs_mutex
There is no need to protect general (not per core) ondemand sysfs variablesagainst per core governor (de-)activation (GOV_START/GOV_STOP).
It must just be assured that these are only initialized once, before userspacecan modify them (otherwise userspace modifications will be overriden byre-initializing the general variables).This should already be the case.
Signed-off-by: Thomas Renninger <trenn@suse.de>
--- drivers/cpufreq/cpufreq_ondemand.c |   64 +++++++------------------------------ 1 file changed, 13 insertions(+), 51 deletions(-)
Index: linux-2.6.29-master/drivers/cpufreq/cpufreq_ondemand.c===================================================================--- linux-2.6.29-master.orig/drivers/cpufreq/cpufreq_ondemand.c+++ linux-2.6.29-master/drivers/cpufreq/cpufreq_ondemand.c@@ -17,7 +17,6 @@ #include <linux/cpu.h> #include <linux/jiffies.h> #include <linux/kernel_stat.h>-#include <linux/mutex.h> #include <linux/hrtimer.h> #include <linux/tick.h> #include <linux/ktime.h>@@ -91,16 +90,6 @@ static DEFINE_PER_CPU(struct cpu_dbs_inf  static unsigned int dbs_enable;	/* number of CPUs using this policy */ -/*- * DEADLOCK ALERT! There is a ordering requirement between cpu_hotplug- * lock and dbs_mutex. cpu_hotplug lock should always be held before- * dbs_mutex. If any function that can potentially take cpu_hotplug lock- * (like __cpufreq_driver_target()) is being called with dbs_mutex taken, then- * cpu_hotplug lock should be taken before that. Note that cpu_hotplug lock- * is recursive for the same process. -Venki- */-static DEFINE_MUTEX(dbs_mutex);- static struct workqueue_struct	*kondemand_wq;  static struct dbs_tuners {@@ -266,14 +255,7 @@ static ssize_t store_sampling_rate(struc 	int ret; 	ret = sscanf(buf, "%u", &input); -	mutex_lock(&dbs_mutex);-	if (ret != 1) {-		mutex_unlock(&dbs_mutex);-		return -EINVAL;-	} 	dbs_tuners_ins.sampling_rate = max(input, minimum_sampling_rate());-	mutex_unlock(&dbs_mutex);- 	return count; } @@ -284,16 +266,12 @@ static ssize_t store_up_threshold(struct 	int ret; 	ret = sscanf(buf, "%u", &input); -	mutex_lock(&dbs_mutex); 	if (ret != 1 || input > MAX_FREQUENCY_UP_THRESHOLD || 			input < MIN_FREQUENCY_UP_THRESHOLD) {-		mutex_unlock(&dbs_mutex); 		return -EINVAL; 	}  	dbs_tuners_ins.up_threshold = input;-	mutex_unlock(&dbs_mutex);- 	return count; } @@ -312,9 +290,7 @@ static ssize_t store_ignore_nice_load(st 	if (input > 1) 		input = 1; -	mutex_lock(&dbs_mutex); 	if (input == dbs_tuners_ins.ignore_nice) { /* nothing to do */-		mutex_unlock(&dbs_mutex); 		return count; 	} 	dbs_tuners_ins.ignore_nice = input;@@ -329,8 +305,6 @@ static ssize_t store_ignore_nice_load(st 			dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;  	}-	mutex_unlock(&dbs_mutex);- 	return count; } @@ -347,11 +321,8 @@ static ssize_t store_powersave_bias(stru 	if (input > 1000) 		input = 1000; -	mutex_lock(&dbs_mutex); 	dbs_tuners_ins.powersave_bias = input; 	ondemand_powersave_bias_init();-	mutex_unlock(&dbs_mutex);- 	return count; } @@ -580,16 +551,6 @@ static int cpufreq_governor_dbs(struct c 		if (this_dbs_info->enable) /* Already enabled */ 			break; -		mutex_lock(&dbs_mutex);-		dbs_enable++;--		rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);-		if (rc) {-			dbs_enable--;-			mutex_unlock(&dbs_mutex);-			return rc;-		}- 		for_each_cpu(j, policy->cpus) { 			struct cpu_dbs_info_s *j_dbs_info; 			j_dbs_info = &per_cpu(cpu_dbs_info, j);@@ -604,10 +565,10 @@ static int cpufreq_governor_dbs(struct c 		} 		this_dbs_info->cpu = cpu; 		/*-		 * Start the timerschedule work, when this governor-		 * is used for first time+		 * Initialize general ondemand tunables only ones, not for+		 * each core 		 */-		if (dbs_enable == 1) {+		if (!dbs_enable) { 			unsigned int latency; 			/* policy latency is in nS. Convert it to uS first */ 			latency = policy->cpuinfo.transition_latency / 1000;@@ -619,30 +580,31 @@ static int cpufreq_governor_dbs(struct c 				    MIN_STAT_SAMPLING_RATE);  			dbs_tuners_ins.sampling_rate = def_sampling_rate;+		}			+		rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);+		if (rc) {+			this_dbs_info->enable = 0;+			return rc; 		} 		dbs_timer_init(this_dbs_info);--		mutex_unlock(&dbs_mutex);+		dbs_enable++; 		break;  	case CPUFREQ_GOV_STOP:-		mutex_lock(&dbs_mutex);-		dbs_timer_exit(this_dbs_info);-		sysfs_remove_group(&policy->kobj, &dbs_attr_group);+		if (this_dbs_info->enable) {+			dbs_timer_exit(this_dbs_info);+			sysfs_remove_group(&policy->kobj, &dbs_attr_group);+		} 		dbs_enable--;-		mutex_unlock(&dbs_mutex);- 		break;  	case CPUFREQ_GOV_LIMITS:-		mutex_lock(&dbs_mutex); 		if (policy->max < this_dbs_info->cur_policy->cur) 			__cpufreq_driver_target(this_dbs_info->cur_policy, 				policy->max, CPUFREQ_RELATION_H); 		else if (policy->min > this_dbs_info->cur_policy->cur) 			__cpufreq_driver_target(this_dbs_info->cur_policy, 				policy->min, CPUFREQ_RELATION_L);-		mutex_unlock(&dbs_mutex); 		break; 	} 	return 0;\0ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

  parent reply	other threads:[~2009-06-17 15:29 UTC|newest]

Thread overview: 242+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-07  9:47 2.6.30-rc8-git4: Reported regressions from 2.6.29 Rafael J. Wysocki
2009-06-07  9:47 ` Rafael J. Wysocki
2009-06-07  9:47 ` [Bug #13109] High latency on /sys/class/thermal Rafael J. Wysocki
2009-06-07  9:47   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13180] 2.6.30-rc2: WARNING at i915_gem.c for i915_gem_idle Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13119] Trouble with make-install from a NFS mount Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13179] CD-R: wodim intermittent failures Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13219] Since kernel 2.6.30-rc1, computers hangs randomly Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13277] 2.6.30 regression - unreliable resume - bisected - Thinkpad X40 Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13116] Can't boot with nosmp Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-08 16:15   ` Stephen Hemminger
2009-06-08 16:29     ` Dan Williams
     [not found]       ` <e9c3a7c20906080929l1a4ec739t7585f6bba54bf684-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-09  0:04         ` Stephen Hemminger
2009-06-09  0:04           ` Stephen Hemminger
2009-06-09 17:20           ` Dan Williams
     [not found]             ` <e9c3a7c20906091020m19abf3b5wbbb7f5364b2d4905-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-09 18:30               ` Avi Kivity
2009-06-09 18:30                 ` Avi Kivity
     [not found]                 ` <4A2EAA53.7060006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-06-09 18:36                   ` Stephen Hemminger
2009-06-09 18:36                     ` Stephen Hemminger
2009-06-09 18:42                     ` Avi Kivity
2009-06-09 18:42                       ` Avi Kivity
     [not found]                       ` <4A2EAD2F.5010505-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-06-09 20:58                         ` Stephen Hemminger
2009-06-09 20:58                           ` Stephen Hemminger
2009-06-09 23:19                           ` Rafael J. Wysocki
2009-06-09 23:19                             ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13318] AGP doesn't work anymore on nforce2 Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13313] vm86old oops Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-11 13:02   ` Sergey Senozhatsky
2009-06-11 13:02     ` Sergey Senozhatsky
2009-06-07  9:52 ` [Bug #13306] hibernate slow on _second_ run Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-08  6:36   ` Johannes Berg
2009-06-08  6:36     ` Johannes Berg
     [not found]     ` <1244442961.11457.0.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
2009-06-08 11:14       ` Rafael J. Wysocki
2009-06-08 11:14         ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13319] Page allocation failures with b43 and p54usb Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 13:10   ` Larry Finger
2009-06-07 13:10     ` Larry Finger
     [not found]     ` <4A2BBC30.2030300-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2009-06-07 13:40       ` Pekka Enberg
2009-06-07 13:40         ` Pekka Enberg
     [not found]         ` <84144f020906070640rf5ab14nbf66d3ca7c97675f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-07 14:19           ` Rik van Riel
2009-06-07 14:19             ` Rik van Riel
     [not found]             ` <4A2BCC6F.8090004-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-06-07 14:32               ` Pekka Enberg
2009-06-07 14:32                 ` Pekka Enberg
     [not found]                 ` <84144f020906070732l31786156r5d9753a0cabfde79-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-07 16:35                   ` Larry Finger
2009-06-07 16:35                     ` Larry Finger
     [not found]                     ` <4A2BEC4F.6020908-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2009-06-08  8:32                       ` KAMEZAWA Hiroyuki
2009-06-08  8:32                         ` KAMEZAWA Hiroyuki
     [not found]                         ` <20090608173219.0588af26.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-06-08 17:20                           ` Larry Finger
2009-06-08 17:20                             ` Larry Finger
2009-06-08 10:17                   ` Mel Gorman
2009-06-08 10:17                     ` Mel Gorman
     [not found]                     ` <20090608101739.GA15377-wPRd99KPJ+uzQB+pC5nmwQ@public.gmane.org>
2009-06-08 10:52                       ` Pekka Enberg
2009-06-08 10:52                         ` Pekka Enberg
     [not found]                         ` <84144f020906080352k57f12ff9pbd696da5f332ac1a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-08 11:03                           ` Mel Gorman
2009-06-08 11:03                             ` Mel Gorman
     [not found]                             ` <20090608110303.GD15377-wPRd99KPJ+uzQB+pC5nmwQ@public.gmane.org>
2009-06-08 13:58                               ` Pekka J Enberg
2009-06-08 13:58                                 ` Pekka J Enberg
     [not found]                                 ` <Pine.LNX.4.64.0906081657001.7036-nkv1RstziBCWKadcF5yKzn5wuOn9r4cE@public.gmane.org>
2009-06-08 14:12                                   ` Mel Gorman
2009-06-08 14:12                                     ` Mel Gorman
     [not found]                                     ` <20090608141212.GE15070-wPRd99KPJ+uzQB+pC5nmwQ@public.gmane.org>
2009-06-08 14:42                                       ` Christoph Lameter
2009-06-08 14:42                                         ` Christoph Lameter
2009-06-09  7:06                                       ` Pekka Enberg
2009-06-09  7:06                                         ` Pekka Enberg
2009-06-09  7:54                                         ` David Rientjes
2009-06-09  7:54                                           ` David Rientjes
2009-06-09  7:58                                           ` Pekka Enberg
2009-06-09  8:14                                             ` David Rientjes
2009-06-09  8:14                                               ` David Rientjes
     [not found]                                               ` <alpine.DEB.2.00.0906090105270.28701-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2009-06-09  8:28                                                 ` Pekka Enberg
2009-06-09  8:28                                                   ` Pekka Enberg
2009-06-10 14:41                                                   ` Larry Finger
2009-06-10 15:44                                                     ` Pekka Enberg
2009-06-10 15:49                                                       ` Pekka Enberg
2009-06-10 15:49                                                         ` Pekka Enberg
2009-06-10 15:52                                                         ` Johannes Berg
2009-06-10 15:52                                                           ` Johannes Berg
     [not found]                                                           ` <1244649174.6165.0.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
2009-06-10 16:06                                                             ` Pekka Enberg
2009-06-10 16:06                                                               ` Pekka Enberg
2009-06-10 16:16                                                             ` Pekka Enberg
2009-06-10 16:16                                                               ` Pekka Enberg
2009-06-10 16:10                                                         ` Larry Finger
2009-06-10 16:10                                                           ` Larry Finger
2009-06-11 14:41                                                       ` Christoph Lameter
2009-06-11 14:41                                                         ` Christoph Lameter
     [not found]                                                         ` <alpine.DEB.1.10.0906111040440.29827-gkYfJU5Cukgdnm+yROfE0A@public.gmane.org>
2009-06-11 15:09                                                           ` Pekka Enberg
2009-06-11 15:09                                                             ` Pekka Enberg
2009-06-11 18:41                                                             ` Johannes Berg
2009-06-11 18:41                                                               ` Johannes Berg
2009-06-10 15:56                                         ` Mel Gorman
2009-06-10 15:56                                           ` Mel Gorman
     [not found]                                           ` <20090610155626.GA7951-wPRd99KPJ+uzQB+pC5nmwQ@public.gmane.org>
2009-06-10 18:03                                             ` Pekka Enberg
2009-06-10 18:03                                               ` Pekka Enberg
2009-06-09  7:50                                       ` Pekka Enberg
2009-06-09  7:50                                         ` Pekka Enberg
2009-06-08 13:20                       ` Rik van Riel
2009-06-08 13:20                         ` Rik van Riel
     [not found]                         ` <4A2D1017.6010308-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-06-08 13:35                           ` Mel Gorman
2009-06-08 13:35                             ` Mel Gorman
2009-06-08 13:34                     ` Larry Finger
2009-06-07  9:52 ` [Bug #13330] nfs4 NULL pointer dereference in _nfs4_do_setlk Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 19:28   ` Trond Myklebust
2009-06-07 19:28     ` Trond Myklebust
     [not found]     ` <1244402928.5278.7.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-06-07 21:04       ` Rafael J. Wysocki
2009-06-07 21:04         ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13341] Random Oops at boot at loading ip6tables rules Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13337] [post 2.6.29 regression] hang during suspend of b44/b43 modules Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13328] b44: eth0: BUG! Timeout waiting for bit 00000002 of register 42c to clear Rafael J. Wysocki
2009-06-08  7:29   ` Francis Moreau
2009-06-08  7:29     ` Francis Moreau
     [not found]     ` <38b2ab8a0906080029n5d0e167oc2fc217f19882816-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-12 13:27       ` Francis Moreau
2009-06-12 13:27         ` Francis Moreau
     [not found]         ` <38b2ab8a0906120627l51f8fcbby934e3459ce148d26-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-12 19:14           ` Rafael J. Wysocki
2009-06-12 19:14             ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13351] 2.6.30 corrupts my system after suspend resume with readonly mounted hard disk Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13362] rt2x00: slow wifi with correct basic rate bitmap Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 12:58   ` Alejandro Riveira Fernández
2009-06-07 12:58     ` Alejandro Riveira Fernández
2009-06-07 21:05     ` Rafael J. Wysocki
2009-06-07 21:05       ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13366] About 80% of shutdowns fail (blocking) Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 16:02   ` Martin Bammer
2009-06-07 16:02     ` Martin Bammer
2009-06-07 21:09     ` Rafael J. Wysocki
2009-06-07 21:09       ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13374] reiserfs blocked for more than 120secs Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13389] Warning 'Invalid throttling state, reset' gets displayed when it should not be Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-08 11:31   ` Frans Pop
2009-06-08 11:31     ` Frans Pop
2009-06-07  9:52 ` [Bug #13391] Kernel boot hangs at about every second start when kms is activated Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 16:04   ` Martin Bammer
2009-06-07 16:04     ` Martin Bammer
2009-06-07 21:11     ` Rafael J. Wysocki
2009-06-07 21:11       ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13373] fbcon, intelfb, i915: INFO: possible circular locking dependency detected Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13401] pktcdvd writing is really slow with CFQ scheduler (bisected) Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13424] possible deadlock when doing governor switching Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13408] Performance regression in 2.6.30-rc7 Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13423] JMicron SATA controller not available Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 15:23   ` Marc Dionne
2009-06-07 15:23     ` Marc Dionne
     [not found]     ` <4A2BDB64.6020404-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-06-07 21:13       ` Rafael J. Wysocki
2009-06-07 21:13         ` Rafael J. Wysocki
     [not found]         ` <200906072313.20448.rjw-KKrjLPT3xs0@public.gmane.org>
2009-06-08  2:12           ` Marc Dionne
2009-06-08  2:12             ` Marc Dionne
2009-06-07  9:52 ` [Bug #13407] adb trackpad disappears after suspend to ram Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-25 15:07   ` Jan Scholz
2009-06-07  9:52 ` [Bug #13446] resume after suspend-to-ram broken on Toshiba Satellite A100 with 2.6.30-rc8 (works in 2.6.28) Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13470] Machine doesn't boot due to mmconfig detection problem Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13462] Unused bands in intefb console and smaller 180x56 -> 128x48 Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13472] Oops with minicom and USB serial Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13474] Oops whilst booting Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13475] suspend/hibernate lockdep warning Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 13:21   ` Pekka Enberg
2009-06-07 13:21     ` Pekka Enberg
     [not found]     ` <84144f020906070621r1f480eaeief026d23662df380-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-08  7:35       ` Dave Young
2009-06-08  7:35         ` Dave Young
     [not found]         ` <a8e1da0906080035j9f8b38drb46132de5a515915-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-08  7:49           ` Pekka Enberg
2009-06-08  7:49             ` Pekka Enberg
2009-06-08 12:48             ` Mathieu Desnoyers
2009-06-08 12:48               ` Mathieu Desnoyers
2009-06-08 14:32               ` Dave Jones
2009-06-08 14:32                 ` Dave Jones
     [not found]                 ` <20090608143220.GC2516-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-06-08 15:23                   ` [PATCH] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site) Mathieu Desnoyers
2009-06-08 15:23                     ` Mathieu Desnoyers
2009-06-08 16:57                     ` Pallipadi, Venkatesh
2009-06-08 16:57                       ` Pallipadi, Venkatesh
2009-06-08 17:17                       ` Mathieu Desnoyers
2009-06-09  1:15                     ` Dave Young
2009-06-09  1:15                       ` Dave Young
     [not found]                       ` <a8e1da0906081815q68ea7741v3568d6cad5f72bb8-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-09 15:23                         ` Mathieu Desnoyers
2009-06-09 15:23                           ` Mathieu Desnoyers
2009-06-11  4:46                           ` Dave Young
2009-06-11  4:46                             ` Dave Young
2009-06-11 13:39                 ` [Bug #13475] suspend/hibernate lockdep warning Simon Holm Thøgersen
     [not found]                   ` <1244727561.5350.32.camel-78RDdhuQolGs1BDpvl8NfQ@public.gmane.org>
2009-06-11 15:23                     ` Mathieu Desnoyers
2009-06-11 15:23                       ` Mathieu Desnoyers
2009-06-17  0:39                       ` Pallipadi, Venkatesh
2009-06-17  0:39                         ` Pallipadi, Venkatesh
     [not found]                         ` <20090617003925.GA3900-UEgXbdCqpo40dzWUSSna/BL4W9x8LtSr@public.gmane.org>
2009-06-17  1:05                           ` Mathieu Desnoyers
2009-06-17  1:05                             ` Mathieu Desnoyers
2009-06-17 15:29                           ` Thomas Renninger [this message]
2009-06-17 15:29                             ` Thomas Renninger
     [not found]                             ` <200906171729.16272.trenn-l3A5Bk7waGM@public.gmane.org>
2009-06-17 17:03                               ` Pallipadi, Venkatesh
2009-06-17 17:03                                 ` Pallipadi, Venkatesh
2009-06-18  5:46                           ` Dave Young
2009-06-18  5:46                             ` Dave Young
2009-06-07  9:52 ` [Bug #13473] Bug while trying to launch a KVM guest Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-08  4:26   ` Sachin Sant
2009-06-08  4:26     ` Sachin Sant
     [not found]     ` <4A2C92EB.5020002-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org>
2009-06-08 11:16       ` Rafael J. Wysocki
2009-06-08 11:16         ` Rafael J. Wysocki
2009-06-07  9:52 ` [Bug #13471] Loading parport_pc kills the keyboard if ACPI is enabled Rafael J. Wysocki
2009-06-07  9:52   ` Rafael J. Wysocki
2009-06-07 13:25   ` Ozan Çağlayan
2009-06-07 13:25     ` Ozan Çağlayan
     [not found]     ` <4A2BBFD6.8000002-caicS1wCkhO6A22drWdTBw@public.gmane.org>
2009-06-07 21:14       ` Rafael J. Wysocki
2009-06-07 21:14         ` Rafael J. Wysocki
2009-06-07 17:05 ` 2.6.30-rc8-git4: Reported regressions from 2.6.29 Luis R. Rodriguez
  -- strict thread matches above, loose matches on Subject: below --
2009-06-29  0:26 2.6.31-rc1-git3: Reported regressions 2.6.29 -> 2.6.30 Rafael J. Wysocki
2009-06-29  0:30 ` [Bug #13475] suspend/hibernate lockdep warning Rafael J. Wysocki
2009-06-29  0:30   ` Rafael J. Wysocki
2009-07-06 23:57 2.6.31-rc2: Reported regressions 2.6.29 -> 2.6.30 Rafael J. Wysocki
2009-07-07  0:00 ` [Bug #13475] suspend/hibernate lockdep warning Rafael J. Wysocki
2009-07-07  0:00   ` Rafael J. Wysocki
2009-07-26 20:41 2.6.31-rc4: Reported regressions 2.6.29 -> 2.6.30 Rafael J. Wysocki
2009-07-26 20:45 ` [Bug #13475] suspend/hibernate lockdep warning Rafael J. Wysocki
2009-07-26 20:45   ` Rafael J. Wysocki
2009-07-27  1:59   ` Dave Young
2009-07-27  1:59     ` Dave Young
2009-07-27 16:52   ` Mathieu Desnoyers
2009-07-27 16:52     ` Mathieu Desnoyers
2009-07-27 21:57     ` Rafael J. Wysocki
2009-07-27 21:57       ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200906171729.16272.trenn@suse.de \
    --to=trenn-l3a5bk7wagm@public.gmane.org \
    --cc=cpufreq-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=davej-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=hidave.darkstar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mathieu.desnoyers-scC8bbJcJLCw5LPnMra/2Q@public.gmane.org \
    --cc=odie-t5LvXY1cjzpaa/9Udqfwiw@public.gmane.org \
    --cc=penberg-bbCR+/B0CizivPeTLB3BmA@public.gmane.org \
    --cc=rjw-KKrjLPT3xs0@public.gmane.org \
    --cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
    --cc=sven.wegener-sQQoR7IzGU7R7s880joybQ@public.gmane.org \
    --cc=venkatesh.pallipadi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.