summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Chiu <andy.chiu@sifive.com>2024-05-10 00:26:53 +0800
committerPalmer Dabbelt <palmer@rivosinc.com>2024-05-30 14:33:06 -0700
commit98a5700dfaec1043c8b69eb25f44896be557dd4c (patch)
treeaabbd15aa24e8f96fc18cb07f5a043a6b1a705f6
parent38a94c46660f5612c6ef37ec9754ec1543b038cd (diff)
downloadlinux-stable-98a5700dfaec1043c8b69eb25f44896be557dd4c.tar.gz
linux-stable-98a5700dfaec1043c8b69eb25f44896be557dd4c.tar.bz2
linux-stable-98a5700dfaec1043c8b69eb25f44896be557dd4c.zip
riscv: cpufeature: call match_isa_ext() for single-letter extensions
Single-letter extensions may also imply multiple subextensions. For example, Vector extension implies zve64d, and zve64d implies zve64f. Extension parsing for "riscv,isa-extensions" has the ability to resolve the dependency by calling match_isa_ext(). This patch makes deprecated parser call the same function for single letter extensions. Signed-off-by: Andy Chiu <andy.chiu@sifive.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20240510-zve-detection-v5-3-0711bdd26c12@sifive.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
-rw-r--r--arch/riscv/kernel/cpufeature.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c
index ccba08548004..a6287b73a846 100644
--- a/arch/riscv/kernel/cpufeature.c
+++ b/arch/riscv/kernel/cpufeature.c
@@ -468,16 +468,15 @@ static void __init riscv_parse_isa_string(unsigned long *this_hwcap, struct risc
if (unlikely(ext_err))
continue;
+
+ for (int i = 0; i < riscv_isa_ext_count; i++)
+ match_isa_ext(&riscv_isa_ext[i], ext, ext_end, isainfo);
+
if (!ext_long) {
int nr = tolower(*ext) - 'a';
- if (riscv_isa_extension_check(nr)) {
+ if (riscv_isa_extension_check(nr))
*this_hwcap |= isa2hwcap[nr];
- set_bit(nr, isainfo->isa);
- }
- } else {
- for (int i = 0; i < riscv_isa_ext_count; i++)
- match_isa_ext(&riscv_isa_ext[i], ext, ext_end, isainfo);
}
}
}