aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2010-09-07 16:21:22 +0300
committerMarcelo Tosatti <mtosatti@redhat.com>2010-09-07 21:55:47 -0300
commitc6866cd556fffee5cacee23707893b4a58388c4d (patch)
tree076ded17970fe153ce9d508b692aad8df486adaa
parenta61052167957ac41d3f753585258178287144a91 (diff)
kvm: reset MSR_IA32_CR_PAT correctly
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 <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r--qemu-kvm-x86.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index 4c32771e1..e02e89636 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);
}
msr_data.info.nmsrs = n;