From 0b9bc474ef4dec9f805b35e510c7dc6041df6eb9 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Fri, 17 Sep 2010 17:06:46 -0700 Subject: [PATCH] --- yaml --- r: 212049 b: refs/heads/master c: a68e5c94f7d3dd64fef34dd5d97e365cae4bb42a h: refs/heads/master i: 212047: 06df4fa69d968cbb69101ff7ebc7d513078f1090 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/smpboot.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index e04d9a54795f..871cda21c5c7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ea53069231f9317062910d6e772cca4ce93de8c8 +refs/heads/master: a68e5c94f7d3dd64fef34dd5d97e365cae4bb42a diff --git a/trunk/arch/x86/kernel/smpboot.c b/trunk/arch/x86/kernel/smpboot.c index 07bf4233441d..55c80ffb8719 100644 --- a/trunk/arch/x86/kernel/smpboot.c +++ b/trunk/arch/x86/kernel/smpboot.c @@ -1422,9 +1422,9 @@ static inline void mwait_play_dead(void) (highest_subcstate - 1); } + wbinvd(); + while (1) { - mb(); - wbinvd(); __monitor(¤t_thread_info()->flags, 0, 0); mb(); __mwait(eax, 0); @@ -1433,11 +1433,10 @@ static inline void mwait_play_dead(void) static inline void hlt_play_dead(void) { + if (current_cpu_data.x86 >= 4) + wbinvd(); + while (1) { - mb(); - if (current_cpu_data.x86 >= 4) - wbinvd(); - mb(); native_halt(); } }