KVM: x86: Drop explicit @func param from ->set_supported_cpuid()
Drop the explicit @func param from ->set_supported_cpuid() and instead pull the CPUID function from the relevant entry. This sets the stage for hardening guest CPUID updates in future patches, e.g. allows adding run-time assertions that the CPUID feature being changed is actually a bit in the referenced CPUID entry. No functional change intended. Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:

committed by
Paolo Bonzini

parent
7392079c4e
commit
160b486f65
@@ -1161,7 +1161,7 @@ struct kvm_x86_ops {
|
|||||||
|
|
||||||
void (*set_tdp_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
|
void (*set_tdp_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
|
||||||
|
|
||||||
void (*set_supported_cpuid)(u32 func, struct kvm_cpuid_entry2 *entry);
|
void (*set_supported_cpuid)(struct kvm_cpuid_entry2 *entry);
|
||||||
|
|
||||||
bool (*has_wbinvd_exit)(void);
|
bool (*has_wbinvd_exit)(void);
|
||||||
|
|
||||||
|
@@ -784,7 +784,7 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvm_x86_ops->set_supported_cpuid(function, entry);
|
kvm_x86_ops->set_supported_cpuid(entry);
|
||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
|
|
||||||
|
@@ -6035,9 +6035,9 @@ static void svm_cpuid_update(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
#define F feature_bit
|
#define F feature_bit
|
||||||
|
|
||||||
static void svm_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry)
|
static void svm_set_supported_cpuid(struct kvm_cpuid_entry2 *entry)
|
||||||
{
|
{
|
||||||
switch (func) {
|
switch (entry->function) {
|
||||||
case 0x80000001:
|
case 0x80000001:
|
||||||
if (nested)
|
if (nested)
|
||||||
entry->ecx |= (1 << 2); /* Set SVM bit */
|
entry->ecx |= (1 << 2); /* Set SVM bit */
|
||||||
|
@@ -7128,9 +7128,9 @@ static void vmx_cpuid_update(struct kvm_vcpu *vcpu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vmx_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry)
|
static void vmx_set_supported_cpuid(struct kvm_cpuid_entry2 *entry)
|
||||||
{
|
{
|
||||||
if (func == 1 && nested)
|
if (entry->function == 1 && nested)
|
||||||
entry->ecx |= feature_bit(VMX);
|
entry->ecx |= feature_bit(VMX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user