[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20070305203549.GA7453@dreamland.darkstar.lan>
Date: Mon, 5 Mar 2007 21:35:49 +0100
From: Luca Tettamanti <kronos.it@...il.com>
To: Ingo Molnar <mingo@...e.hu>
Cc: linux-kernel@...r.kernel.org
Subject: [BUG] check_tsc_sync_source: using smp_processor_id() in preemptible code
Hi Ingo,
git blame on tsc_sync.c points to you :)
I'm running 2.6.21-rc2, with PREEMP and SMP. I've enabled both hrtimers
and dyntick. CPU hotplug is also configured in (for swsusp).
If I put CPU1 offline and bring it back I get the following notice:
Breaking affinity for irq 1
Breaking affinity for irq 12
Breaking affinity for irq 16
Breaking affinity for irq 18
Breaking affinity for irq 219
CPU 1 is now offline
lockdep: not fixing up alternatives.
lockdep: not fixing up alternatives.
Booting processor 1/1 eip 3000
CPU 1 irqstacks, hard=b0437000 soft=b0435000
Initializing CPU#1
masked ExtINT on CPU#1
Calibrating delay using timer specific routine.. 4270.08 BogoMIPS (lpj=8540177)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 0000e3bd 00000000 00000001
monitor/mwait feature present.
CPU: L1 I cache: 32K, L1 D cache: 32K
CPU: L2 cache: 2048K
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 1
CPU: After all inits, caps: bfebfbff 20100000 00000000 00003940 0000e3bd 00000000 00000001
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz stepping 06
BUG: using smp_processor_id() in preemptible [00000001] code: bash/12805
caller is check_tsc_sync_source+0x18/0xeb
[<b01d26b4>] debug_smp_processor_id+0xa0/0xb4
[<b0113b3f>] check_tsc_sync_source+0x18/0xeb
[<b0113518>] __cpu_up+0x144/0x166
[<b0113280>] do_warm_boot_cpu+0x0/0x1a
[<b013efe1>] _cpu_up+0x71/0xbb
[<b013f04e>] cpu_up+0x23/0x34
[<b024eac3>] store_online+0x3a/0x56
[<b024ea89>] store_online+0x0/0x56
[<b024be9a>] sysdev_store+0x1e/0x22
[<b0195f31>] sysfs_write_file+0xbb/0xe5
[<b0195e76>] sysfs_write_file+0x0/0xe5
[<b0164162>] vfs_write+0x8a/0x10c
[<b01646db>] sys_write+0x41/0x67
[<b0103f08>] syscall_call+0x7/0xb
=======================
checking TSC synchronization [CPU#0 -> CPU#1]: passed.
Switched to high resolution mode on CPU 1
If I read the code correctly the warning points a serious bug, since
check_tsc_warp (which follows the printk) may sample the TSC on
different CPUs...
.config is attached.
Luca
--
"Di tutte le perversioni sessuali, la castita` e` la piu` strana".
Anatole France
View attachment ".config" of type "text/plain" (49896 bytes)
Powered by blists - more mailing lists