Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote on 04/10/2009 22:26:42: > On Sun, 2009-10-04 at 10:35 +0200, Joakim Tjernlund wrote: > > Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote on 03/10/2009 > > 12:57:28: > > > > > > On Sat, 2009-10-03 at 11:24 +0200, Joakim Tjernlund wrote: > > > > > > > > So yes, there is a missing _tlbil_va() missing for 8xx somewhere > > > > but there is something more too. > > > > Maybe your new filter functions and my > > > > powerpc, 8xx: DTLB Error must check for more errors. > > > > will do the trick? > > > > > > Well, if we can't tell between a load and a store on a TLB miss, then > > > we should probably let it create an unpopulated entry in all cases, > > > so that we do take a proper DSI/ISI the second time around, which > > > would then tell us where we come from... > > > > While looking closer on 8xx TLB handling I noticed we were taking > > an extra TLB Error when making a page dirty. Tracked it down to: > > static inline pte_t pte_mkdirty(pte_t pte) { > > pte_val(pte) |= _PAGE_DIRTY; return pte; } > > pte_mkdirty does not set HWWRITE thus forcing a new > > TLB error to clear it. Adding HWWRITE to pte_mkdirty fixes the > > problem. > > We should just get rid of HWWRITE like I did for 44x and BookE.
I am trying :) > > > Looking at (especially pte_mkclean): > > static inline pte_t pte_wrprotect(pte_t pte) { > > pte_val(pte) &= ~(_PAGE_RW | _PAGE_HWWRITE); return pte; } > > static inline pte_t pte_mkclean(pte_t pte) { > > pte_val(pte) &= ~(_PAGE_DIRTY | _PAGE_HWWRITE); return pte; } > > > > it looks like a mistake not to include HWWRITE in pte_mkdirty(), > > what do you think? > > Maybe yes. No big deal right now, we have more important problems > to fix no ? :-) The missing invalidate you guys need to work out. I have no clue where to put it. If we are really lucky, getting rid of HWWRITE might help :) _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev