]>
Commit | Line | Data |
---|---|---|
09c9e813 GC |
1 | KVM CPUID bits |
2 | Glauber Costa <glommer@redhat.com>, Red Hat Inc, 2010 | |
3 | ===================================================== | |
4 | ||
5 | A guest running on a kvm host, can check some of its features using | |
6 | cpuid. This is not always guaranteed to work, since userspace can | |
7 | mask-out some, or even all KVM-related cpuid features before launching | |
8 | a guest. | |
9 | ||
10 | KVM cpuid functions are: | |
11 | ||
12 | function: KVM_CPUID_SIGNATURE (0x40000000) | |
57c22e5f | 13 | returns : eax = 0x40000001, |
09c9e813 GC |
14 | ebx = 0x4b4d564b, |
15 | ecx = 0x564b4d56, | |
16 | edx = 0x4d. | |
17 | Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". | |
57c22e5f MT |
18 | The value in eax corresponds to the maximum cpuid function present in this leaf, |
19 | and will be updated if more functions are added in the future. | |
20 | Note also that old hosts set eax value to 0x0. This should | |
21 | be interpreted as if the value was 0x40000001. | |
09c9e813 GC |
22 | This function queries the presence of KVM cpuid leafs. |
23 | ||
24 | ||
25 | function: define KVM_CPUID_FEATURES (0x40000001) | |
a4429e53 WL |
26 | returns : ebx, ecx |
27 | eax = an OR'ed group of (1 << flag), where each flags is: | |
09c9e813 GC |
28 | |
29 | ||
30 | flag || value || meaning | |
31 | ============================================================================= | |
32 | KVM_FEATURE_CLOCKSOURCE || 0 || kvmclock available at msrs | |
33 | || || 0x11 and 0x12. | |
34 | ------------------------------------------------------------------------------ | |
35 | KVM_FEATURE_NOP_IO_DELAY || 1 || not necessary to perform delays | |
36 | || || on PIO operations. | |
37 | ------------------------------------------------------------------------------ | |
38 | KVM_FEATURE_MMU_OP || 2 || deprecated. | |
39 | ------------------------------------------------------------------------------ | |
40 | KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs | |
41 | || || 0x4b564d00 and 0x4b564d01 | |
42 | ------------------------------------------------------------------------------ | |
344d9588 GN |
43 | KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by |
44 | || || writing to msr 0x4b564d02 | |
45 | ------------------------------------------------------------------------------ | |
56aba608 R |
46 | KVM_FEATURE_STEAL_TIME || 5 || steal time can be enabled by |
47 | || || writing to msr 0x4b564d03. | |
48 | ------------------------------------------------------------------------------ | |
49 | KVM_FEATURE_PV_EOI || 6 || paravirtualized end of interrupt | |
50 | || || handler can be enabled by writing | |
51 | || || to msr 0x4b564d04. | |
52 | ------------------------------------------------------------------------------ | |
9bc6cbeb R |
53 | KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit |
54 | || || before enabling paravirtualized | |
55 | || || spinlock support. | |
56 | ------------------------------------------------------------------------------ | |
858a43aa WL |
57 | KVM_FEATURE_PV_TLB_FLUSH || 9 || guest checks this feature bit |
58 | || || before enabling paravirtualized | |
59 | || || tlb flush. | |
60 | ------------------------------------------------------------------------------ | |
fe2a3027 RK |
61 | KVM_FEATURE_ASYNC_PF_VMEXIT || 10 || paravirtualized async PF VM exit |
62 | || || can be enabled by setting bit 2 | |
63 | || || when writing to msr 0x4b564d02 | |
64 | ------------------------------------------------------------------------------ | |
4180bf1b WL |
65 | KVM_FEATURE_PV_SEND_IPI || 11 || guest checks this feature bit |
66 | || || before using paravirtualized | |
67 | || || send IPIs. | |
68 | ------------------------------------------------------------------------------ | |
09c9e813 GC |
69 | KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side |
70 | || || per-cpu warps are expected in | |
71 | || || kvmclock. | |
72 | ------------------------------------------------------------------------------ | |
a4429e53 WL |
73 | |
74 | edx = an OR'ed group of (1 << flag), where each flags is: | |
75 | ||
76 | ||
77 | flag || value || meaning | |
78 | ================================================================================== | |
633711e8 MT |
79 | KVM_HINTS_REALTIME || 0 || guest checks this feature bit to |
80 | || || determine that vCPUs are never | |
81 | || || preempted for an unlimited time, | |
a4429e53 WL |
82 | || || allowing optimizations |
83 | ---------------------------------------------------------------------------------- |