Re: [PATCH 2.6.25.10] pm_qos_params: change spinlock to rwlock
From: mark gross
Date: Mon Jul 14 2008 - 20:17:24 EST
On Sun, Jul 13, 2008 at 03:05:25PM +0200, Jakub W. Jozwicki wrote:
> Sunday, 13 of July 2008 10:28:16 Andrew Morton napisaÅ(a):
> > On Sun, 13 Jul 2008 01:19:19 +0200 "Jakub W. Jozwicki" <jozwicki@xxxxxxxx>
> wrote:
> > > Concurrent calls to pm_qos_requirement shouldn't block each other. This
> > > patch changes spinlock to rwlock and fixes issues with PREEMPT_RT.
> >
> > "fixes issues" is nowhere near an adequate description.
> >
> > Please provide complete descriptions for kernel patches. That includes
> > describing the mysterious "issue" in full!
> >
> > Thanks.
>
> [ 114.647010] BUG: sleeping function called from invalid context swapper(0)
> at kernel/rtmutex.c:742
> [ 114.647010] in_atomic():1 [00000001], irqs_disabled():0
> [ 114.647010] Pid: 0, comm: swapper Not tainted 2.6.25.10-rtXXX #10
> [ 114.647010] [<c0120fc4>] __might_sleep+0xf1/0xf8
> [ 114.647010] [<c045499c>] __rt_spin_lock+0x24/0x61
> [ 114.647010] [<c04549e1>] rt_spin_lock+0x8/0xa
> [ 114.647010] [<c013ec8d>] pm_qos_requirement+0x10/0x29
> [ 114.647010] [<c038ef36>] menu_select+0x5d/0x7f
> [ 114.647010] [<c038e4d8>] cpuidle_idle_call+0x47/0x9b
> [ 114.647010] [<c038e491>] ? cpuidle_idle_call+0x0/0x9b
> [ 114.647010] [<c01060ff>] cpu_idle+0xaf/0x106
> [ 114.647010] [<c0441c87>] rest_init+0x67/0x69
> [ 114.647010] =======================
> [ 115.649517] BUG: sleeping function called from invalid context swapper(0)
> at kernel/rtmutex.c:742
> [ 115.649517] in_atomic():1 [00000001], irqs_disabled():0
> [ 115.649517] Pid: 0, comm: swapper Not tainted 2.6.25.10-rtXXX #10
> [ 115.649517] [<c0120fc4>] __might_sleep+0xf1/0xf8
> [ 115.649517] [<c045499c>] __rt_spin_lock+0x24/0x61
> [ 115.649517] [<c04549e1>] rt_spin_lock+0x8/0xa
> [ 115.649517] [<c013ec8d>] pm_qos_requirement+0x10/0x29
> [ 115.649517] [<c038ef36>] menu_select+0x5d/0x7f
> [ 115.649517] [<c038e4d8>] cpuidle_idle_call+0x47/0x9b
> [ 115.649517] [<c038e491>] ? cpuidle_idle_call+0x0/0x9b
> [ 115.649517] [<c01060ff>] cpu_idle+0xaf/0x106
> [ 115.649517] [<c0441c87>] rest_init+0x67/0x69
> [ 115.649517] =======================
> [ 116.650040] BUG: sleeping function called from invalid context swapper(0)
> at kernel/rtmutex.c:742
> [ 116.650040] in_atomic():1 [00000001], irqs_disabled():0
> [ 116.650040] Pid: 0, comm: swapper Not tainted 2.6.25.10-rtXXX #10
> [ 116.650040] [<c0120fc4>] __might_sleep+0xf1/0xf8
> [ 116.650040] [<c045499c>] __rt_spin_lock+0x24/0x61
> [ 116.650040] [<c04549e1>] rt_spin_lock+0x8/0xa
> [ 116.650040] [<c013ec8d>] pm_qos_requirement+0x10/0x29
> [ 116.650040] [<c038ef36>] menu_select+0x5d/0x7f
> [ 116.650040] [<c038e4d8>] cpuidle_idle_call+0x47/0x9b
> [ 116.650040] [<c038e491>] ? cpuidle_idle_call+0x0/0x9b
> [ 116.650040] [<c01060ff>] cpu_idle+0xaf/0x106
> [ 116.650040] [<c0441c87>] rest_init+0x67/0x69
> [ 116.650040] =======================
Ah, this a PREEMPT_RT only issue. Let me study up on rwlocks a bit and
get back to you on this.
--mgross
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/