powerpc: Chunk calls to flush_dcache_range in arch_*_memory
authorAlastair D'Silva <alastair@d-silva.org>
Mon, 4 Nov 2019 02:32:57 +0000 (13:32 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 7 Nov 2019 12:35:41 +0000 (23:35 +1100)
commit076265907cf9633bbef861c7c2a1c26a8209f283
treedfc5b8c7526a26eecaafae61ebb4360c9686b916
parent23eb7f560a2a6a1b0dbaaaae8685da75314347e4
powerpc: Chunk calls to flush_dcache_range in arch_*_memory

When presented with large amounts of memory being hotplugged
(in my test case, ~890GB), the call to flush_dcache_range takes
a while (~50 seconds), triggering RCU stalls.

This patch breaks up the call into 1GB chunks, calling
cond_resched() inbetween to allow the scheduler to run.

Fixes: fb5924fddf9e ("powerpc/mm: Flush cache on memory hot(un)plug")
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20191104023305.9581-6-alastair@au1.ibm.com
arch/powerpc/mm/mem.c