KVM: ignore AMDs HWCR register access to set the FFDIS bit
authorAndre Przywara <andre.przywara@amd.com>
Wed, 24 Jun 2009 10:44:33 +0000 (12:44 +0200)
committerAvi Kivity <avi@redhat.com>
Thu, 10 Sep 2009 05:33:02 +0000 (08:33 +0300)
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>
arch/x86/kvm/svm.c
arch/x86/kvm/x86.c

index b1c44620886730c47eb5aa58fd4ea76bc96c2685..8728e514c851fa027def29466ed3f8a5b51e3a0c 100644 (file)
@@ -2137,7 +2137,6 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
                break;
        case MSR_VM_CR:
        case MSR_VM_IGNNE:
-       case MSR_K7_HWCR:
                pr_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data);
                break;
        default:
index e9b0982d2589286dcb52e265d433508e449fefd6..cae5b12bf93856f60a1345e5e258247eb8026060 100644 (file)
@@ -833,6 +833,14 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
        case MSR_EFER:
                set_efer(vcpu, data);
                break;
+       case MSR_K7_HWCR:
+               data &= ~(u64)0x40;     /* ignore flush filter disable */
+               if (data != 0) {
+                       pr_unimpl(vcpu, "unimplemented HWCR wrmsr: 0x%llx\n",
+                               data);
+                       return 1;
+               }
+               break;
        case MSR_IA32_DEBUGCTLMSR:
                if (!data) {
                        /* We support the non-activated case already */
This page took 0.029216 seconds and 5 git commands to generate.