linux_dsm_epyc7002/arch/arm/include/asm
Aaro Koskinen 7fccfc00c0 [ARM] 5450/1: Flush only the needed range when unmapping a VMA
When unmapping N pages (e.g. shared memory) the amount of TLB flushes
done can be (N*PAGE_SIZE/ZAP_BLOCK_SIZE)*N although it should be N at
maximum. With PREEMPT kernel ZAP_BLOCK_SIZE is 8 pages, so there is a
noticeable performance penalty when unmapping a large VMA and the system
is spending its time in flush_tlb_range().

The problem is that tlb_end_vma() is always flushing the full VMA
range. The subrange that needs to be flushed can be calculated by
tlb_remove_tlb_entry(). This approach was suggested by Hugh Dickins,
and is also used by other arches.

The speed increase is roughly 3x for 8M mappings and for larger mappings
even more.

Signed-off-by: Aaro Koskinen <Aaro.Koskinen@nokia.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-04-15 10:01:02 +01:00
..
hardware [ARM] 5431/1: scoop: completely drop old-style SCOOP GPIO accessors 2009-03-25 10:13:57 +00:00
mach [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type 2009-03-12 19:25:02 +00:00
a.out-core.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
a.out.h headers_check fix: arm, a.out.h 2009-02-01 11:01:22 +05:30
assembler.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
atomic.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
auxvec.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
bitops.h [ARM] 5339/1: fix __fls() on ARM 2008-12-04 09:21:55 +00:00
bug.h [ARM] 5211/2: fix a couple warnings from BUG() usage 2008-09-01 12:06:27 +01:00
bugs.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
cacheflush.h Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel 2009-03-26 23:10:11 +00:00
cachetype.h [ARM] Introduce new bitmask based cache type macros 2008-09-25 15:35:28 +01:00
checksum.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
clkdev.h [ARM] clkdev: add generic clkdev infrastructure 2008-11-27 12:38:21 +00:00
cpu-multi32.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
cpu-single.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
cpu.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
cputime.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
cputype.h [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
current.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
delay.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
device.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
div64.h [ARM] 5320/1: fix assembly constraints in implementation of do_div() 2008-10-23 12:53:32 +01:00
dma-mapping.h [ARM] make page_to_dma() highmem aware 2009-03-15 21:01:21 -04:00
dma.h [ARM] dma: remove dmamode_t typedef 2009-01-02 12:34:55 +00:00
domain.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
ecard.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
elf.h Merge branch 'master' into devel 2009-03-28 20:30:18 +00:00
emergency-restart.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
errno.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
fb.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
fcntl.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
fiq.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
fixmap.h [ARM] fixmap support 2009-03-15 21:01:20 -04:00
flat.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
floppy.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
fpstate.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
ftrace.h ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
futex.h [ARM] 5218/1: arm: improved futex support 2008-09-01 12:06:26 +01:00
glue.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
gpio.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
hardirq.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
highmem.h [ARM] introduce dma_cache_maint_page() 2009-03-15 21:01:21 -04:00
hw_irq.h [ARM] Fix circular include dependency with IRQ headers 2008-08-07 09:39:37 +01:00
hwcap.h [ARM] 5388/1: Add hwcap bits for VFPv3 and VFPv3D16 2009-02-12 10:59:44 +00:00
ide.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
io.h [ARM] Add a common typesafe __io implementation 2008-11-30 11:45:54 +00:00
ioctl.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
ioctls.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
ipcbuf.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
irq_regs.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
irq.h [ARM] give RiscPC a NR_IRQS definition and remove default 2008-11-29 19:14:31 +00:00
irqflags.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
kexec.h kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
kgdb.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
kmap_types.h [ARM] Feroceon: add highmem support to L2 cache handling code 2009-03-15 21:01:21 -04:00
kprobes.h [ARM] 5206/1: remove kprobe_trap_handler() hack 2008-09-01 12:06:26 +01:00
leds.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
limits.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
linkage.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
local.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
locks.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
mc146818rtc.h [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
memory.h [ARM] make page_to_dma() highmem aware 2009-03-15 21:01:21 -04:00
mman.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
mmu_context.h [ARM] Remove linux/sched.h from asm/cacheflush.h and asm/uaccess.h 2008-11-29 18:49:55 +00:00
mmu.h NOMMU: Make VMAs per MM as for MMU-mode linux 2009-01-08 12:04:47 +00:00
mmzone.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
module.h [ARM] 5384/1: unwind: Add stack unwinding support for loadable modules 2009-02-19 11:27:19 +00:00
msgbuf.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
mtd-xip.h [ARM] move asm/xip.h's mach/hardware.h include to mach/xip.h 2008-12-14 13:22:51 +00:00
mutex.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
nwflash.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
page-nommu.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
page.h ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
param.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
parport.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
pci.h [ARM] Fix PCI_DMA_BUS_IS_PHYS for ARM 2008-09-13 21:35:55 +01:00
percpu.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
pgalloc.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
pgtable-hwdef.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
pgtable-nommu.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
pgtable.h Merge branch 'ptebits' into devel 2008-10-09 21:31:56 +01:00
poll.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
posix_types.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
proc-fns.h Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel 2009-03-26 23:10:11 +00:00
processor.h Merge branch 'omap3-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2008-12-15 22:13:26 +00:00
procinfo.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
ptrace.h [ARM] 5387/1: Add ptrace VFP support on ARM 2009-02-12 10:59:43 +00:00
resource.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
scatterlist.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
sections.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
segment.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
sembuf.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
serial.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
setup.h headers_check fix: arm, setup.h 2009-02-01 11:01:22 +05:30
shmbuf.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
shmparam.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
sigcontext.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
siginfo.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
signal.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
sizes.h [ARM] 5447/1: Add SZ_32K 2009-04-08 20:35:57 +01:00
smp.h RealView: Use only the shadow mapping of ARM11MPCore local timers 2008-12-01 14:54:57 +00:00
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
sparsemem.h [ARM] mm: enable sparsemem on clps7500 and RiscPC 2008-10-01 17:24:04 +01:00
spinlock_types.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
spinlock.h Allow rwlocks to re-enable interrupts 2009-04-02 19:05:11 -07:00
stacktrace.h [ARM] 5382/1: unwind: Reorganise the stacktrace support 2009-02-12 13:21:17 +00:00
stat.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
statfs.h ARM: Use <asm-generic/statfs.h> 2008-09-04 09:46:11 +01:00
string.h [ARM] remove memzero() 2008-11-27 12:37:59 +00:00
suspend.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
swab.h headers_check fix: arm, swab.h 2009-02-01 11:01:23 +05:30
system.h Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel 2009-03-26 23:10:11 +00:00
termbits.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
termios.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
therm.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
thread_info.h [ARM] 5382/1: unwind: Reorganise the stacktrace support 2009-02-12 13:21:17 +00:00
thread_notify.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
timex.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
tlb.h [ARM] 5450/1: Flush only the needed range when unmapping a VMA 2009-04-15 10:01:02 +01:00
tlbflush.h ARM: Add support for FA526 v2 2009-03-25 13:10:01 +02:00
topology.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
traps.h [ARM] 5381/1: unwind: Reorganise the traps.c code 2009-02-12 13:21:15 +00:00
types.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
uaccess.h [ARM] Remove linux/sched.h from asm/cacheflush.h and asm/uaccess.h 2008-11-29 18:49:55 +00:00
ucontext.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
unaligned.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
unistd.h [ARM] 5193/1: Wire up missing syscalls 2008-08-12 19:54:07 +01:00
unwind.h [ARM] 5383/2: unwind: Add core support for ARM stack unwinding 2009-02-19 11:26:24 +00:00
user.h [ARM] 5387/1: Add ptrace VFP support on ARM 2009-02-12 10:59:43 +00:00
vfp.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
vfpmacros.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
vga.h [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
xor.h [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00