]> Pileus Git - ~andy/linux/commit
ARM: cacheflush: split user cache-flushing into interruptible chunks
authorWill Deacon <will.deacon@arm.com>
Mon, 13 May 2013 14:21:49 +0000 (15:21 +0100)
committerWill Deacon <will.deacon@arm.com>
Tue, 20 Aug 2013 10:54:53 +0000 (11:54 +0100)
commit28256d612726a28a8b9d3c49f2b74198c4423d6a
treea64cd498ec1e9f4d34f77bcc827a541f19099bce
parent377747c40657eb35ad98a56439606d96a928425a
ARM: cacheflush: split user cache-flushing into interruptible chunks

Flushing a large, non-faulting VMA from userspace can potentially result
in a long time spent flushing the cache line-by-line without preemption
occurring (in the case of CONFIG_PREEMPT=n).

Whilst this doesn't affect the stability of the system, it can certainly
affect the responsiveness and CPU availability for other tasks.

This patch splits up the user cacheflush code so that it flushes in
chunks of a page. After each chunk has been flushed, we may reschedule
if appropriate and, before processing the next chunk, we allow any
pending signals to be handled before resuming from where we left off.

Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/include/asm/thread_info.h
arch/arm/kernel/traps.c