Commit b0ab8396 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Linus Torvalds

[PATCH] irqlock fixes

Add irq_enter/exit to smp_call_function_interrupt():
arch/i386/kernel/microcode.c:do_microcode_update() calls
smp_call_function(do_update_one).  do_update_one() does
spin_lock/unlock.

Remove unneeded GET_THREAD_INFO(%ebx) in device_not_available() trap in
entry.S
parent 27a25d32
...@@ -417,7 +417,6 @@ ENTRY(simd_coprocessor_error) ...@@ -417,7 +417,6 @@ ENTRY(simd_coprocessor_error)
ENTRY(device_not_available) ENTRY(device_not_available)
pushl $-1 # mark this as an int pushl $-1 # mark this as an int
SAVE_ALL SAVE_ALL
GET_THREAD_INFO(%ebx)
movl %cr0, %eax movl %cr0, %eax
testl $0x4, %eax # EM (math emulation bit) testl $0x4, %eax # EM (math emulation bit)
jne device_not_available_emulate jne device_not_available_emulate
......
...@@ -646,7 +646,10 @@ asmlinkage void smp_call_function_interrupt(void) ...@@ -646,7 +646,10 @@ asmlinkage void smp_call_function_interrupt(void)
/* /*
* At this point the info structure may be out of scope unless wait==1 * At this point the info structure may be out of scope unless wait==1
*/ */
irq_enter();
(*func)(info); (*func)(info);
irq_exit();
if (wait) { if (wait) {
mb(); mb();
atomic_inc(&call_data->finished); atomic_inc(&call_data->finished);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment