From: Madhavan Srinivasan Date: Wed, 17 Jan 2018 19:03:36 +0000 (+0530) Subject: powerpc/64s: Default l1d_size to 64K in RFI fallback flush X-Git-Tag: Ubuntu-4.15.0-37.40~92 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=d44c7cbaa26fcbc9df0f37c1942a9e13f4e5afdf;p=mirror_ubuntu-bionic-kernel.git powerpc/64s: Default l1d_size to 64K in RFI fallback flush BugLink: http://bugs.launchpad.net/bugs/1794889 [ Upstream commit 9dfbf78e4114fcaf4ef61c49885c3ab5bad40d0b ] If there is no d-cache-size property in the device tree, l1d_size could be zero. We don't actually expect that to happen, it's only been seen on mambo (simulator) in some configurations. A zero-size l1d_size leads to the loop in the asm wrapping around to 2^64-1, and then walking off the end of the fallback area and eventually causing a page fault which is fatal. Just default to 64K which is correct on some CPUs, and sane enough to not cause a crash on others. Fixes: aa8a5e0062ac9 ('powerpc/64s: Add support for RFI flush of L1-D cache') Signed-off-by: Madhavan Srinivasan [mpe: Rewrite comment and change log] Signed-off-by: Michael Ellerman Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman Signed-off-by: Kamal Mostafa Signed-off-by: Stefan Bader --- diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 4abb684584dc..78a71b4fd646 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c @@ -858,6 +858,17 @@ static void __ref init_fallback_flush(void) return; l1d_size = ppc64_caches.l1d.size; + + /* + * If there is no d-cache-size property in the device tree, l1d_size + * could be zero. That leads to the loop in the asm wrapping around to + * 2^64-1, and then walking off the end of the fallback area and + * eventually causing a page fault which is fatal. Just default to + * something vaguely sane. + */ + if (!l1d_size) + l1d_size = (64 * 1024); + limit = min(safe_stack_limit(), ppc64_rma_size); /*