Skip to content

Commit 8f501be

Browse files
a4lgpalmer-dabbelt
authored andcommitted
RISC-V: clarify the QEMU workaround in ISA parser
Extensions prefixed with "Su" won't corrupt the workaround in many cases. The only exception is when the first multi-letter extension in the ISA string begins with "Su" and is not prefixed with an underscore. For instance, following ISA string can confuse this QEMU workaround. * "rv64imacsuclic" (RV64I + M + A + C + "Suclic") However, this case is very unlikely because extensions prefixed by either "Z", "Sm" or "Ss" will most likely precede first. For instance, the "Suclic" extension (draft as of now) will be placed after related "Smclic" and "Ssclic" extensions. It's also highly likely that other unprivileged extensions like "Zba" will precede. It's also possible to suppress the issue in the QEMU workaround with an underscore. Following ISA string won't confuse the QEMU workaround. * "rv64imac_suclic" (RV64I + M + A + C + delimited "Suclic") This fix is to tell kernel developers the nature of this workaround precisely. There are some "Su*" extensions to be ratified but don't worry about this workaround too much. This commit comes with other minor editorial fixes (for minor wording and spacing issues, without changing the meaning). Signed-off-by: Tsukasa OI <research_trasio@irq.a4lg.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/8a127608cf6194a6d288289f2520bd1744b81437.1690350252.git.research_trasio@irq.a4lg.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
1 parent e59e5e2 commit 8f501be

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

arch/riscv/kernel/cpufeature.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,11 @@ static void __init riscv_parse_isa_string(unsigned long *this_hwcap, struct risc
204204
switch (*ext) {
205205
case 's':
206206
/*
207-
* Workaround for invalid single-letter 's' & 'u'(QEMU).
207+
* Workaround for invalid single-letter 's' & 'u' (QEMU).
208208
* No need to set the bit in riscv_isa as 's' & 'u' are
209-
* not valid ISA extensions. It works until multi-letter
210-
* extension starting with "Su" appears.
209+
* not valid ISA extensions. It works unless the first
210+
* multi-letter extension in the ISA string begins with
211+
* "Su" and is not prefixed with an underscore.
211212
*/
212213
if (ext[-1] != '_' && ext[1] == 'u') {
213214
++isa;

0 commit comments

Comments
 (0)