mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
commit fe2a3027e74e40a3ece3a4c1e4e51403090a907a upstream. Guests on new hypersiors might set KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT bit when enabling async_PF, but this bit is reserved on old hypervisors, which results in a failure upon migration. To avoid breaking different cases, we are checking for CPUID feature bit before enabling the feature and nothing else. Fixes: 52a5c155cf79 ("KVM: async_pf: Let guest support delivery of async_pf from guest mode") Cc: <stable@vger.kernel.org> Reviewed-by: Wanpeng Li <wanpengli@tencent.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> [jwang: port to 4.14] Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
65 lines
3.6 KiB
Plaintext
65 lines
3.6 KiB
Plaintext
KVM CPUID bits
|
|
Glauber Costa <glommer@redhat.com>, Red Hat Inc, 2010
|
|
=====================================================
|
|
|
|
A guest running on a kvm host, can check some of its features using
|
|
cpuid. This is not always guaranteed to work, since userspace can
|
|
mask-out some, or even all KVM-related cpuid features before launching
|
|
a guest.
|
|
|
|
KVM cpuid functions are:
|
|
|
|
function: KVM_CPUID_SIGNATURE (0x40000000)
|
|
returns : eax = 0x40000001,
|
|
ebx = 0x4b4d564b,
|
|
ecx = 0x564b4d56,
|
|
edx = 0x4d.
|
|
Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM".
|
|
The value in eax corresponds to the maximum cpuid function present in this leaf,
|
|
and will be updated if more functions are added in the future.
|
|
Note also that old hosts set eax value to 0x0. This should
|
|
be interpreted as if the value was 0x40000001.
|
|
This function queries the presence of KVM cpuid leafs.
|
|
|
|
|
|
function: define KVM_CPUID_FEATURES (0x40000001)
|
|
returns : ebx, ecx, edx = 0
|
|
eax = and OR'ed group of (1 << flag), where each flags is:
|
|
|
|
|
|
flag || value || meaning
|
|
=============================================================================
|
|
KVM_FEATURE_CLOCKSOURCE || 0 || kvmclock available at msrs
|
|
|| || 0x11 and 0x12.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_NOP_IO_DELAY || 1 || not necessary to perform delays
|
|
|| || on PIO operations.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_MMU_OP || 2 || deprecated.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs
|
|
|| || 0x4b564d00 and 0x4b564d01
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by
|
|
|| || writing to msr 0x4b564d02
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_STEAL_TIME || 5 || steal time can be enabled by
|
|
|| || writing to msr 0x4b564d03.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_PV_EOI || 6 || paravirtualized end of interrupt
|
|
|| || handler can be enabled by writing
|
|
|| || to msr 0x4b564d04.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit
|
|
|| || before enabling paravirtualized
|
|
|| || spinlock support.
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_ASYNC_PF_VMEXIT || 10 || paravirtualized async PF VM exit
|
|
|| || can be enabled by setting bit 2
|
|
|| || when writing to msr 0x4b564d02
|
|
------------------------------------------------------------------------------
|
|
KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side
|
|
|| || per-cpu warps are expected in
|
|
|| || kvmclock.
|
|
------------------------------------------------------------------------------
|