Thread (6 messages) 6 messages, 2 authors, 2005-09-26

Re: update_mmu_cache(): fault or not fault ?

From: "David S. Miller" <davem@davemloft.net>
Date: 2005-09-26 07:41:31
Also in: linux-mm

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: Mon, 26 Sep 2005 16:22:05 +1000
The problem is that want to only ever do that kind of hw TLB pre-fill
when update_mmu_cache() is called as the result an actual fault.
However, for some reasons that I'm not 100% sure about (*)
update_mmu_cache() is called from other places, typically in mm/fremap.c
which aren't directly results of faults.

So I suggest adding an argument to it "int is_fault", that would
basically be '1' on all the call sites in mm/memory.c and '0' in all the
call sites in mm/fremap.c.
You can track this in your port specific code.  That's what I do on
sparc64 to deal with this case.  I record the TLB miss type (D or I
tlb), and also whether a write occurred, in a bitmask.  Then I check
this in update_mmu_cache() to decide whether to prefill.

I store it in current_thread_info() and clear it at the end of fault
processing.

Just grep for "FAULT_CODE_*" in the sparc64 code to see how this
works.

Although, I'm ambivalent as to whether prefilling helps at all.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help