|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.9] x86/hvm: Rename update_guest_vendor() callback to cpuid_policy_changed()
commit 40f9ae9d0532a3c7dbb2a1e740c2cebe2aeb1d72
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu Feb 8 12:10:40 2018 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Feb 8 12:10:40 2018 +0100
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>
master commit: 3bea00966eb6680410c89df764d075a8fbacc3cc
master date: 2018-01-05 19:57:07 +0000
---
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 d32c4fa..afa676f 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 e3e3edc..bd39e6b 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1509,7 +1509,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 6d1e6bf..21e77fe 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -611,7 +611,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;
@@ -2390,7 +2390,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 a74dd75..465c2dc 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -71,7 +71,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);
@@ -654,7 +653,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) )
@@ -2299,7 +2298,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 7a85b2e..6a65fb4 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);
@@ -332,9 +332,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);
}
/*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |