Messages in this thread Patch in this message | | | Date | Mon, 05 Oct 2009 12:07:20 +0900 | From | Hidetoshi Seto <> | Subject | [PATCH 3/6] mce-inject: no wait on write with MCE_INJ_CTX_RANDOM |
| |
Skip schedule_timeout() on write with MCE_INJ_CTX_RANDOM. And call raise_mce() only when it is required.
Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> --- arch/x86/kernel/cpu/mcheck/mce-inject.c | 23 +++++++++++------------ 1 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c index 2c1fc5a..e9379b6 100644 --- a/arch/x86/kernel/cpu/mcheck/mce-inject.c +++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c @@ -136,12 +136,11 @@ static int raise_local(void) static void raise_mce(struct mce *m) { - int context = MCE_INJ_CTX(m->inject_flags); - - inject_mce(m); - - if (context == MCE_INJ_CTX_RANDOM) - return; + /* + * Need to give user space some time to set everything up, + * so do it a jiffie or two later everywhere. + */ + schedule_timeout(2); #ifdef CONFIG_X86_LOCAL_APIC if (m->inject_flags & MCE_INJ_NMI_BROADCAST) { @@ -199,12 +198,12 @@ static ssize_t mce_write(struct file *filp, const char __user *ubuf, if (m.extcpu >= num_possible_cpus() || !cpu_online(m.extcpu)) return -EINVAL; - /* - * Need to give user space some time to set everything up, - * so do it a jiffie or two later everywhere. - */ - schedule_timeout(2); - raise_mce(&m); + /* Copy to percpu */ + inject_mce(&m); + + if (MCE_INJ_CTX(m.inject_flags) != MCE_INJ_CTX_RANDOM) + raise_mce(&m); + return usize; } -- 1.6.4.3
| |