Commit 80f849bf authored by Johannes Berg's avatar Johannes Berg Committed by Richard Weinberger
Browse files

um: implement flush_cache_vmap/flush_cache_vunmap



vmalloc() heavy workloads in UML are extremely slow, due to
flushing the entire kernel VM space (flush_tlb_kernel_vm())
on the first segfault.

Implement flush_cache_vmap() to avoid that, and while at it
also add flush_cache_vunmap() since it's trivial.

This speeds up my vmalloc() heavy test of copying files out
from /sys/kernel/debug/gcov/ by 30x (from 30s to 1s.)

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Acked-By: default avatarAnton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent dd3035a2
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
#ifndef __UM_ASM_CACHEFLUSH_H
#define __UM_ASM_CACHEFLUSH_H

#include <asm/tlbflush.h>
#define flush_cache_vmap flush_tlb_kernel_range
#define flush_cache_vunmap flush_tlb_kernel_range

#include <asm-generic/cacheflush.h>
#endif /* __UM_ASM_CACHEFLUSH_H */
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#include <linux/mm.h>

#include <asm/tlbflush.h>
#include <asm-generic/cacheflush.h>
#include <asm/cacheflush.h>
#include <asm-generic/tlb.h>

#endif