RISC-V: Ensure Zicbom has a valid block size
authorAndrew Jones <ajones@ventanamicro.com>
Tue, 29 Nov 2022 14:34:47 +0000 (15:34 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Sat, 10 Dec 2022 03:12:52 +0000 (19:12 -0800)
commit9daaca4a44d6f0741060e67c54a0175c035edb1f
tree10bc449110265dc3eb02a798d59e778378261aa6
parentfb0ff0a95d61f69415cb8d8f2d921e1f7eed75af
RISC-V: Ensure Zicbom has a valid block size

When a DT puts zicbom in the isa string, but does not provide a block
size, ALT_CMO_OP() will attempt to do cache operations on address
zero since the start address will be ANDed with zero. We can't simply
BUG() in riscv_init_cbom_blocksize() when we fail to find a block
size because the failure will happen before logging works, leaving
users to scratch their heads as to why the boot hung. Instead, ensure
Zicbom is disabled and output an error which will hopefully alert
people that the DT needs to be fixed. While at it, add a check that
the block size is a power-of-2 too.

Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20221129143447.49714-4-ajones@ventanamicro.com
[Palmer: base on 5c20a3a9df19 ("RISC-V: Fix compilation without RISCV_ISA_ZICBOM"]
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/cpufeature.c