2006-09-22 22:45:26

by S.Çağlar Onur

[permalink] [raw]
Subject: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

Hi;

With kernel-2.6.18, "modprobe cpufreq_stats" always (i can reproduce) gaves
following;

...
Lukewarm IQ detected in hotplug locking
BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
[<b0134a42>] lock_cpu_hotplug+0x42/0x65
[<b02f8af1>] cpufreq_update_policy+0x25/0xad
[<b0358756>] kprobe_flush_task+0x18/0x40
[<b0355aab>] schedule+0x63f/0x68b
[<b01377c2>] __link_module+0x0/0x1f
[<b0119e7d>] __cond_resched+0x16/0x34
[<b03560bf>] cond_resched+0x26/0x31
[<b0355b0e>] wait_for_completion+0x17/0xb1
[<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
[<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
[<b0137872>] sys_init_module+0x91/0x174
[<b0102c81>] sysenter_past_esp+0x56/0x79

on

zangetsu ~ # cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.73GHz
stepping : 8
cpu MHz : 1733.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up est tm2
bogomips : 3460.58

If needed i can gave more info/config etc.

Cheers
--
S.Çağlar Onur <[email protected]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


Attachments:
(No filename) (1.50 kB)
(No filename) (189.00 B)
Download all attachments

2006-09-22 23:05:33

by Dave Jones

[permalink] [raw]
Subject: Re: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

On Sat, Sep 23, 2006 at 01:45:16AM +0300, S.Çağlar Onur wrote:
> Hi;
>
> With kernel-2.6.18, "modprobe cpufreq_stats" always (i can reproduce) gaves
> following;
>
> ...
> Lukewarm IQ detected in hotplug locking
> BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
> [<b0134a42>] lock_cpu_hotplug+0x42/0x65
> [<b02f8af1>] cpufreq_update_policy+0x25/0xad
> [<b0358756>] kprobe_flush_task+0x18/0x40
> [<b0355aab>] schedule+0x63f/0x68b
> [<b01377c2>] __link_module+0x0/0x1f
> [<b0119e7d>] __cond_resched+0x16/0x34
> [<b03560bf>] cond_resched+0x26/0x31
> [<b0355b0e>] wait_for_completion+0x17/0xb1
> [<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
> [<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
> [<b0137872>] sys_init_module+0x91/0x174
> [<b0102c81>] sysenter_past_esp+0x56/0x79

Ah yes, cpufreq vs hotplug cpu locking. The eternal battle continues.

Andrew, did we arrive at concensus about how we should fix this?
I'm still of the opinion that it should be ripped out
completely, and started from scratch.

Dave

2006-09-22 23:13:48

by Dave Jones

[permalink] [raw]
Subject: Re: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

On Sat, Sep 23, 2006 at 01:45:16AM +0300, S.Çağlar Onur wrote:
> Hi;
>
> With kernel-2.6.18, "modprobe cpufreq_stats" always (i can reproduce) gaves
> following;
>
> ...
> Lukewarm IQ detected in hotplug locking
> BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
> [<b0134a42>] lock_cpu_hotplug+0x42/0x65
> [<b02f8af1>] cpufreq_update_policy+0x25/0xad
> [<b0358756>] kprobe_flush_task+0x18/0x40
> [<b0355aab>] schedule+0x63f/0x68b
> [<b01377c2>] __link_module+0x0/0x1f
> [<b0119e7d>] __cond_resched+0x16/0x34
> [<b03560bf>] cond_resched+0x26/0x31
> [<b0355b0e>] wait_for_completion+0x17/0xb1
> [<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
> [<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
> [<b0137872>] sys_init_module+0x91/0x174
> [<b0102c81>] sysenter_past_esp+0x56/0x79

This should do the trick.
I'll merge the same patch into cpufreq.git

Dave

--- linux-2.6.18.noarch/drivers/cpufreq/cpufreq_stats.c~ 2006-09-22 19:12:57.000000000 -0400
+++ linux-2.6.18.noarch/drivers/cpufreq/cpufreq_stats.c 2006-09-22 19:13:03.000000000 -0400
@@ -350,12 +350,10 @@ __init cpufreq_stats_init(void)
}

register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
- lock_cpu_hotplug();
for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, CPU_ONLINE,
(void *)(long)cpu);
}
- unlock_cpu_hotplug();
return 0;
}
static void

--
http://www.codemonkey.org.uk

2006-09-23 09:36:47

by S.Çağlar Onur

[permalink] [raw]
Subject: Re: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

23 Eyl 2006 Cts 02:13 tarihinde, Dave Jones şunları yazmıştı:
> On Sat, Sep 23, 2006 at 01:45:16AM +0300, S.Çağlar Onur wrote:
> > Hi;
> >
> > With kernel-2.6.18, "modprobe cpufreq_stats" always (i can reproduce)
> > gaves following;
> >
> > ...
> > Lukewarm IQ detected in hotplug locking
> > BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
> > [<b0134a42>] lock_cpu_hotplug+0x42/0x65
> > [<b02f8af1>] cpufreq_update_policy+0x25/0xad
> > [<b0358756>] kprobe_flush_task+0x18/0x40
> > [<b0355aab>] schedule+0x63f/0x68b
> > [<b01377c2>] __link_module+0x0/0x1f
> > [<b0119e7d>] __cond_resched+0x16/0x34
> > [<b03560bf>] cond_resched+0x26/0x31
> > [<b0355b0e>] wait_for_completion+0x17/0xb1
> > [<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
> > [<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
> > [<b0137872>] sys_init_module+0x91/0x174
> > [<b0102c81>] sysenter_past_esp+0x56/0x79
>
> This should do the trick.
> I'll merge the same patch into cpufreq.git
>
> Dave

Ill try

> --- linux-2.6.18.noarch/drivers/cpufreq/cpufreq_stats.c~ 2006-09-22
> 19:12:57.000000000 -0400 +++
> linux-2.6.18.noarch/drivers/cpufreq/cpufreq_stats.c 2006-09-22
> 19:13:03.000000000 -0400 @@ -350,12 +350,10 @@ __init
> cpufreq_stats_init(void)
> }
>
> register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
> - lock_cpu_hotplug();
> for_each_online_cpu(cpu) {
> cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, CPU_ONLINE,
> (void *)(long)cpu);
> }
> - unlock_cpu_hotplug();
> return 0;
> }
> static void

What about cpufreq_stats_exit, it has same locking? Seems like rmmod may cause
same problem or im totaly wrong?

Cheer
--
S.Çağlar Onur <[email protected]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


Attachments:
(No filename) (1.82 kB)
(No filename) (189.00 B)
Download all attachments

2006-09-23 09:42:21

by S.Çağlar Onur

[permalink] [raw]
Subject: Re: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

23 Eyl 2006 Cts 02:13 tarihinde, Dave Jones şunları yazmıştı:
> This should do the trick.
> I'll merge the same patch into cpufreq.git

Yep, it solved the problem

Cheers
--
S.Çağlar Onur <[email protected]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


Attachments:
(No filename) (340.00 B)
(No filename) (189.00 B)
Download all attachments

2006-09-23 18:11:05

by Dave Jones

[permalink] [raw]
Subject: Re: [BUG] warning at kernel/cpu.c:38/lock_cpu_hotplug()

On Sat, Sep 23, 2006 at 12:36:34PM +0300, S.Çağlar Onur wrote:
> 23 Eyl 2006 Cts 02:13 tarihinde, Dave Jones şunları yazmıştı:
> > On Sat, Sep 23, 2006 at 01:45:16AM +0300, S.Çağlar Onur wrote:
> > > Hi;
> > >
> > > With kernel-2.6.18, "modprobe cpufreq_stats" always (i can reproduce)
> > > gaves following;
> > >
> > > ...
> > > Lukewarm IQ detected in hotplug locking
> > > BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
> > > [<b0134a42>] lock_cpu_hotplug+0x42/0x65
> > > [<b02f8af1>] cpufreq_update_policy+0x25/0xad
> > > [<b0358756>] kprobe_flush_task+0x18/0x40
> > > [<b0355aab>] schedule+0x63f/0x68b
> > > [<b01377c2>] __link_module+0x0/0x1f
> > > [<b0119e7d>] __cond_resched+0x16/0x34
> > > [<b03560bf>] cond_resched+0x26/0x31
> > > [<b0355b0e>] wait_for_completion+0x17/0xb1
> > > [<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
> > > [<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
> > > [<b0137872>] sys_init_module+0x91/0x174
> > > [<b0102c81>] sysenter_past_esp+0x56/0x79
> >
> > This should do the trick.
> > I'll merge the same patch into cpufreq.git
>
> What about cpufreq_stats_exit, it has same locking? Seems like rmmod may cause
> same problem or im totaly wrong?

The CPU_DEAD notifier doesn't take the lock, so it's safe.

Dave