qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH v3 12/21] kvm: x86: Drop MCE MSRs write back res


From: Huang Ying
Subject: [Qemu-devel] Re: [PATCH v3 12/21] kvm: x86: Drop MCE MSRs write back restrictions
Date: Wed, 05 Jan 2011 14:42:31 +0800

On Tue, 2011-01-04 at 16:32 +0800, Jan Kiszka wrote:
> From: Jan Kiszka <address@hidden>
> 
> There is no need to restrict writing back MCE MSRs to reset or full
> state updates as setting their values has no side effects.

Sorry for late.

The MCE MSRs contents is sticky for warm reset except MCG_STATUS, so
their content should be kept.  And the following sequence may set
uncorrected value in MCE registers.

savevm -> loadvm -> (OS clear MCE registers) -> reset -> (MCE registers
has new (uncorrected) value)

Best Regards,
Huang Ying

> Signed-off-by: Jan Kiszka <address@hidden>
> CC: Huang Ying <address@hidden>
> ---
>  target-i386/kvm.c |   12 ++++--------
>  1 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/target-i386/kvm.c b/target-i386/kvm.c
> index 8267655..1789bff 100644
> --- a/target-i386/kvm.c
> +++ b/target-i386/kvm.c
> @@ -863,14 +863,10 @@ static int kvm_put_msrs(CPUState *env, int level)
>      if (env->mcg_cap) {
>          int i;
>  
> -        if (level == KVM_PUT_RESET_STATE) {
> -            kvm_msr_entry_set(&msrs[n++], MSR_MCG_STATUS, env->mcg_status);
> -        } else if (level == KVM_PUT_FULL_STATE) {
> -            kvm_msr_entry_set(&msrs[n++], MSR_MCG_STATUS, env->mcg_status);
> -            kvm_msr_entry_set(&msrs[n++], MSR_MCG_CTL, env->mcg_ctl);
> -            for (i = 0; i < (env->mcg_cap & 0xff) * 4; i++) {
> -                kvm_msr_entry_set(&msrs[n++], MSR_MC0_CTL + i, 
> env->mce_banks[i]);
> -            }
> +        kvm_msr_entry_set(&msrs[n++], MSR_MCG_STATUS, env->mcg_status);
> +        kvm_msr_entry_set(&msrs[n++], MSR_MCG_CTL, env->mcg_ctl);
> +        for (i = 0; i < (env->mcg_cap & 0xff) * 4; i++) {
> +            kvm_msr_entry_set(&msrs[n++], MSR_MC0_CTL + i, 
> env->mce_banks[i]);
>          }
>      }
>  #endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]