Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:Update
xen.6649
5a4fd893-3-x86-hvm-rename-update_guest_vendor-t...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5a4fd893-3-x86-hvm-rename-update_guest_vendor-to-cpuid_policy_changed.patch of Package xen.6649
# Commit 3bea00966eb6680410c89df764d075a8fbacc3cc # Date 2018-01-05 19:57:07 +0000 # Author Andrew Cooper <andrew.cooper3@citrix.com> # Committer Andrew Cooper <andrew.cooper3@citrix.com> 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@citrix.com> Reviewed-by: Wei Liu <wei.liu2@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -51,6 +51,8 @@ static int gdbsx_guest_mem_io(domid_t do static void update_domain_cpuid_info(struct domain *d, const xen_domctl_cpuid_t *ctl) { + bool_t call_policy_changed = 0; /* Avoid for_each_vcpu() unnecessarily */ + switch ( ctl->input[0] ) { case 0: { @@ -69,14 +71,7 @@ static void update_domain_cpuid_info(str int old_vendor = d->arch.x86_vendor; d->arch.x86_vendor = get_cpu_vendor(vendor_id.str, gcv_guest); - - if ( is_hvm_domain(d) && (d->arch.x86_vendor != old_vendor) ) - { - struct vcpu *v; - - for_each_vcpu( d, v ) - hvm_update_guest_vendor(v); - } + call_policy_changed = (d->arch.x86_vendor != old_vendor); break; } @@ -235,6 +230,14 @@ static void update_domain_cpuid_info(str } break; } + + if ( is_hvm_domain(d) && call_policy_changed ) + { + struct vcpu *v; + + for_each_vcpu( d, v ) + hvm_cpuid_policy_changed(v); + } } #define MAX_IOPORTS 0x10000 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1565,7 +1565,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; --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -610,7 +610,7 @@ static void svm_update_guest_efer(struct 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; @@ -2263,7 +2263,7 @@ static struct hvm_function_table __initd .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, .set_guest_pat = svm_set_guest_pat, .get_guest_pat = svm_get_guest_pat, .set_tsc_offset = svm_set_tsc_offset, --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -74,7 +74,6 @@ static void vmx_free_vlapic_mapping(stru 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_cpuid_intercept( unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx); @@ -543,7 +542,7 @@ void vmx_update_exception_bitmap(struct __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.x86_vendor != boot_cpu_data.x86_vendor) ) @@ -2184,7 +2183,7 @@ static struct hvm_function_table __initd .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, .set_guest_pat = vmx_set_guest_pat, .get_guest_pat = vmx_get_guest_pat, .set_tsc_offset = vmx_set_tsc_offset, --- a/xen/include/asm-x86/hvm/hvm.h +++ b/xen/include/asm-x86/hvm/hvm.h @@ -142,7 +142,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); int (*get_guest_pat)(struct vcpu *v, u64 *); int (*set_guest_pat)(struct vcpu *v, u64); @@ -345,9 +345,9 @@ static inline void hvm_update_guest_efer 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); } /*
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor