mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
powerpc/64s: Default l1d_size to 64K in RFI fallback flush
[ Upstream commit9dfbf78e41] 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:aa8a5e0062('powerpc/64s: Add support for RFI flush of L1-D cache') Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> [mpe: Rewrite comment and change log] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
14652cdf93
commit
5aeca10ed1
@@ -864,6 +864,17 @@ static void init_fallback_flush(void)
|
|||||||
int cpu;
|
int cpu;
|
||||||
|
|
||||||
l1d_size = ppc64_caches.l1d.size;
|
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(ppc64_bolted_size(), ppc64_rma_size);
|
limit = min(ppc64_bolted_size(), ppc64_rma_size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user