aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@amd.com>2009-06-24 06:44:33 -0400
committerAvi Kivity <avi@redhat.com>2009-09-10 01:33:02 -0400
commit8f1589d95e5eab1ed287f217a33656e922cdbdd0 (patch)
treef9b6728a4233b7bb2f70c0fd2b85aafd715018dd /arch
parent894a9c5543abf6f88d36dc1b9f5d90f35db09cb3 (diff)
KVM: ignore AMDs HWCR register access to set the FFDIS bit
Linux tries to disable the flush filter on all AMD K8 CPUs. Since KVM does not handle the needed MSR, the injected #GP will panic the Linux kernel. Ignore setting of the HWCR.FFDIS bit in this MSR to let Linux boot with an AMD K8 family guest CPU. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/svm.c1
-rw-r--r--arch/x86/kvm/x86.c8
2 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index b1c446208867..8728e514c851 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -2137,7 +2137,6 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
2137 break; 2137 break;
2138 case MSR_VM_CR: 2138 case MSR_VM_CR:
2139 case MSR_VM_IGNNE: 2139 case MSR_VM_IGNNE:
2140 case MSR_K7_HWCR:
2141 pr_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data); 2140 pr_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data);
2142 break; 2141 break;
2143 default: 2142 default:
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e9b0982d2589..cae5b12bf938 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -833,6 +833,14 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
833 case MSR_EFER: 833 case MSR_EFER:
834 set_efer(vcpu, data); 834 set_efer(vcpu, data);
835 break; 835 break;
836 case MSR_K7_HWCR:
837 data &= ~(u64)0x40; /* ignore flush filter disable */
838 if (data != 0) {
839 pr_unimpl(vcpu, "unimplemented HWCR wrmsr: 0x%llx\n",
840 data);
841 return 1;
842 }
843 break;
836 case MSR_IA32_DEBUGCTLMSR: 844 case MSR_IA32_DEBUGCTLMSR:
837 if (!data) { 845 if (!data) {
838 /* We support the non-activated case already */ 846 /* We support the non-activated case already */