![]() | |||||||||||||
Messages in this thread |
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. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-09-26 09:49 [from the cache] ©2003-2008 | |||||||||||||