diff options
author | Eduardo Habkost | 2019-01-25 23:06:05 +0100 |
---|---|---|
committer | Eduardo Habkost | 2019-03-20 15:58:45 +0100 |
commit | 485b1d256bcb0874bcde0223727c159b6837e6f8 (patch) | |
tree | e68d3229ce3061f62bc5557cb7fc2fe3df7d5792 /tests/pca9552-test.c | |
parent | Update version for v4.0.0-rc0 release (diff) | |
download | qemu-485b1d256bcb0874bcde0223727c159b6837e6f8.tar.gz qemu-485b1d256bcb0874bcde0223727c159b6837e6f8.tar.xz qemu-485b1d256bcb0874bcde0223727c159b6837e6f8.zip |
i386: kvm: Disable arch_capabilities if MSR can't be set
KVM has two bugs in the handling of MSR_IA32_ARCH_CAPABILITIES:
1) Linux commit commit 1eaafe91a0df ("kvm: x86: IA32_ARCH_CAPABILITIES
is always supported") makes GET_SUPPORTED_CPUID return
arch_capabilities even if running on SVM. This makes "-cpu
host,migratable=off" incorrectly expose arch_capabilities on CPUID on
AMD hosts (where the MSR is not emulated by KVM).
2) KVM_GET_MSR_INDEX_LIST does not return MSR_IA32_ARCH_CAPABILITIES if
the MSR is not supported by the host CPU. This makes QEMU not
initialize the MSR properly at kvm_put_msrs() on those hosts.
Work around both bugs on the QEMU side, by checking if the MSR
was returned by KVM_GET_MSR_INDEX_LIST before returning the
feature flag on kvm_arch_get_supported_cpuid().
This has the unfortunate side effect of making arch_capabilities
unavailable on hosts without hardware support for the MSR until bug #2
is fixed on KVM, but I can't see another way to work around bug #1
without that side effect.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20190125220606.4864-2-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'tests/pca9552-test.c')
0 files changed, 0 insertions, 0 deletions