From 2c7f5db1b6795e404a9c198467308582060411b2 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sun, 23 Mar 2003 16:50:19 -0800 Subject: [PATCH] [PATCH] make x86 MSR driver preempt safe --- arch/i386/kernel/msr.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c index 5ad97d4a10c36..65e9570609b85 100644 --- a/arch/i386/kernel/msr.c +++ b/arch/i386/kernel/msr.c @@ -115,9 +115,13 @@ static void msr_smp_rdmsr(void *cmd_block) static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx) { struct msr_command cmd; + int ret; + preempt_disable(); if ( cpu == smp_processor_id() ) { - return wrmsr_eio(reg, eax, edx); + ret = wrmsr_eio(reg, eax, edx); + preempt_enable(); + return ret; } else { cmd.cpu = cpu; cmd.reg = reg; @@ -125,6 +129,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx) cmd.data[1] = edx; smp_call_function(msr_smp_wrmsr, &cmd, 1, 1); + preempt_enable(); return cmd.err; } } -- 2.53.0