Messages in this thread | | | Subject | Re: [PATCH 07/13] powerpc: Preemptible mmu_gather | From | Peter Zijlstra <> | Date | Fri, 09 Apr 2010 11:22:06 +0200 |
| |
On Fri, 2010-04-09 at 18:46 +1000, Nick Piggin wrote: > > struct mmu_page { > > struct page *page; > > #ifdef HAVE_ARCH_TLB_VADDR > > unsigned long vaddr; > > #endif > > }; > > Well you could also have a per-arch struct for this, which they can > fill in their own info with (I think powerpc takes the pte as well)
Ah, right you are.
Maybe something like:
#ifndef tlb_fill_page struct mmu_page { struct page *page; };
#define tlb_fill_page(tlb, pte, addr) do { } while (0) #endif
Which can be used from the tlb_remove_tlb_entry() implementation to gather both the pte and addr. The only complication seems to be that tlb_remove_tlb_entry() and tlb_remove_page() aren't always matched.
Also, it looks like both power and sparc drive the pte/vaddr flush from the pte_update/set_pte_at like functions. Which means its not synced to the mmu_gather at all.
So I'm not at all sure its feasible to link these, but I'll keep it in mind.
| |