riscv: hwprobe: export Zfh[min] ISA extensions
authorClément Léger <cleger@rivosinc.com>
Tue, 14 Nov 2023 14:12:46 +0000 (09:12 -0500)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 12 Dec 2023 23:45:07 +0000 (15:45 -0800)
Export Zfh[min] ISA extensions[1] through hwprobe only if FPU support
is available.

Link: https://drive.google.com/file/d/1z3tQQLm5ALsAD77PM0l0CHnapxWCeVzP/view
Signed-off-by: Clément Léger <cleger@rivosinc.com>
Reviewed-by: Evan Green <evan@rivosinc.com>
Link: https://lore.kernel.org/r/20231114141256.126749-11-cleger@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Documentation/arch/riscv/hwprobe.rst
arch/riscv/include/uapi/asm/hwprobe.h
arch/riscv/kernel/sys_riscv.c

index a08fcd899b6dbe95b1f4c1875187dc4750f40d17..397d53195f49ac00851d81e0983641ee5dfa5911 100644 (file)
@@ -140,6 +140,12 @@ The following keys are defined:
   * :c:macro:`RISCV_HWPROBE_EXT_ZVKT`: The Zvkt extension is supported as
        defined in version 1.0 of the RISC-V Cryptography Extensions Volume II.
 
+  * :c:macro:`RISCV_HWPROBE_EXT_ZFH`: The Zfh extension version 1.0 is supported
+       as defined in the RISC-V ISA manual.
+
+  * :c:macro:`RISCV_HWPROBE_EXT_ZFHMIN`: The Zfhmin extension version 1.0 is
+       supported as defined in the RISC-V ISA manual.
+
 * :c:macro:`RISCV_HWPROBE_KEY_CPUPERF_0`: A bitmask that contains performance
   information about the selected set of processors.
 
index 89628a76ca04735298db6122d9b8c2e10734d32b..2d960777ea4338590a67bd410180fe004398616f 100644 (file)
@@ -50,6 +50,8 @@ struct riscv_hwprobe {
 #define                RISCV_HWPROBE_EXT_ZVKSED        (1 << 24)
 #define                RISCV_HWPROBE_EXT_ZVKSH         (1 << 25)
 #define                RISCV_HWPROBE_EXT_ZVKT          (1 << 26)
+#define                RISCV_HWPROBE_EXT_ZFH           (1 << 27)
+#define                RISCV_HWPROBE_EXT_ZFHMIN        (1 << 28)
 #define RISCV_HWPROBE_KEY_CPUPERF_0    5
 #define                RISCV_HWPROBE_MISALIGNED_UNKNOWN        (0 << 0)
 #define                RISCV_HWPROBE_MISALIGNED_EMULATED       (1 << 0)
index 9bbcd7334d96dc93c1eae721d4878c08b5d34723..d776c6c39fcd852e19aebe4ef88c70a5207d909f 100644 (file)
@@ -186,6 +186,11 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
                        EXT_KEY(ZVKSH);
                        EXT_KEY(ZVKT);
                }
+
+               if (has_fpu()) {
+                       EXT_KEY(ZFH);
+                       EXT_KEY(ZFHMIN);
+               }
 #undef EXT_KEY
        }