|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/HVM: replace open-coded non-local cache flushing
commit 37e6237b1e02d4a1d9582c63b17884ffd7d4691f
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Apr 28 12:45:12 2014 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Apr 28 12:45:12 2014 +0200
x86/HVM: replace open-coded non-local cache flushing
We accumulated quite a number of these, despite having a pre-canned
interface for it.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx>
---
xen/arch/x86/hvm/hvm.c | 7 +------
xen/arch/x86/hvm/svm/svm.c | 7 +------
xen/arch/x86/hvm/vmx/vmcs.c | 7 +------
xen/arch/x86/hvm/vmx/vmx.c | 7 +------
4 files changed, 4 insertions(+), 24 deletions(-)
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 6817cd7..4e14a21 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1823,11 +1823,6 @@ static bool_t domain_exit_uc_mode(struct vcpu *v)
return 1;
}
-static void local_flush_cache(void *info)
-{
- wbinvd();
-}
-
static void hvm_set_uc_mode(struct vcpu *v, bool_t is_in_uc_mode)
{
v->domain->arch.hvm_domain.is_in_uc_mode = is_in_uc_mode;
@@ -1927,7 +1922,7 @@ void hvm_shadow_handle_cd(struct vcpu *v, unsigned long
value)
domain_pause_nosync(v->domain);
/* Flush physical caches. */
- on_each_cpu(local_flush_cache, NULL, 1);
+ flush_all(FLUSH_CACHE);
hvm_set_uc_mode(v, 1);
domain_unpause(v->domain);
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 6328e56..38d7923 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2106,15 +2106,10 @@ static void svm_vmexit_mce_intercept(
}
}
-static void wbinvd_ipi(void *info)
-{
- wbinvd();
-}
-
static void svm_wbinvd_intercept(void)
{
if ( cache_flush_permitted(current->domain) )
- on_each_cpu(wbinvd_ipi, NULL, 1);
+ flush_all(FLUSH_CACHE);
}
static void svm_vmexit_do_invalidate_cache(struct cpu_user_regs *regs)
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 4b886e5..cc84ca2 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1301,11 +1301,6 @@ void vm_resume_fail(void)
domain_crash_synchronous();
}
-static void wbinvd_ipi(void *info)
-{
- wbinvd();
-}
-
void vmx_do_resume(struct vcpu *v)
{
bool_t debug_state;
@@ -1332,7 +1327,7 @@ void vmx_do_resume(struct vcpu *v)
{
int cpu = v->arch.hvm_vmx.active_cpu;
if ( cpu != -1 )
- on_selected_cpus(cpumask_of(cpu), wbinvd_ipi, NULL, 1);
+ flush_mask(cpumask_of(cpu), FLUSH_CACHE);
}
vmx_clear_vmcs(v);
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 4a083d5..ecdbc17 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2307,18 +2307,13 @@ static void vmx_do_extint(struct cpu_user_regs *regs)
do_IRQ(regs);
}
-static void wbinvd_ipi(void *info)
-{
- wbinvd();
-}
-
static void vmx_wbinvd_intercept(void)
{
if ( !cache_flush_permitted(current->domain) || iommu_snoop )
return;
if ( cpu_has_wbinvd_exiting )
- on_each_cpu(wbinvd_ipi, NULL, 1);
+ flush_all(FLUSH_CACHE);
else
wbinvd();
}
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |