[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/HVM: replace open-coded non-local cache flushing
Reviewed and Tested Acked-by: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> On 04/28/2014 02:54 AM, Tian, Kevin wrote: Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx> *From:*Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx] *Sent:* Friday, April 25, 2014 6:56 PM *To:* Jan Beulich *Cc:* xen-devel; Tian, Kevin; Keir Fraser; suravee.suthikulpanit@xxxxxxx; Dong, Eddie; Nakajima, Jun; Boris Ostrovsky *Subject:* Re: [Xen-devel] [PATCH] x86/HVM: replace open-coded non-local cache flushing On 25/04/14 11:51, Jan Beulich wrote: We accumulated quite a number of these, despite having a pre-canned interface for it. Signed-off-by: Jan Beulich<jbeulich@xxxxxxxx> <mailto:jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> <mailto:andrew.cooper3@xxxxxxxxxx> --- 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 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 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); --- 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) --- 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); --- 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_use 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(); } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx <mailto:Xen-devel@xxxxxxxxxxxxx> http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |