diff options
author | Andre Przywara <andre.przywara@amd.com> | 2009-06-24 06:44:33 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-09-10 01:33:02 -0400 |
commit | 8f1589d95e5eab1ed287f217a33656e922cdbdd0 (patch) | |
tree | f9b6728a4233b7bb2f70c0fd2b85aafd715018dd /arch/x86/kvm/x86.c | |
parent | 894a9c5543abf6f88d36dc1b9f5d90f35db09cb3 (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/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 8 |
1 files changed, 8 insertions, 0 deletions
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 */ |