Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

KVM: riscv: selftests: Add SBI FWFT to get-reg-list test

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

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Link: https://lore.kernel.org/r/20250823155947.1354229-7-apatel@ventanamicro.com
Signed-off-by: Anup Patel <anup@brainfault.org>

authored by

Anup Patel and committed by
Anup Patel
5c6d333a 48d67106

+32
+32
tools/testing/selftests/kvm/riscv/get-reg-list.c
··· 132 132 case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_DBCN: 133 133 case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_SUSP: 134 134 case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_STA: 135 + case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_FWFT: 135 136 case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_EXPERIMENTAL: 136 137 case KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_VENDOR: 137 138 return true; ··· 638 637 KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_DBCN), 639 638 KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_SUSP), 640 639 KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_STA), 640 + KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_FWFT), 641 641 KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_EXPERIMENTAL), 642 642 KVM_SBI_EXT_ARR(KVM_RISCV_SBI_EXT_VENDOR), 643 643 }; ··· 695 693 return strdup_printf("KVM_REG_RISCV_SBI_STA | %lld /* UNKNOWN */", reg_off); 696 694 } 697 695 696 + static const char *sbi_fwft_id_to_str(__u64 reg_off) 697 + { 698 + switch (reg_off) { 699 + case 0: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.enable)"; 700 + case 1: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.flags)"; 701 + case 2: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(misaligned_deleg.value)"; 702 + case 3: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.enable)"; 703 + case 4: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.flags)"; 704 + case 5: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.value)"; 705 + } 706 + return strdup_printf("KVM_REG_RISCV_SBI_FWFT | %lld /* UNKNOWN */", reg_off); 707 + } 708 + 698 709 static const char *sbi_id_to_str(const char *prefix, __u64 id) 699 710 { 700 711 __u64 reg_off = id & ~(REG_MASK | KVM_REG_RISCV_SBI_STATE); ··· 720 705 switch (reg_subtype) { 721 706 case KVM_REG_RISCV_SBI_STA: 722 707 return sbi_sta_id_to_str(reg_off); 708 + case KVM_REG_RISCV_SBI_FWFT: 709 + return sbi_fwft_id_to_str(reg_off); 723 710 } 724 711 725 712 return strdup_printf("%lld | %lld /* UNKNOWN */", reg_subtype, reg_off); ··· 889 872 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), 890 873 }; 891 874 875 + static __u64 sbi_fwft_regs[] = { 876 + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_EXT | KVM_REG_RISCV_SBI_SINGLE | KVM_RISCV_SBI_EXT_FWFT, 877 + 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), 878 + 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), 879 + 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), 880 + 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), 881 + 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), 882 + 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), 883 + }; 884 + 892 885 static __u64 zicbom_regs[] = { 893 886 KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_CONFIG | KVM_REG_RISCV_CONFIG_REG(zicbom_block_size), 894 887 KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT_ZICBOM, ··· 1055 1028 #define SUBLIST_SBI_STA \ 1056 1029 {"sbi-sta", .feature_type = VCPU_FEATURE_SBI_EXT, .feature = KVM_RISCV_SBI_EXT_STA, \ 1057 1030 .regs = sbi_sta_regs, .regs_n = ARRAY_SIZE(sbi_sta_regs),} 1031 + #define SUBLIST_SBI_FWFT \ 1032 + {"sbi-fwft", .feature_type = VCPU_FEATURE_SBI_EXT, .feature = KVM_RISCV_SBI_EXT_FWFT, \ 1033 + .regs = sbi_fwft_regs, .regs_n = ARRAY_SIZE(sbi_fwft_regs),} 1058 1034 #define SUBLIST_ZICBOM \ 1059 1035 {"zicbom", .feature = KVM_RISCV_ISA_EXT_ZICBOM, .regs = zicbom_regs, .regs_n = ARRAY_SIZE(zicbom_regs),} 1060 1036 #define SUBLIST_ZICBOP \ ··· 1142 1112 KVM_SBI_EXT_SIMPLE_CONFIG(pmu, PMU); 1143 1113 KVM_SBI_EXT_SIMPLE_CONFIG(dbcn, DBCN); 1144 1114 KVM_SBI_EXT_SIMPLE_CONFIG(susp, SUSP); 1115 + KVM_SBI_EXT_SUBLIST_CONFIG(fwft, FWFT); 1145 1116 1146 1117 KVM_ISA_EXT_SUBLIST_CONFIG(aia, AIA); 1147 1118 KVM_ISA_EXT_SUBLIST_CONFIG(fp_f, FP_F); ··· 1222 1191 &config_sbi_pmu, 1223 1192 &config_sbi_dbcn, 1224 1193 &config_sbi_susp, 1194 + &config_sbi_fwft, 1225 1195 &config_aia, 1226 1196 &config_fp_f, 1227 1197 &config_fp_d,