powerpc/64s: Default l1d_size to 64K in RFI fallback flush
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 <maddy@linux.vnet.ibm.com> [mpe: Rewrite comment and change log] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
b8858581fe
commit
9dfbf78e41
@ -890,6 +890,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(ppc64_bolted_size(), ppc64_rma_size);
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user