diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-03-29 01:54:38 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-04-08 02:08:16 -0400 |
commit | 0ffe984917b9cd6ecc19ffbc06f35869d8c18df8 (patch) | |
tree | 49b54ea585dcd657083c8b755726820b002ae75a /arch/ia64/mm | |
parent | 8cab7ccccbdd9fe3cf6b3400d5a88ecb683a5b1b (diff) |
[IA64] Prefetch mmap_sem in ia64_do_page_fault()
Take a hint from an x86_64 optimization by Arjan van de Ven and use it
for ia64. See a9ba9a3b3897561d01e04cd21433746df46548c0
Prefetch the mmap_sem, which is critical for the performance of the page fault
handler.
Note: mm may be NULL but I guess that is safe.
See 458f935527372499b714bf4f8e646a68bb0f52e3
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/mm')
-rw-r--r-- | arch/ia64/mm/fault.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index af7eb087dca7..d98ec49570b8 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c | |||
@@ -60,6 +60,9 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re | |||
60 | struct siginfo si; | 60 | struct siginfo si; |
61 | unsigned long mask; | 61 | unsigned long mask; |
62 | 62 | ||
63 | /* mmap_sem is performance critical.... */ | ||
64 | prefetchw(&mm->mmap_sem); | ||
65 | |||
63 | /* | 66 | /* |
64 | * If we're in an interrupt or have no user context, we must not take the fault.. | 67 | * If we're in an interrupt or have no user context, we must not take the fault.. |
65 | */ | 68 | */ |