KVM RISC-V now supports SBI FWFT, so add it to the get-reg-list test.

Signed-off-by: Anup Patel <apa...@ventanamicro.com>
---
 .../selftests/kvm/riscv/get-reg-list.c        | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/tools/testing/selftests/kvm/riscv/get-reg-list.c 
b/tools/testing/selftests/kvm/riscv/get-reg-list.c
index 34456e8cba02..705ab3d7778b 100644
--- a/tools/testing/selftests/kvm/riscv/get-reg-list.c
+++ b/tools/testing/selftests/kvm/riscv/get-reg-list.c
@@ -132,6 +132,7 @@ bool filter_reg(__u64 reg)
        case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_DBCN:
        case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_SUSP:
        case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_STA:
+       case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_FWFT:
        case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_EXPERIMENTAL:
        case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | 
KVM_RISCV_SBI_EXT_VENDOR:
                return true;
@@ -637,6 +638,7 @@ static const char *sbi_ext_single_id_to_str(__u64 reg_off)
                KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_DBCN),
                KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_SUSP),
                KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_STA),
+               KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_FWFT),
                KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_EXPERIMENTAL),
                KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_VENDOR),
        };
@@ -693,6 +695,19 @@ static const char *sbi_sta_id_to_str(__u64 reg_off)
        return strdup_printf("KVM_REG_RISCV_SBI_STA | %lld /* UNKNOWN */", 
reg_off);
 }
 
+static const char *sbi_fwft_id_to_str(__u64 reg_off)
+{
+       switch (reg_off) {
+       case 0: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.enable)";
+       case 1: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.flags)";
+       case 2: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.value)";
+       case 3: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.enable)";
+       case 4: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.flags)";
+       case 5: return "KVM_REG_RISCV_SBI_FWFT | 
KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.value)";
+       }
+       return strdup_printf("KVM_REG_RISCV_SBI_FWFT | %lld /* UNKNOWN */", 
reg_off);
+}
+
 static const char *sbi_id_to_str(const char *prefix, __u64 id)
 {
        __u64 reg_off = id & ~(REG_MASK | KVM_REG_RISCV_SBI_STATE);
@@ -705,6 +720,8 @@ static const char *sbi_id_to_str(const char *prefix, __u64 
id)
        switch (reg_subtype) {
        case KVM_REG_RISCV_SBI_STA:
                return sbi_sta_id_to_str(reg_off);
+       case KVM_REG_RISCV_SBI_FWFT:
+               return sbi_fwft_id_to_str(reg_off);
        }
 
        return strdup_printf("%lld | %lld /* UNKNOWN */", reg_subtype, reg_off);
@@ -872,6 +889,16 @@ static __u64 sbi_sta_regs[] = {
        KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_STA | KVM_REG_RISCV_SBI_STA_REG(shmem_hi),
 };
 
+static __u64 sbi_fwft_regs[] = {
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_EXT | 
KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_FWFT,
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.enable),
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.flags),
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.value),
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.enable),
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.flags),
+       KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | 
KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.value),
+};
+
 static __u64 zicbom_regs[] = {
        KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_CONFIG | 
KVM_REG_RISCV_CONFIG_REG(zicbom_block_size),
        KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | 
KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT_ZICBOM,
@@ -1028,6 +1055,9 @@ static __u64 vector_regs[] = {
 #define SUBLIST_SBI_STA \
        {"sbi-sta", .feature_type = VCPU_FEATURE_SBI_EXT, .feature = 
KVM_RISCV_SBI_EXT_STA, \
         .regs = sbi_sta_regs, .regs_n = ARRAY_SIZE(sbi_sta_regs),}
+#define SUBLIST_SBI_FWFT \
+       {"sbi-fwft", .feature_type = VCPU_FEATURE_SBI_EXT, .feature = 
KVM_RISCV_SBI_EXT_FWFT, \
+        .regs = sbi_fwft_regs, .regs_n = ARRAY_SIZE(sbi_fwft_regs),}
 #define SUBLIST_ZICBOM \
        {"zicbom", .feature = KVM_RISCV_ISA_EXT_ZICBOM, .regs = zicbom_regs, 
.regs_n = ARRAY_SIZE(zicbom_regs),}
 #define SUBLIST_ZICBOP \
@@ -1112,6 +1142,7 @@ KVM_SBI_EXT_SUBLIST_CONFIG(sta, STA);
 KVM_SBI_EXT_SIMPLE_CONFIG(pmu, PMU);
 KVM_SBI_EXT_SIMPLE_CONFIG(dbcn, DBCN);
 KVM_SBI_EXT_SIMPLE_CONFIG(susp, SUSP);
+KVM_SBI_EXT_SUBLIST_CONFIG(fwft, FWFT);
 
 KVM_ISA_EXT_SUBLIST_CONFIG(aia, AIA);
 KVM_ISA_EXT_SUBLIST_CONFIG(fp_f, FP_F);
@@ -1191,6 +1222,7 @@ struct vcpu_reg_list *vcpu_configs[] = {
        &config_sbi_pmu,
        &config_sbi_dbcn,
        &config_sbi_susp,
+       &config_sbi_fwft,
        &config_aia,
        &config_fp_f,
        &config_fp_d,
-- 
2.43.0


Reply via email to