]> www.infradead.org Git - users/hch/misc.git/commitdiff
riscv: cpufeature: add validation for zfa, zfh and zfhmin
authorClément Léger <cleger@rivosinc.com>
Tue, 27 May 2025 10:00:00 +0000 (12:00 +0200)
committerPaul Walmsley <pjw@kernel.org>
Fri, 19 Sep 2025 01:51:09 +0000 (19:51 -0600)
These extensions depends on the F one. Add a validation callback
checking for the F extension to be present. Now that extensions are
correctly reported using the F/D presence, we can remove the
has_fpu() check in hwprobe_isa_ext0().

Signed-off-by: Clément Léger <cleger@rivosinc.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20250527100001.33284-1-cleger@rivosinc.com
Signed-off-by: Paul Walmsley <pjw@kernel.org>
arch/riscv/kernel/cpufeature.c
arch/riscv/kernel/sys_hwprobe.c

index 743d53415572e071fb22851161bd079ef3158b7c..67b59699357da8010db919b4ea2c24cd0d51182a 100644 (file)
@@ -474,10 +474,10 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = {
        __RISCV_ISA_EXT_DATA(zacas, RISCV_ISA_EXT_ZACAS),
        __RISCV_ISA_EXT_DATA(zalrsc, RISCV_ISA_EXT_ZALRSC),
        __RISCV_ISA_EXT_DATA(zawrs, RISCV_ISA_EXT_ZAWRS),
-       __RISCV_ISA_EXT_DATA(zfa, RISCV_ISA_EXT_ZFA),
+       __RISCV_ISA_EXT_DATA_VALIDATE(zfa, RISCV_ISA_EXT_ZFA, riscv_ext_f_depends),
        __RISCV_ISA_EXT_DATA_VALIDATE(zfbfmin, RISCV_ISA_EXT_ZFBFMIN, riscv_ext_f_depends),
-       __RISCV_ISA_EXT_DATA(zfh, RISCV_ISA_EXT_ZFH),
-       __RISCV_ISA_EXT_DATA(zfhmin, RISCV_ISA_EXT_ZFHMIN),
+       __RISCV_ISA_EXT_DATA_VALIDATE(zfh, RISCV_ISA_EXT_ZFH, riscv_ext_f_depends),
+       __RISCV_ISA_EXT_DATA_VALIDATE(zfhmin, RISCV_ISA_EXT_ZFHMIN, riscv_ext_f_depends),
        __RISCV_ISA_EXT_DATA(zca, RISCV_ISA_EXT_ZCA),
        __RISCV_ISA_EXT_DATA_VALIDATE(zcb, RISCV_ISA_EXT_ZCB, riscv_ext_zca_depends),
        __RISCV_ISA_EXT_DATA_VALIDATE(zcd, RISCV_ISA_EXT_ZCD, riscv_ext_zcd_validate),
index 0b170e18a2beba576f4f8787d6ef6aa67c5c3d0e..3e9259790816e46092d893df6321deaac3dd9795 100644 (file)
@@ -153,14 +153,12 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
                        EXT_KEY(ZVKT);
                }
 
-               if (has_fpu()) {
-                       EXT_KEY(ZCD);
-                       EXT_KEY(ZCF);
-                       EXT_KEY(ZFA);
-                       EXT_KEY(ZFBFMIN);
-                       EXT_KEY(ZFH);
-                       EXT_KEY(ZFHMIN);
-               }
+               EXT_KEY(ZCD);
+               EXT_KEY(ZCF);
+               EXT_KEY(ZFA);
+               EXT_KEY(ZFBFMIN);
+               EXT_KEY(ZFH);
+               EXT_KEY(ZFHMIN);
 
                if (IS_ENABLED(CONFIG_RISCV_ISA_SUPM))
                        EXT_KEY(SUPM);