From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH master/stable-0.12/stable-0.13] kvm: reset MSR_IA32_CR_PAT correctly Date: Tue, 07 Sep 2010 16:24:46 +0300 Message-ID: <4C863D1E.4080101@redhat.com> References: <1283865682-30720-1-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Sheng Yang To: Marcelo Tosatti , kvm@vger.kernel.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:24417 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751657Ab0IGNYu (ORCPT ); Tue, 7 Sep 2010 09:24:50 -0400 In-Reply-To: <1283865682-30720-1-git-send-email-avi@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 09/07/2010 04:21 PM, Avi Kivity wrote: > The power-on value of MSR_IA32_CR_PAT is not 0 - that disables cacheing and > makes everything dog slow. > > Fix to reset MSR_IA32_CR_PAT to the correct value. > > Signed-off-by: Avi Kivity > --- > qemu-kvm-x86.c | 11 ++++++++++- > 1 files changed, 10 insertions(+), 1 deletions(-) > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c > index 4c32771..e02e896 100644 > --- a/qemu-kvm-x86.c > +++ b/qemu-kvm-x86.c > @@ -1289,12 +1289,21 @@ static int kvm_reset_msrs(CPUState *env) > } msr_data; > int n; > struct kvm_msr_entry *msrs = msr_data.entries; > + uint32_t index; > + uint64_t data; > > if (!kvm_msr_list) > return -1; > > for (n = 0; n< kvm_msr_list->nmsrs; n++) { > - kvm_msr_entry_set(&msrs[n], kvm_msr_list->indices[n], 0); > + index = kvm_msr_list->indices[n]; > + switch (index) { > + case MSR_PAT: > + data = 0x0007040600070406ULL; > + default: > + data = 0; > + } > + kvm_msr_entry_set(&msrs[n], index, data); > } Note: a better fix is to read all msr values during vm creation, so we get the kernel reset values instead of making up our own. This is more future proof wrt newer msrs. But let's start with the simple fix first. -- error compiling committee.c: too many arguments to function