|
@@ -2610,6 +2610,76 @@ When debug events exit the main run loop with the reason
|
|
|
KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
|
|
KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
|
|
|
structure containing architecture specific debug information.
|
|
structure containing architecture specific debug information.
|
|
|
|
|
|
|
|
|
|
+4.88 KVM_GET_EMULATED_CPUID
|
|
|
|
|
+
|
|
|
|
|
+Capability: KVM_CAP_EXT_EMUL_CPUID
|
|
|
|
|
+Architectures: x86
|
|
|
|
|
+Type: system ioctl
|
|
|
|
|
+Parameters: struct kvm_cpuid2 (in/out)
|
|
|
|
|
+Returns: 0 on success, -1 on error
|
|
|
|
|
+
|
|
|
|
|
+struct kvm_cpuid2 {
|
|
|
|
|
+ __u32 nent;
|
|
|
|
|
+ __u32 flags;
|
|
|
|
|
+ struct kvm_cpuid_entry2 entries[0];
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+The member 'flags' is used for passing flags from userspace.
|
|
|
|
|
+
|
|
|
|
|
+#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
|
|
|
|
|
+#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
|
|
|
|
|
+#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
|
|
|
|
|
+
|
|
|
|
|
+struct kvm_cpuid_entry2 {
|
|
|
|
|
+ __u32 function;
|
|
|
|
|
+ __u32 index;
|
|
|
|
|
+ __u32 flags;
|
|
|
|
|
+ __u32 eax;
|
|
|
|
|
+ __u32 ebx;
|
|
|
|
|
+ __u32 ecx;
|
|
|
|
|
+ __u32 edx;
|
|
|
|
|
+ __u32 padding[3];
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+This ioctl returns x86 cpuid features which are emulated by
|
|
|
|
|
+kvm.Userspace can use the information returned by this ioctl to query
|
|
|
|
|
+which features are emulated by kvm instead of being present natively.
|
|
|
|
|
+
|
|
|
|
|
+Userspace invokes KVM_GET_EMULATED_CPUID by passing a kvm_cpuid2
|
|
|
|
|
+structure with the 'nent' field indicating the number of entries in
|
|
|
|
|
+the variable-size array 'entries'. If the number of entries is too low
|
|
|
|
|
+to describe the cpu capabilities, an error (E2BIG) is returned. If the
|
|
|
|
|
+number is too high, the 'nent' field is adjusted and an error (ENOMEM)
|
|
|
|
|
+is returned. If the number is just right, the 'nent' field is adjusted
|
|
|
|
|
+to the number of valid entries in the 'entries' array, which is then
|
|
|
|
|
+filled.
|
|
|
|
|
+
|
|
|
|
|
+The entries returned are the set CPUID bits of the respective features
|
|
|
|
|
+which kvm emulates, as returned by the CPUID instruction, with unknown
|
|
|
|
|
+or unsupported feature bits cleared.
|
|
|
|
|
+
|
|
|
|
|
+Features like x2apic, for example, may not be present in the host cpu
|
|
|
|
|
+but are exposed by kvm in KVM_GET_SUPPORTED_CPUID because they can be
|
|
|
|
|
+emulated efficiently and thus not included here.
|
|
|
|
|
+
|
|
|
|
|
+The fields in each entry are defined as follows:
|
|
|
|
|
+
|
|
|
|
|
+ function: the eax value used to obtain the entry
|
|
|
|
|
+ index: the ecx value used to obtain the entry (for entries that are
|
|
|
|
|
+ affected by ecx)
|
|
|
|
|
+ flags: an OR of zero or more of the following:
|
|
|
|
|
+ KVM_CPUID_FLAG_SIGNIFCANT_INDEX:
|
|
|
|
|
+ if the index field is valid
|
|
|
|
|
+ KVM_CPUID_FLAG_STATEFUL_FUNC:
|
|
|
|
|
+ if cpuid for this function returns different values for successive
|
|
|
|
|
+ invocations; there will be several entries with the same function,
|
|
|
|
|
+ all with this flag set
|
|
|
|
|
+ KVM_CPUID_FLAG_STATE_READ_NEXT:
|
|
|
|
|
+ for KVM_CPUID_FLAG_STATEFUL_FUNC entries, set if this entry is
|
|
|
|
|
+ the first entry to be read by a cpu
|
|
|
|
|
+ eax, ebx, ecx, edx: the values returned by the cpuid instruction for
|
|
|
|
|
+ this function/index combination
|
|
|
|
|
+
|
|
|
5. The kvm_run structure
|
|
5. The kvm_run structure
|
|
|
------------------------
|
|
------------------------
|
|
|
|
|
|
|
@@ -2912,76 +2982,6 @@ values in kvm_run even if the corresponding bit in kvm_dirty_regs is not set.
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-4.81 KVM_GET_EMULATED_CPUID
|
|
|
|
|
-
|
|
|
|
|
-Capability: KVM_CAP_EXT_EMUL_CPUID
|
|
|
|
|
-Architectures: x86
|
|
|
|
|
-Type: system ioctl
|
|
|
|
|
-Parameters: struct kvm_cpuid2 (in/out)
|
|
|
|
|
-Returns: 0 on success, -1 on error
|
|
|
|
|
-
|
|
|
|
|
-struct kvm_cpuid2 {
|
|
|
|
|
- __u32 nent;
|
|
|
|
|
- __u32 flags;
|
|
|
|
|
- struct kvm_cpuid_entry2 entries[0];
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-The member 'flags' is used for passing flags from userspace.
|
|
|
|
|
-
|
|
|
|
|
-#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
|
|
|
|
|
-#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
|
|
|
|
|
-#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
|
|
|
|
|
-
|
|
|
|
|
-struct kvm_cpuid_entry2 {
|
|
|
|
|
- __u32 function;
|
|
|
|
|
- __u32 index;
|
|
|
|
|
- __u32 flags;
|
|
|
|
|
- __u32 eax;
|
|
|
|
|
- __u32 ebx;
|
|
|
|
|
- __u32 ecx;
|
|
|
|
|
- __u32 edx;
|
|
|
|
|
- __u32 padding[3];
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-This ioctl returns x86 cpuid features which are emulated by
|
|
|
|
|
-kvm.Userspace can use the information returned by this ioctl to query
|
|
|
|
|
-which features are emulated by kvm instead of being present natively.
|
|
|
|
|
-
|
|
|
|
|
-Userspace invokes KVM_GET_EMULATED_CPUID by passing a kvm_cpuid2
|
|
|
|
|
-structure with the 'nent' field indicating the number of entries in
|
|
|
|
|
-the variable-size array 'entries'. If the number of entries is too low
|
|
|
|
|
-to describe the cpu capabilities, an error (E2BIG) is returned. If the
|
|
|
|
|
-number is too high, the 'nent' field is adjusted and an error (ENOMEM)
|
|
|
|
|
-is returned. If the number is just right, the 'nent' field is adjusted
|
|
|
|
|
-to the number of valid entries in the 'entries' array, which is then
|
|
|
|
|
-filled.
|
|
|
|
|
-
|
|
|
|
|
-The entries returned are the set CPUID bits of the respective features
|
|
|
|
|
-which kvm emulates, as returned by the CPUID instruction, with unknown
|
|
|
|
|
-or unsupported feature bits cleared.
|
|
|
|
|
-
|
|
|
|
|
-Features like x2apic, for example, may not be present in the host cpu
|
|
|
|
|
-but are exposed by kvm in KVM_GET_SUPPORTED_CPUID because they can be
|
|
|
|
|
-emulated efficiently and thus not included here.
|
|
|
|
|
-
|
|
|
|
|
-The fields in each entry are defined as follows:
|
|
|
|
|
-
|
|
|
|
|
- function: the eax value used to obtain the entry
|
|
|
|
|
- index: the ecx value used to obtain the entry (for entries that are
|
|
|
|
|
- affected by ecx)
|
|
|
|
|
- flags: an OR of zero or more of the following:
|
|
|
|
|
- KVM_CPUID_FLAG_SIGNIFCANT_INDEX:
|
|
|
|
|
- if the index field is valid
|
|
|
|
|
- KVM_CPUID_FLAG_STATEFUL_FUNC:
|
|
|
|
|
- if cpuid for this function returns different values for successive
|
|
|
|
|
- invocations; there will be several entries with the same function,
|
|
|
|
|
- all with this flag set
|
|
|
|
|
- KVM_CPUID_FLAG_STATE_READ_NEXT:
|
|
|
|
|
- for KVM_CPUID_FLAG_STATEFUL_FUNC entries, set if this entry is
|
|
|
|
|
- the first entry to be read by a cpu
|
|
|
|
|
- eax, ebx, ecx, edx: the values returned by the cpuid instruction for
|
|
|
|
|
- this function/index combination
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
6. Capabilities that can be enabled on vCPUs
|
|
6. Capabilities that can be enabled on vCPUs
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|