RISC-V: Probe Svinval extension form ISA string
authorMayuresh Chitale <mchitale@ventanamicro.com>
Sun, 2 Oct 2022 04:48:31 +0000 (10:18 +0530)
committerAnup Patel <anup@brainfault.org>
Sun, 2 Oct 2022 04:48:31 +0000 (10:18 +0530)
Just like other ISA extensions, we allow callers/users to detect the
presence of Svinval extension from ISA string.

Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Anup Patel <anup@brainfault.org>
arch/riscv/include/asm/hwcap.h
arch/riscv/kernel/cpu.c
arch/riscv/kernel/cpufeature.c

index 6f59ec64175efd2781635c01e34bb26f80d689fb..b2252529007301767f4dac92f4bc93d128b020b5 100644 (file)
@@ -58,6 +58,7 @@ enum riscv_isa_ext_id {
        RISCV_ISA_EXT_ZICBOM,
        RISCV_ISA_EXT_ZIHINTPAUSE,
        RISCV_ISA_EXT_SSTC,
+       RISCV_ISA_EXT_SVINVAL,
        RISCV_ISA_EXT_ID_MAX = RISCV_ISA_EXT_MAX,
 };
 
@@ -69,6 +70,7 @@ enum riscv_isa_ext_id {
 enum riscv_isa_ext_key {
        RISCV_ISA_EXT_KEY_FPU,          /* For 'F' and 'D' */
        RISCV_ISA_EXT_KEY_ZIHINTPAUSE,
+       RISCV_ISA_EXT_KEY_SVINVAL,
        RISCV_ISA_EXT_KEY_MAX,
 };
 
@@ -90,6 +92,8 @@ static __always_inline int riscv_isa_ext2key(int num)
                return RISCV_ISA_EXT_KEY_FPU;
        case RISCV_ISA_EXT_ZIHINTPAUSE:
                return RISCV_ISA_EXT_KEY_ZIHINTPAUSE;
+       case RISCV_ISA_EXT_SVINVAL:
+               return RISCV_ISA_EXT_KEY_SVINVAL;
        default:
                return -EINVAL;
        }
index 0be8a2403212d4a2b9a8a30af78437bc5b597b5f..7d1cd653ca027fd2070126328b3d22c7b720df11 100644 (file)
@@ -96,6 +96,7 @@ static struct riscv_isa_ext_data isa_ext_arr[] = {
        __RISCV_ISA_EXT_DATA(zicbom, RISCV_ISA_EXT_ZICBOM),
        __RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE),
        __RISCV_ISA_EXT_DATA(sstc, RISCV_ISA_EXT_SSTC),
+       __RISCV_ISA_EXT_DATA(svinval, RISCV_ISA_EXT_SVINVAL),
        __RISCV_ISA_EXT_DATA("", RISCV_ISA_EXT_MAX),
 };
 
index 3b5583db9d80ee4a175a5290ccb77ceea33c97c4..9774f1271f93e757195b167ce35f931896ca82e2 100644 (file)
@@ -204,6 +204,7 @@ void __init riscv_fill_hwcap(void)
                                SET_ISA_EXT_MAP("zicbom", RISCV_ISA_EXT_ZICBOM);
                                SET_ISA_EXT_MAP("zihintpause", RISCV_ISA_EXT_ZIHINTPAUSE);
                                SET_ISA_EXT_MAP("sstc", RISCV_ISA_EXT_SSTC);
+                               SET_ISA_EXT_MAP("svinval", RISCV_ISA_EXT_SVINVAL);
                        }
 #undef SET_ISA_EXT_MAP
                }