From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50605 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PaN5N-0000xO-R7 for qemu-devel@nongnu.org; Wed, 05 Jan 2011 01:43:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PaN5M-0007yD-EW for qemu-devel@nongnu.org; Wed, 05 Jan 2011 01:43:05 -0500 Received: from mga02.intel.com ([134.134.136.20]:8822) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PaN5M-0007ww-9c for qemu-devel@nongnu.org; Wed, 05 Jan 2011 01:43:04 -0500 From: Huang Ying In-Reply-To: <2c5efab40d7088353c5147c41fb13b44a944679c.1294129949.git.jan.kiszka@web.de> References: <2c5efab40d7088353c5147c41fb13b44a944679c.1294129949.git.jan.kiszka@web.de> Content-Type: text/plain; charset="UTF-8" Date: Wed, 05 Jan 2011 14:42:31 +0800 Message-ID: <1294209751.22308.337.camel@yhuang-dev> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH v3 12/21] kvm: x86: Drop MCE MSRs write back restrictions List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Marcelo Tosatti , Avi Kivity , "kvm@vger.kernel.org" , "qemu-devel@nongnu.org" On Tue, 2011-01-04 at 16:32 +0800, Jan Kiszka wrote: > From: Jan Kiszka > > 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 > CC: Huang Ying > --- > 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