2.6.22-rc3: BUG: using smp_processor_id() in preemptible, in mtrr_save_state

From: Rafael J. Wysocki
Date: Sun Jun 03 2007 - 06:37:39 EST


Hi,

I get this on an SMP box with kernel preemption enabled, during hibernation and
restore (100% of the time):

Enabling non-boot CPUs ...
BUG: using smp_processor_id() in preemptible [00000001] code: bash/4514
caller is mtrr_save_state+0x9/0x40

Call Trace:
[<ffffffff8039008f>] debug_smp_processor_id+0xbf/0xd0
[<ffffffff8029b9e3>] dbg_redzone1+0x13/0x30
[<ffffffff80215ee9>] mtrr_save_state+0x9/0x40
[<ffffffff8021b76d>] __cpu_up+0xad/0x7c0
[<ffffffff8025886e>] mark_held_locks+0x3e/0x80
[<ffffffff8051afc9>] __mutex_unlock_slowpath+0xd9/0x1a0
[<ffffffff8025944e>] __lock_acquire+0x40e/0x1040
[<ffffffff8051b099>] mutex_unlock+0x9/0x10
[<ffffffff8025886e>] mark_held_locks+0x3e/0x80
[<ffffffff8051b25a>] __mutex_lock_slowpath+0x1ba/0x320
[<ffffffff80258a4a>] trace_hardirqs_on+0xda/0x180
[<ffffffff8051b246>] __mutex_lock_slowpath+0x1a6/0x320
[<ffffffff80260324>] _cpu_up+0xb4/0x150
[<ffffffff802604b2>] enable_nonboot_cpus+0x92/0xc0
[<ffffffff80267111>] hibernation_snapshot+0xa1/0xf0
[<ffffffff802672f4>] hibernate+0xc4/0x180
[<ffffffff80265ba0>] state_store+0xe0/0xf0
[<ffffffff802f0021>] subsys_attr_store+0x31/0x40
[<ffffffff802f01d3>] sysfs_write_file+0xe3/0x140
[<ffffffff802a24c4>] vfs_write+0xe4/0x190
[<ffffffff802a2b90>] sys_write+0x50/0x90
[<ffffffff80209c7e>] system_call+0x7e/0x83

where

(gdb) l *mtrr_save_state+0x9
0xffffffff80215ee9 is in mtrr_save_state (/home/rafael/src/rc/linux-2.6.22-rc3/arch/x86_64/kernel/../../i386/kernel/cpu/mtrr/main.c:737).
732 /**
733 * Save current fixed-range MTRR state of the BSP
734 */
735 void mtrr_save_state(void)
736 {
737 if (smp_processor_id() == 0)
738 mtrr_save_fixed_ranges(NULL);
739 else
740 smp_call_function_single(0, mtrr_save_fixed_ranges, NULL, 1, 1);
741 }
-
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/