[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v6.5 03/26] x86/hvm: Rename update_guest_vendor() callback to cpuid_policy_changed()
It will shortly be used for more than just changing the vendor. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- v3: * Drop forward declaration of vmx_update_guest_vendor() --- xen/arch/x86/domctl.c | 17 ++++++++++------- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/hvm/svm/svm.c | 4 ++-- xen/arch/x86/hvm/vmx/vmx.c | 5 ++--- xen/include/asm-x86/hvm/hvm.h | 6 +++--- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 36ab235..cc7f433 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -53,6 +53,7 @@ static int update_domain_cpuid_info(struct domain *d, struct cpuid_policy *p = d->arch.cpuid; const struct cpuid_leaf leaf = { ctl->eax, ctl->ebx, ctl->ecx, ctl->edx }; int old_vendor = p->x86_vendor; + bool call_policy_changed = false; /* Avoid for_each_vcpu() unnecessarily */ /* * Skip update for leaves we don't care about. This avoids the overhead @@ -128,13 +129,7 @@ static int update_domain_cpuid_info(struct domain *d, switch ( ctl->input[0] ) { case 0: - if ( is_hvm_domain(d) && (p->x86_vendor != old_vendor) ) - { - struct vcpu *v; - - for_each_vcpu( d, v ) - hvm_update_guest_vendor(v); - } + call_policy_changed = (p->x86_vendor != old_vendor); break; case 1: @@ -299,6 +294,14 @@ static int update_domain_cpuid_info(struct domain *d, break; } + if ( is_hvm_domain(d) && call_policy_changed ) + { + struct vcpu *v; + + for_each_vcpu( d, v ) + hvm_cpuid_policy_changed(v); + } + return 0; } diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 28bc7e4..61df92c 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1555,7 +1555,7 @@ int hvm_vcpu_initialise(struct vcpu *v) hvm_set_guest_tsc(v, 0); } - hvm_update_guest_vendor(v); + hvm_cpuid_policy_changed(v); return 0; diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 2e62b9b..c48fdfa 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -613,7 +613,7 @@ static void svm_update_guest_efer(struct vcpu *v) vmcb_set_efer(vmcb, new_efer); } -static void svm_update_guest_vendor(struct vcpu *v) +static void svm_cpuid_policy_changed(struct vcpu *v) { struct arch_svm_struct *arch_svm = &v->arch.hvm_svm; struct vmcb_struct *vmcb = arch_svm->vmcb; @@ -2424,7 +2424,7 @@ static struct hvm_function_table __initdata svm_function_table = { .get_shadow_gs_base = svm_get_shadow_gs_base, .update_guest_cr = svm_update_guest_cr, .update_guest_efer = svm_update_guest_efer, - .update_guest_vendor = svm_update_guest_vendor, + .cpuid_policy_changed = svm_cpuid_policy_changed, .fpu_leave = svm_fpu_leave, .set_guest_pat = svm_set_guest_pat, .get_guest_pat = svm_get_guest_pat, diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index e526e88..e036303 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -72,7 +72,6 @@ static void vmx_free_vlapic_mapping(struct domain *d); static void vmx_install_vlapic_mapping(struct vcpu *v); static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr); static void vmx_update_guest_efer(struct vcpu *v); -static void vmx_update_guest_vendor(struct vcpu *v); static void vmx_wbinvd_intercept(void); static void vmx_fpu_dirty_intercept(void); static int vmx_msr_read_intercept(unsigned int msr, uint64_t *msr_content); @@ -655,7 +654,7 @@ void vmx_update_exception_bitmap(struct vcpu *v) __vmwrite(EXCEPTION_BITMAP, bitmap); } -static void vmx_update_guest_vendor(struct vcpu *v) +static void vmx_cpuid_policy_changed(struct vcpu *v) { if ( opt_hvm_fep || (v->domain->arch.cpuid->x86_vendor != boot_cpu_data.x86_vendor) ) @@ -2318,7 +2317,7 @@ static struct hvm_function_table __initdata vmx_function_table = { .update_host_cr3 = vmx_update_host_cr3, .update_guest_cr = vmx_update_guest_cr, .update_guest_efer = vmx_update_guest_efer, - .update_guest_vendor = vmx_update_guest_vendor, + .cpuid_policy_changed = vmx_cpuid_policy_changed, .fpu_leave = vmx_fpu_leave, .set_guest_pat = vmx_set_guest_pat, .get_guest_pat = vmx_get_guest_pat, diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h index 6ecad33..7275c65 100644 --- a/xen/include/asm-x86/hvm/hvm.h +++ b/xen/include/asm-x86/hvm/hvm.h @@ -135,7 +135,7 @@ struct hvm_function_table { void (*update_guest_cr)(struct vcpu *v, unsigned int cr); void (*update_guest_efer)(struct vcpu *v); - void (*update_guest_vendor)(struct vcpu *v); + void (*cpuid_policy_changed)(struct vcpu *v); void (*fpu_leave)(struct vcpu *v); @@ -334,9 +334,9 @@ static inline void hvm_update_guest_efer(struct vcpu *v) hvm_funcs.update_guest_efer(v); } -static inline void hvm_update_guest_vendor(struct vcpu *v) +static inline void hvm_cpuid_policy_changed(struct vcpu *v) { - hvm_funcs.update_guest_vendor(v); + hvm_funcs.cpuid_policy_changed(v); } /* -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |