[v2, 3/7] riscv: cpufeature: call match_isa_ext() for single-letter extensions
Andy Chiu
andy.chiu at sifive.com
Thu Mar 14 07:25:38 PDT 2024
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 at sifive.com>
---
arch/riscv/kernel/cpufeature.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c
index 36efc8e77ace..d836241a1f11 100644
--- a/arch/riscv/kernel/cpufeature.c
+++ b/arch/riscv/kernel/cpufeature.c
@@ -470,6 +470,10 @@ 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';
@@ -477,9 +481,6 @@ static void __init riscv_parse_isa_string(unsigned long *this_hwcap, struct risc
*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);
}
}
}
--
2.17.1
More information about the linux-riscv
mailing list