[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110511140010.GE5315@n2100.arm.linux.org.uk>
Date: Wed, 11 May 2011 15:00:10 +0100
From: Russell King - ARM Linux <linux@....linux.org.uk>
To: Catalin Marinas <catalin.marinas@....com>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 20/19] ARM: LPAE: Invalidate the TLB before freeing the
PMD
On Wed, May 11, 2011 at 02:40:49PM +0100, Catalin Marinas wrote:
> On Wed, 2011-05-11 at 11:54 +0100, Russell King - ARM Linux wrote:
> > One of the points about the shootdown interface is that it batches things
> > up. So what's wrong with:
> >
> > static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
> > unsigned long addr)
> > {
> > #ifdef CONFIG_ARM_LPAE
> > tlb_add_flush(tlb, addr);
> > tlb_remove_page(tlb, virt_to_page(pmdp));
> > #endif
> > }
> >
> > and leave the tlb invalidate and actual page freeing to the batching code
> > to deal with?
>
> There isn't a big overhead with my initial code as a pmd covers 1GB and
> we only have 1 or 2 pmds per process that we can free.
>
> Is there any room for optimising the mmu_gather range? I think this only
> matters for case 1 in your tlb_flush() comment - unmapping a page range
> with a few pages in one pmd and a few other pages in the next pmd we get
> over 1GB range when we actually only need to flush the TLB for a few
> pages.
One of the points is to keep the code as similar to other architectures
so that the folk who are working on consolidating this stuff across other
architectures don't have to wonder why ARM is _unnecessarily_ doing things
differently.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists