2011-05-30 12:24:18

by Avi Kivity

[permalink] [raw]
Subject: [PATCH] x86: fix mwait_play_dead() faulting on mwait-incapable cpus

A logic error in mwait_play_dead() causes the kernel to use mwait
even on cpus which don't support it, such as KVM virtual cpus.

Introduced by 349c004e3d31fd.

Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=36222

Reported-by: Török Edwin <[email protected]>
Signed-off-by: Avi Kivity <[email protected]>
---
arch/x86/kernel/smpboot.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index eefd967..33a0c11 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1332,7 +1332,7 @@ static inline void mwait_play_dead(void)
void *mwait_ptr;
struct cpuinfo_x86 *c = __this_cpu_ptr(&cpu_info);

- if (!this_cpu_has(X86_FEATURE_MWAIT) && mwait_usable(c))
+ if (!(this_cpu_has(X86_FEATURE_MWAIT) && mwait_usable(c)))
return;
if (!this_cpu_has(X86_FEATURE_CLFLSH))
return;
--
1.7.5.3


2011-05-30 12:36:56

by Török Edwin

[permalink] [raw]
Subject: Re: [PATCH] x86: fix mwait_play_dead() faulting on mwait-incapable cpus

On 05/30/2011 03:23 PM, Avi Kivity wrote:
> A logic error in mwait_play_dead() causes the kernel to use mwait
> even on cpus which don't support it, such as KVM virtual cpus.
>
> Introduced by 349c004e3d31fd.
>
> Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=36222

Confirmed that it fixes it.

>
> Reported-by: Török Edwin <[email protected]>
> Signed-off-by: Avi Kivity <[email protected]>

You can add this if you want to:
Tested-by: Török Edwin <[email protected]>

Thanks,
--Edwin