|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Huge perf degradation from missing xen_tlb_flush_all
On Fri, 26 Oct 2012 18:58:13 -0400
Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
> On Fri, Oct 26, 2012 at 03:43:11PM -0700, Mukesh Rathor wrote:
> > Hi,
> >
> Like this I presume (not compile tested):
> diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
> index 6226c99..dd91c3c 100644
> --- a/arch/x86/xen/mmu.c
> +++ b/arch/x86/xen/mmu.c
> @@ -1288,6 +1288,23 @@ unsigned long xen_read_cr2_direct(void)
> return this_cpu_read(xen_vcpu_info.arch.cr2);
> }
>
> +void xen_flush_tbl_all(void)
> +{
> + struct mmuext_op *op;
> + struct multicall_space mcs;
> +
> + preempt_disable();
> +
> + mcs = xen_mc_entry(sizeof(*op));
> +
> + op = mcs.args;
> + op->cmd = MMUEXT_TLB_FLUSH_ALL;
> + MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF);
> +
> + xen_mc_issue(PARAVIRT_LAZY_MMU);
> +
> + preempt_enable();
> +}
> static void xen_flush_tlb(void)
> {
> struct mmuext_op *op;
> @@ -2518,7 +2535,7 @@ int xen_remap_domain_mfn_range(struct
> vm_area_struct *vma, err = 0;
> out:
>
> - flush_tlb_all();
> + xen_flush_tbl_all();
We should examine other places flush_tlb_all() is called from too.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |