aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2005-09-03 15:55:06 -0700
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 00:05:48 -0700
commit34342e863c3143640c031760140d640a06c6a5f8 (patch)
treef2855e8ca82929859cb1fe249982b3ba1ccf9b5e
parent61e06037e764337da39dff307cbcdbe9cf288349 (diff)
downloadkernel_samsung_smdk4412-34342e863c3143640c031760140d640a06c6a5f8.zip
kernel_samsung_smdk4412-34342e863c3143640c031760140d640a06c6a5f8.tar.gz
kernel_samsung_smdk4412-34342e863c3143640c031760140d640a06c6a5f8.tar.bz2
[PATCH] mm/slab.c: prefetchw the start of new allocated objects
Mostobjects returned by __cache_alloc() will be written by the caller, (but not all callers want to write all the object, but just at the begining) prefetchw() tells the modern CPU to think about the future writes, ie start some memory transactions in advance. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--mm/slab.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c
index 59d382f..75127a6 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2166,7 +2166,9 @@ static inline void *__cache_alloc(kmem_cache_t *cachep, unsigned int __nocast fl
objp = cache_alloc_refill(cachep, flags);
}
local_irq_restore(save_flags);
- objp = cache_alloc_debugcheck_after(cachep, flags, objp, __builtin_return_address(0));
+ objp = cache_alloc_debugcheck_after(cachep, flags, objp,
+ __builtin_return_address(0));
+ prefetchw(objp);
return objp;
}