[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] i386: Enable IA32_MISC_ENABLE MWAIT bit when ex
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] i386: Enable IA32_MISC_ENABLE MWAIT bit when exposing mwait/monitor |
Date: |
Mon, 20 May 2019 14:59:53 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 14/05/19 08:06, Wanpeng Li wrote:
> From: Wanpeng Li <address@hidden>
>
> The CPUID.01H:ECX[bit 3] ought to mirror the value of the MSR
> IA32_MISC_ENABLE MWAIT bit and as userspace has control of them
> both, it is userspace's job to configure both bits to match on
> the initial setup.
Queued, thanks.
Paolo
> Cc: Eduardo Habkost <address@hidden>
> Cc: Paolo Bonzini <address@hidden>
> Cc: Radim Krčmář <address@hidden>
> Signed-off-by: Wanpeng Li <address@hidden>
> ---
> target/i386/cpu.c | 3 +++
> target/i386/cpu.h | 1 +
> 2 files changed, 4 insertions(+)
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 722c551..40b6108 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -4729,6 +4729,9 @@ static void x86_cpu_reset(CPUState *s)
>
> env->pat = 0x0007040600070406ULL;
> env->msr_ia32_misc_enable = MSR_IA32_MISC_ENABLE_DEFAULT;
> + if (enable_cpu_pm) {
> + env->msr_ia32_misc_enable |= MSR_IA32_MISC_ENABLE_MWAIT;
> + }
>
> memset(env->dr, 0, sizeof(env->dr));
> env->dr[6] = DR6_FIXED_1;
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 0128910..b94c329 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -387,6 +387,7 @@ typedef enum X86Seg {
> #define MSR_IA32_MISC_ENABLE 0x1a0
> /* Indicates good rep/movs microcode on some processors: */
> #define MSR_IA32_MISC_ENABLE_DEFAULT 1
> +#define MSR_IA32_MISC_ENABLE_MWAIT (1ULL << 18)
>
> #define MSR_MTRRphysBase(reg) (0x200 + 2 * (reg))
> #define MSR_MTRRphysMask(reg) (0x200 + 2 * (reg) + 1)
>