KVM RISC-V report more ISA extensions through ONE_REG
Subsystems (4)
cover KVM RISC-V report more ISA extensions through ONE_REG
This extends the KVM RISC-V ONE_REG interface to report more ISA extensions
namely: Zbz, scalar crypto, vector crypto, Zfh[min], Zihintntl, Zvfh[min], and Zfa.
This series depends upon the "riscv: report more ISA extensions through hwprobe" series.from Clement.
(Link: https://lore.kernel.org/lkml/20231114141256.126749-1-cleger at rivosinc.com/)
To test these patches, use KVMTOOL from the riscv_more_exts_v1 branch at:
https://github.com/avpatel/kvmtool.git
These patches can also be found in the riscv_kvm_more_exts_v1 branch at:
https://github.com/avpatel/linux.git
Anup Patel (15):
KVM: riscv: selftests: Generate ISA extension reg_list using macros
RISC-V: KVM: Allow Zbc extension for Guest/VM
KVM: riscv: selftests: Add Zbc extension to get-reg-list test
RISC-V: KVM: Allow scalar crypto extensions for Guest/VM
KVM: riscv: selftests: Add scaler crypto extensions to get-reg-list
test
RISC-V: KVM: Allow vector crypto extensions for Guest/VM
KVM: riscv: selftests: Add vector crypto extensions to get-reg-list
test
RISC-V: KVM: Allow Zfh[min] extensions for Guest/VM
KVM: riscv: selftests: Add Zfh[min] extensions to get-reg-list test
RISC-V: KVM: Allow Zihintntl extension for Guest/VM
KVM: riscv: selftests: Add Zihintntl extension to get-reg-list test
RISC-V: KVM: Allow Zvfh[min] extensions for Guest/VM
KVM: riscv: selftests: Add Zvfh[min] extensions to get-reg-list test
RISC-V: KVM: Allow Zfa extension for Guest/VM
KVM: riscv: selftests: Add Zfa extension to get-reg-list test
arch/riscv/include/uapi/asm/kvm.h | 27 ++ arch/riscv/kvm/vcpu_onereg.c | 54 +++ .../selftests/kvm/riscv/get-reg-list.c | 439 ++++++++---------- 3 files changed, 265 insertions(+), 255 deletions(-)
Signature · 1 line
2.34.1
PATCH 1/15 KVM: riscv: selftests: Generate ISA extension reg_list using macros
Various ISA extension reg_list have common pattern so let us generate these using macros.
We define two macros for the above purpose:
1) KVM_ISA_EXT_SIMPLE_CONFIG - Macro to generate reg_list for ISA extension without any additional ONE_REG registers
2) KVM_ISA_EXT_SUBLIST_CONFIG - Macro to generate reg_list for ISA extension with additional ONE_REG registers
--- .../selftests/kvm/riscv/get-reg-list.c | 331 ++++-------------- 1 file changed, 76 insertions(+), 255 deletions(-)
tools/testing/selftests/kvm/riscv/get-reg-list.c +76 -255
@@ -581,10 +581,6 @@ static __u64 base_skips_set[] = { KVM_REG_RISCV | KVM_REG_SIZE_U64 | KVM_REG_RISCV_TIMER | KVM_REG_RISCV_TIMER_REG(state), }; -static __u64 h_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_H , -}; -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_RISCV_ISA_EXT_ZICBOM ,
@@ -595,54 +591,6 @@ static __u64 zicboz_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_ZICBOZ, }; -static __u64 svpbmt_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVPBMT , -}; - -static __u64 sstc_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SSTC , -}; - -static __u64 svinval_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVINVAL , -}; - -static __u64 zihintpause_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTPAUSE , -}; - -static __u64 zba_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA , -}; - -static __u64 zbb_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB , -}; - -static __u64 zbs_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS , -}; - -static __u64 zicntr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICNTR , -}; - -static __u64 zicond_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICOND , -}; - -static __u64 zicsr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICSR , -}; - -static __u64 zifencei_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIFENCEI , -}; - -static __u64 zihpm_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHPM , -}; -static __u64 aia_regs[] = {KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (siselect),KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (iprio1),
@@ -733,221 +681,94 @@ static __u64 fp_d_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_D, }; -#define BASE_SUBLIST \ +#define SUBLIST_BASE \ {"base", .regs = base_regs, .regs_n = ARRAY_SIZE(base_regs), \ .skips_set = base_skips_set, .skips_set_n = ARRAY_SIZE(base_skips_set),} -#define H_REGS_SUBLIST \ - {"h", .feature = KVM_RISCV_ISA_EXT_H, .regs = h_regs, .regs_n = ARRAY_SIZE(h_regs),} -#define ZICBOM_REGS_SUBLIST \ +#define SUBLIST_ZICBOM \ {"zicbom", .feature = KVM_RISCV_ISA_EXT_ZICBOM, .regs = zicbom_regs, .regs_n = ARRAY_SIZE(zicbom_regs),} -#define ZICBOZ_REGS_SUBLIST \ +#define SUBLIST_ZICBOZ \ {"zicboz", .feature = KVM_RISCV_ISA_EXT_ZICBOZ, .regs = zicboz_regs, .regs_n = ARRAY_SIZE(zicboz_regs),} -#define SVPBMT_REGS_SUBLIST \ - {"svpbmt", .feature = KVM_RISCV_ISA_EXT_SVPBMT, .regs = svpbmt_regs, .regs_n = ARRAY_SIZE(svpbmt_regs),} -#define SSTC_REGS_SUBLIST \ - {"sstc", .feature = KVM_RISCV_ISA_EXT_SSTC, .regs = sstc_regs, .regs_n = ARRAY_SIZE(sstc_regs),} -#define SVINVAL_REGS_SUBLIST \ - {"svinval", .feature = KVM_RISCV_ISA_EXT_SVINVAL, .regs = svinval_regs, .regs_n = ARRAY_SIZE(svinval_regs),} -#define ZIHINTPAUSE_REGS_SUBLIST \ - {"zihintpause", .feature = KVM_RISCV_ISA_EXT_ZIHINTPAUSE, .regs = zihintpause_regs, .regs_n = ARRAY_SIZE(zihintpause_regs),} -#define ZBA_REGS_SUBLIST \ - {"zba", .feature = KVM_RISCV_ISA_EXT_ZBA, .regs = zba_regs, .regs_n = ARRAY_SIZE(zba_regs),} -#define ZBB_REGS_SUBLIST \ - {"zbb", .feature = KVM_RISCV_ISA_EXT_ZBB, .regs = zbb_regs, .regs_n = ARRAY_SIZE(zbb_regs),} -#define ZBS_REGS_SUBLIST \ - {"zbs", .feature = KVM_RISCV_ISA_EXT_ZBS, .regs = zbs_regs, .regs_n = ARRAY_SIZE(zbs_regs),} -#define ZICNTR_REGS_SUBLIST \ - {"zicntr", .feature = KVM_RISCV_ISA_EXT_ZICNTR, .regs = zicntr_regs, .regs_n = ARRAY_SIZE(zicntr_regs),} -#define ZICOND_REGS_SUBLIST \ - {"zicond", .feature = KVM_RISCV_ISA_EXT_ZICOND, .regs = zicond_regs, .regs_n = ARRAY_SIZE(zicond_regs),} -#define ZICSR_REGS_SUBLIST \ - {"zicsr", .feature = KVM_RISCV_ISA_EXT_ZICSR, .regs = zicsr_regs, .regs_n = ARRAY_SIZE(zicsr_regs),} -#define ZIFENCEI_REGS_SUBLIST \ - {"zifencei", .feature = KVM_RISCV_ISA_EXT_ZIFENCEI, .regs = zifencei_regs, .regs_n = ARRAY_SIZE(zifencei_regs),} -#define ZIHPM_REGS_SUBLIST \ - {"zihpm", .feature = KVM_RISCV_ISA_EXT_ZIHPM, .regs = zihpm_regs, .regs_n = ARRAY_SIZE(zihpm_regs),} -#define AIA_REGS_SUBLIST \ +#define SUBLIST_AIA \ {"aia", .feature = KVM_RISCV_ISA_EXT_SSAIA, .regs = aia_regs, .regs_n = ARRAY_SIZE(aia_regs),} -#define SMSTATEEN_REGS_SUBLIST \ +#define SUBLIST_SMSTATEEN \ {"smstateen", .feature = KVM_RISCV_ISA_EXT_SMSTATEEN, .regs = smstateen_regs, .regs_n = ARRAY_SIZE(smstateen_regs),} -#define FP_F_REGS_SUBLIST \ +#define SUBLIST_FP_F \ {"fp_f", .feature = KVM_RISCV_ISA_EXT_F, .regs = fp_f_regs, \ .regs_n = ARRAY_SIZE(fp_f_regs),} -#define FP_D_REGS_SUBLIST \ +#define SUBLIST_FP_D \ {"fp_d", .feature = KVM_RISCV_ISA_EXT_D, .regs = fp_d_regs, \ .regs_n = ARRAY_SIZE(fp_d_regs),} -static struct vcpu_reg_list h_config = { - .sublists = { -BASE_SUBLIST , -H_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicbom_config = { - .sublists = { -BASE_SUBLIST , -ZICBOM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicboz_config = { - .sublists = { -BASE_SUBLIST , -ZICBOZ_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svpbmt_config = { - .sublists = { -BASE_SUBLIST , -SVPBMT_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list sstc_config = { - .sublists = { -BASE_SUBLIST , -SSTC_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svinval_config = { - .sublists = { -BASE_SUBLIST , -SVINVAL_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihintpause_config = { - .sublists = { -BASE_SUBLIST , -ZIHINTPAUSE_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zba_config = { - .sublists = { -BASE_SUBLIST , -ZBA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbb_config = { - .sublists = { -BASE_SUBLIST , -ZBB_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbs_config = { - .sublists = { -BASE_SUBLIST , -ZBS_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicntr_config = { - .sublists = { -BASE_SUBLIST , -ZICNTR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicond_config = { - .sublists = { -BASE_SUBLIST , -ZICOND_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicsr_config = { - .sublists = { -BASE_SUBLIST , -ZICSR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zifencei_config = { - .sublists = { -BASE_SUBLIST , -ZIFENCEI_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihpm_config = { - .sublists = { -BASE_SUBLIST , -ZIHPM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list aia_config = { - .sublists = { -BASE_SUBLIST , -AIA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list smstateen_config = { - .sublists = { -BASE_SUBLIST , -SMSTATEEN_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_f_config = { - .sublists = { -BASE_SUBLIST , -FP_F_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_d_config = { - .sublists = { -BASE_SUBLIST , -FP_D_REGS_SUBLIST , - {0 }, - }, -}; +#define KVM_ISA_EXT_SIMPLE_CONFIG (ext, extu) \ +static __u64 regs_##ext[] = { \ + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | \ + KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_##extu, \ +}; \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + { \ + .name = #ext, \ + .feature = KVM_RISCV_ISA_EXT_##extu, \ + .regs = regs_##ext, \ + .regs_n = ARRAY_SIZE(regs_##ext), \ + }, \ + {0}, \ + }, \ +} \ + +#define KVM_ISA_EXT_SUBLIST_CONFIG (ext, extu) \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + SUBLIST_##extu, \ + {0}, \ + }, \ +} \ + +/* Note: The below list is alphabetically sorted. */ + +KVM_ISA_EXT_SUBLIST_CONFIG (aia,AIA ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_f,FP_F ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_d,FP_D ); +KVM_ISA_EXT_SIMPLE_CONFIG (h,H ); +KVM_ISA_EXT_SUBLIST_CONFIG (smstateen,SMSTATEEN ); +KVM_ISA_EXT_SIMPLE_CONFIG (sstc,SSTC ); +KVM_ISA_EXT_SIMPLE_CONFIG (svinval,SVINVAL ); +KVM_ISA_EXT_SIMPLE_CONFIG (svnapot,SVNAPOT ); +KVM_ISA_EXT_SIMPLE_CONFIG (svpbmt,SVPBMT ); +KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicntr,ZICNTR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicond,ZICOND ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicsr,ZICSR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zifencei,ZIFENCEI ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihintpause,ZIHINTPAUSE ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihpm,ZIHPM );struct vcpu_reg_list *vcpu_configs[] = { - &h_config, - &zicbom_config, - &zicboz_config, - &svpbmt_config, - &sstc_config, - &svinval_config, - &zihintpause_config, - &zba_config, - &zbb_config, - &zbs_config, - &zicntr_config, - &zicond_config, - &zicsr_config, - &zifencei_config, - &zihpm_config, - &aia_config, - &smstateen_config, - &fp_f_config, - &fp_d_config, + &config_aia, + &config_fp_f, + &config_fp_d, + &config_h, + &config_smstateen, + &config_sstc, + &config_svinval, + &config_svnapot, + &config_svpbmt, + &config_zba, + &config_zbb, + &config_zbs, + &config_zicbom, + &config_zicboz, + &config_zicntr, + &config_zicond, + &config_zicsr, + &config_zifencei, + &config_zihintpause, + &config_zihpm, };int vcpu_configs_n =ARRAY_SIZE (vcpu_configs);
Signature · 1 line
2.34.1
Re: [PATCH 01/15] KVM: riscv: selftests: Generate ISA extension reg_list using macros
Quoted 8 lines · Anup Patel
Various ISA extension
reg_listhave common pattern so let us generate these using macros.We define two macros for the above purpose:
1)KVM_ISA_EXT_SIMPLE_CONFIG- Macro to generatereg_listfor ISA extension without any additionalONE_REGregisters
2)KVM_ISA_EXT_SUBLIST_CONFIG- Macro to generatereg_listfor ISA extension with additionalONE_REGregisters
This patch also adds the missing config for svnapot.
Thanks,
drew
Quoted 377 lines
Signed-off-by Anup Patel <[email protected]>--- .../selftests/kvm/riscv/get-reg-list.c | 331 ++++-------------- 1 file changed, 76 insertions(+), 255 deletions(-)tools/testing/selftests/kvm/riscv/get-reg-list.c +76
-255@@ -581,10 +581,6 @@ static __u64 base_skips_set[] = { KVM_REG_RISCV | KVM_REG_SIZE_U64 | KVM_REG_RISCV_TIMER | KVM_REG_RISCV_TIMER_REG(state), }; -static __u64 h_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_H , -}; -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_RISCV_ISA_EXT_ZICBOM ,@@ -595,54 +591,6 @@ static __u64 zicboz_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_ZICBOZ, }; -static __u64 svpbmt_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVPBMT , -}; - -static __u64 sstc_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SSTC , -}; - -static __u64 svinval_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVINVAL , -}; - -static __u64 zihintpause_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTPAUSE , -}; - -static __u64 zba_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA , -}; - -static __u64 zbb_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB , -}; - -static __u64 zbs_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS , -}; - -static __u64 zicntr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICNTR , -}; - -static __u64 zicond_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICOND , -}; - -static __u64 zicsr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICSR , -}; - -static __u64 zifencei_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIFENCEI , -}; - -static __u64 zihpm_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHPM , -}; -static __u64 aia_regs[] = {KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (siselect),KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (iprio1),@@ -733,221 +681,94 @@ static __u64 fp_d_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_D, }; -#define BASE_SUBLIST \ +#define SUBLIST_BASE \ {"base", .regs = base_regs, .regs_n = ARRAY_SIZE(base_regs), \ .skips_set = base_skips_set, .skips_set_n = ARRAY_SIZE(base_skips_set),} -#define H_REGS_SUBLIST \ - {"h", .feature = KVM_RISCV_ISA_EXT_H, .regs = h_regs, .regs_n = ARRAY_SIZE(h_regs),} -#define ZICBOM_REGS_SUBLIST \ +#define SUBLIST_ZICBOM \ {"zicbom", .feature = KVM_RISCV_ISA_EXT_ZICBOM, .regs = zicbom_regs, .regs_n = ARRAY_SIZE(zicbom_regs),} -#define ZICBOZ_REGS_SUBLIST \ +#define SUBLIST_ZICBOZ \ {"zicboz", .feature = KVM_RISCV_ISA_EXT_ZICBOZ, .regs = zicboz_regs, .regs_n = ARRAY_SIZE(zicboz_regs),} -#define SVPBMT_REGS_SUBLIST \ - {"svpbmt", .feature = KVM_RISCV_ISA_EXT_SVPBMT, .regs = svpbmt_regs, .regs_n = ARRAY_SIZE(svpbmt_regs),} -#define SSTC_REGS_SUBLIST \ - {"sstc", .feature = KVM_RISCV_ISA_EXT_SSTC, .regs = sstc_regs, .regs_n = ARRAY_SIZE(sstc_regs),} -#define SVINVAL_REGS_SUBLIST \ - {"svinval", .feature = KVM_RISCV_ISA_EXT_SVINVAL, .regs = svinval_regs, .regs_n = ARRAY_SIZE(svinval_regs),} -#define ZIHINTPAUSE_REGS_SUBLIST \ - {"zihintpause", .feature = KVM_RISCV_ISA_EXT_ZIHINTPAUSE, .regs = zihintpause_regs, .regs_n = ARRAY_SIZE(zihintpause_regs),} -#define ZBA_REGS_SUBLIST \ - {"zba", .feature = KVM_RISCV_ISA_EXT_ZBA, .regs = zba_regs, .regs_n = ARRAY_SIZE(zba_regs),} -#define ZBB_REGS_SUBLIST \ - {"zbb", .feature = KVM_RISCV_ISA_EXT_ZBB, .regs = zbb_regs, .regs_n = ARRAY_SIZE(zbb_regs),} -#define ZBS_REGS_SUBLIST \ - {"zbs", .feature = KVM_RISCV_ISA_EXT_ZBS, .regs = zbs_regs, .regs_n = ARRAY_SIZE(zbs_regs),} -#define ZICNTR_REGS_SUBLIST \ - {"zicntr", .feature = KVM_RISCV_ISA_EXT_ZICNTR, .regs = zicntr_regs, .regs_n = ARRAY_SIZE(zicntr_regs),} -#define ZICOND_REGS_SUBLIST \ - {"zicond", .feature = KVM_RISCV_ISA_EXT_ZICOND, .regs = zicond_regs, .regs_n = ARRAY_SIZE(zicond_regs),} -#define ZICSR_REGS_SUBLIST \ - {"zicsr", .feature = KVM_RISCV_ISA_EXT_ZICSR, .regs = zicsr_regs, .regs_n = ARRAY_SIZE(zicsr_regs),} -#define ZIFENCEI_REGS_SUBLIST \ - {"zifencei", .feature = KVM_RISCV_ISA_EXT_ZIFENCEI, .regs = zifencei_regs, .regs_n = ARRAY_SIZE(zifencei_regs),} -#define ZIHPM_REGS_SUBLIST \ - {"zihpm", .feature = KVM_RISCV_ISA_EXT_ZIHPM, .regs = zihpm_regs, .regs_n = ARRAY_SIZE(zihpm_regs),} -#define AIA_REGS_SUBLIST \ +#define SUBLIST_AIA \ {"aia", .feature = KVM_RISCV_ISA_EXT_SSAIA, .regs = aia_regs, .regs_n = ARRAY_SIZE(aia_regs),} -#define SMSTATEEN_REGS_SUBLIST \ +#define SUBLIST_SMSTATEEN \ {"smstateen", .feature = KVM_RISCV_ISA_EXT_SMSTATEEN, .regs = smstateen_regs, .regs_n = ARRAY_SIZE(smstateen_regs),} -#define FP_F_REGS_SUBLIST \ +#define SUBLIST_FP_F \ {"fp_f", .feature = KVM_RISCV_ISA_EXT_F, .regs = fp_f_regs, \ .regs_n = ARRAY_SIZE(fp_f_regs),} -#define FP_D_REGS_SUBLIST \ +#define SUBLIST_FP_D \ {"fp_d", .feature = KVM_RISCV_ISA_EXT_D, .regs = fp_d_regs, \ .regs_n = ARRAY_SIZE(fp_d_regs),} -static struct vcpu_reg_list h_config = { - .sublists = { -BASE_SUBLIST , -H_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicbom_config = { - .sublists = { -BASE_SUBLIST , -ZICBOM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicboz_config = { - .sublists = { -BASE_SUBLIST , -ZICBOZ_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svpbmt_config = { - .sublists = { -BASE_SUBLIST , -SVPBMT_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list sstc_config = { - .sublists = { -BASE_SUBLIST , -SSTC_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svinval_config = { - .sublists = { -BASE_SUBLIST , -SVINVAL_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihintpause_config = { - .sublists = { -BASE_SUBLIST , -ZIHINTPAUSE_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zba_config = { - .sublists = { -BASE_SUBLIST , -ZBA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbb_config = { - .sublists = { -BASE_SUBLIST , -ZBB_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbs_config = { - .sublists = { -BASE_SUBLIST , -ZBS_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicntr_config = { - .sublists = { -BASE_SUBLIST , -ZICNTR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicond_config = { - .sublists = { -BASE_SUBLIST , -ZICOND_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicsr_config = { - .sublists = { -BASE_SUBLIST , -ZICSR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zifencei_config = { - .sublists = { -BASE_SUBLIST , -ZIFENCEI_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihpm_config = { - .sublists = { -BASE_SUBLIST , -ZIHPM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list aia_config = { - .sublists = { -BASE_SUBLIST , -AIA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list smstateen_config = { - .sublists = { -BASE_SUBLIST , -SMSTATEEN_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_f_config = { - .sublists = { -BASE_SUBLIST , -FP_F_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_d_config = { - .sublists = { -BASE_SUBLIST , -FP_D_REGS_SUBLIST , - {0 }, - }, -}; +#define KVM_ISA_EXT_SIMPLE_CONFIG (ext, extu) \ +static __u64 regs_##ext[] = { \ + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | \ + KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_##extu, \ +}; \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + { \ + .name = #ext, \ + .feature = KVM_RISCV_ISA_EXT_##extu, \ + .regs = regs_##ext, \ + .regs_n = ARRAY_SIZE(regs_##ext), \ + }, \ + {0}, \ + }, \ +} \ + +#define KVM_ISA_EXT_SUBLIST_CONFIG (ext, extu) \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + SUBLIST_##extu, \ + {0}, \ + }, \ +} \ + +/* Note: The below list is alphabetically sorted. */ + +KVM_ISA_EXT_SUBLIST_CONFIG (aia,AIA ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_f,FP_F ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_d,FP_D ); +KVM_ISA_EXT_SIMPLE_CONFIG (h,H ); +KVM_ISA_EXT_SUBLIST_CONFIG (smstateen,SMSTATEEN ); +KVM_ISA_EXT_SIMPLE_CONFIG (sstc,SSTC ); +KVM_ISA_EXT_SIMPLE_CONFIG (svinval,SVINVAL ); +KVM_ISA_EXT_SIMPLE_CONFIG (svnapot,SVNAPOT ); +KVM_ISA_EXT_SIMPLE_CONFIG (svpbmt,SVPBMT ); +KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicntr,ZICNTR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicond,ZICOND ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicsr,ZICSR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zifencei,ZIFENCEI ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihintpause,ZIHINTPAUSE ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihpm,ZIHPM );struct vcpu_reg_list *vcpu_configs[] = { - &h_config, - &zicbom_config, - &zicboz_config, - &svpbmt_config, - &sstc_config, - &svinval_config, - &zihintpause_config, - &zba_config, - &zbb_config, - &zbs_config, - &zicntr_config, - &zicond_config, - &zicsr_config, - &zifencei_config, - &zihpm_config, - &aia_config, - &smstateen_config, - &fp_f_config, - &fp_d_config, + &config_aia, + &config_fp_f, + &config_fp_d, + &config_h, + &config_smstateen, + &config_sstc, + &config_svinval, + &config_svnapot, + &config_svpbmt, + &config_zba, + &config_zbb, + &config_zbs, + &config_zicbom, + &config_zicboz, + &config_zicntr, + &config_zicond, + &config_zicsr, + &config_zifencei, + &config_zihintpause, + &config_zihpm, };int vcpu_configs_n =ARRAY_SIZE (vcpu_configs);Signature · 1 line
2.34.1
Anup Patel
maintainerRe: [PATCH 01/15] KVM: riscv: selftests: Generate ISA extension reg_list using macros
Quoted 11 lines · On Wed, Dec 13, 2023 at 9:22?PM Andrew Jones <[email protected]> wrote:
Quoted 8 lines · Anup Patel
Various ISA extension
reg_listhave common pattern so let us generate these using macros.We define two macros for the above purpose:
1)KVM_ISA_EXT_SIMPLE_CONFIG- Macro to generatereg_listfor ISA extension without any additionalONE_REGregisters
2)KVM_ISA_EXT_SUBLIST_CONFIG- Macro to generatereg_listfor ISA extension with additionalONE_REGregisters
Quoted 3 lines
This patch also adds the missing config for svnapot.
Reviewed-by Andrew Jones <[email protected]>
Thanks Drew, I am queuing this one patch so that others can rebase on the RISC-V KVM queue. Other patches of this series, will have to wait for dependent patches to be merged by Palmer.
Queued this patch for Linux-6.8.
Regards,
Anup
Quoted 381 lines
Thanks,
drewQuoted 377 lines
Signed-off-by Anup Patel <[email protected]>--- .../selftests/kvm/riscv/get-reg-list.c | 331 ++++-------------- 1 file changed, 76 insertions(+), 255 deletions(-)tools/testing/selftests/kvm/riscv/get-reg-list.c +76
-256@@ -581,10 +581,6 @@ static __u64 base_skips_set[] = { KVM_REG_RISCV | KVM_REG_SIZE_U64 | KVM_REG_RISCV_TIMER | KVM_REG_RISCV_TIMER_REG(state), }; -static __u64 h_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_H , -}; -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_RISCV_ISA_EXT_ZICBOM ,@@ -595,54 +591,6 @@ static __u64 zicboz_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_ZICBOZ, }; -static __u64 svpbmt_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVPBMT , -}; - -static __u64 sstc_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SSTC , -}; - -static __u64 svinval_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVINVAL , -}; - -static __u64 zihintpause_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTPAUSE , -}; - -static __u64 zba_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA , -}; - -static __u64 zbb_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB , -}; - -static __u64 zbs_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS , -}; - -static __u64 zicntr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICNTR , -}; - -static __u64 zicond_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICOND , -}; - -static __u64 zicsr_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICSR , -}; - -static __u64 zifencei_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIFENCEI , -}; - -static __u64 zihpm_regs[] = { -KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHPM , -}; -static __u64 aia_regs[] = {KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (siselect),KVM_REG_RISCV |KVM_REG_SIZE_ULONG |KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (iprio1),@@ -733,221 +681,94 @@ static __u64 fp_d_regs[] = { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_D, }; -#define BASE_SUBLIST \ +#define SUBLIST_BASE \ {"base", .regs = base_regs, .regs_n = ARRAY_SIZE(base_regs), \ .skips_set = base_skips_set, .skips_set_n = ARRAY_SIZE(base_skips_set),} -#define H_REGS_SUBLIST \ - {"h", .feature = KVM_RISCV_ISA_EXT_H, .regs = h_regs, .regs_n = ARRAY_SIZE(h_regs),} -#define ZICBOM_REGS_SUBLIST \ +#define SUBLIST_ZICBOM \ {"zicbom", .feature = KVM_RISCV_ISA_EXT_ZICBOM, .regs = zicbom_regs, .regs_n = ARRAY_SIZE(zicbom_regs),} -#define ZICBOZ_REGS_SUBLIST \ +#define SUBLIST_ZICBOZ \ {"zicboz", .feature = KVM_RISCV_ISA_EXT_ZICBOZ, .regs = zicboz_regs, .regs_n = ARRAY_SIZE(zicboz_regs),} -#define SVPBMT_REGS_SUBLIST \ - {"svpbmt", .feature = KVM_RISCV_ISA_EXT_SVPBMT, .regs = svpbmt_regs, .regs_n = ARRAY_SIZE(svpbmt_regs),} -#define SSTC_REGS_SUBLIST \ - {"sstc", .feature = KVM_RISCV_ISA_EXT_SSTC, .regs = sstc_regs, .regs_n = ARRAY_SIZE(sstc_regs),} -#define SVINVAL_REGS_SUBLIST \ - {"svinval", .feature = KVM_RISCV_ISA_EXT_SVINVAL, .regs = svinval_regs, .regs_n = ARRAY_SIZE(svinval_regs),} -#define ZIHINTPAUSE_REGS_SUBLIST \ - {"zihintpause", .feature = KVM_RISCV_ISA_EXT_ZIHINTPAUSE, .regs = zihintpause_regs, .regs_n = ARRAY_SIZE(zihintpause_regs),} -#define ZBA_REGS_SUBLIST \ - {"zba", .feature = KVM_RISCV_ISA_EXT_ZBA, .regs = zba_regs, .regs_n = ARRAY_SIZE(zba_regs),} -#define ZBB_REGS_SUBLIST \ - {"zbb", .feature = KVM_RISCV_ISA_EXT_ZBB, .regs = zbb_regs, .regs_n = ARRAY_SIZE(zbb_regs),} -#define ZBS_REGS_SUBLIST \ - {"zbs", .feature = KVM_RISCV_ISA_EXT_ZBS, .regs = zbs_regs, .regs_n = ARRAY_SIZE(zbs_regs),} -#define ZICNTR_REGS_SUBLIST \ - {"zicntr", .feature = KVM_RISCV_ISA_EXT_ZICNTR, .regs = zicntr_regs, .regs_n = ARRAY_SIZE(zicntr_regs),} -#define ZICOND_REGS_SUBLIST \ - {"zicond", .feature = KVM_RISCV_ISA_EXT_ZICOND, .regs = zicond_regs, .regs_n = ARRAY_SIZE(zicond_regs),} -#define ZICSR_REGS_SUBLIST \ - {"zicsr", .feature = KVM_RISCV_ISA_EXT_ZICSR, .regs = zicsr_regs, .regs_n = ARRAY_SIZE(zicsr_regs),} -#define ZIFENCEI_REGS_SUBLIST \ - {"zifencei", .feature = KVM_RISCV_ISA_EXT_ZIFENCEI, .regs = zifencei_regs, .regs_n = ARRAY_SIZE(zifencei_regs),} -#define ZIHPM_REGS_SUBLIST \ - {"zihpm", .feature = KVM_RISCV_ISA_EXT_ZIHPM, .regs = zihpm_regs, .regs_n = ARRAY_SIZE(zihpm_regs),} -#define AIA_REGS_SUBLIST \ +#define SUBLIST_AIA \ {"aia", .feature = KVM_RISCV_ISA_EXT_SSAIA, .regs = aia_regs, .regs_n = ARRAY_SIZE(aia_regs),} -#define SMSTATEEN_REGS_SUBLIST \ +#define SUBLIST_SMSTATEEN \ {"smstateen", .feature = KVM_RISCV_ISA_EXT_SMSTATEEN, .regs = smstateen_regs, .regs_n = ARRAY_SIZE(smstateen_regs),} -#define FP_F_REGS_SUBLIST \ +#define SUBLIST_FP_F \ {"fp_f", .feature = KVM_RISCV_ISA_EXT_F, .regs = fp_f_regs, \ .regs_n = ARRAY_SIZE(fp_f_regs),} -#define FP_D_REGS_SUBLIST \ +#define SUBLIST_FP_D \ {"fp_d", .feature = KVM_RISCV_ISA_EXT_D, .regs = fp_d_regs, \ .regs_n = ARRAY_SIZE(fp_d_regs),} -static struct vcpu_reg_list h_config = { - .sublists = { -BASE_SUBLIST , -H_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicbom_config = { - .sublists = { -BASE_SUBLIST , -ZICBOM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicboz_config = { - .sublists = { -BASE_SUBLIST , -ZICBOZ_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svpbmt_config = { - .sublists = { -BASE_SUBLIST , -SVPBMT_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list sstc_config = { - .sublists = { -BASE_SUBLIST , -SSTC_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list svinval_config = { - .sublists = { -BASE_SUBLIST , -SVINVAL_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihintpause_config = { - .sublists = { -BASE_SUBLIST , -ZIHINTPAUSE_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zba_config = { - .sublists = { -BASE_SUBLIST , -ZBA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbb_config = { - .sublists = { -BASE_SUBLIST , -ZBB_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zbs_config = { - .sublists = { -BASE_SUBLIST , -ZBS_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicntr_config = { - .sublists = { -BASE_SUBLIST , -ZICNTR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicond_config = { - .sublists = { -BASE_SUBLIST , -ZICOND_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zicsr_config = { - .sublists = { -BASE_SUBLIST , -ZICSR_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zifencei_config = { - .sublists = { -BASE_SUBLIST , -ZIFENCEI_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list zihpm_config = { - .sublists = { -BASE_SUBLIST , -ZIHPM_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list aia_config = { - .sublists = { -BASE_SUBLIST , -AIA_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list smstateen_config = { - .sublists = { -BASE_SUBLIST , -SMSTATEEN_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_f_config = { - .sublists = { -BASE_SUBLIST , -FP_F_REGS_SUBLIST , - {0 }, - }, -}; - -static struct vcpu_reg_list fp_d_config = { - .sublists = { -BASE_SUBLIST , -FP_D_REGS_SUBLIST , - {0 }, - }, -}; +#define KVM_ISA_EXT_SIMPLE_CONFIG (ext, extu) \ +static __u64 regs_##ext[] = { \ + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | \ + KVM_REG_RISCV_ISA_EXT | KVM_RISCV_ISA_EXT_##extu, \ +}; \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + { \ + .name = #ext, \ + .feature = KVM_RISCV_ISA_EXT_##extu, \ + .regs = regs_##ext, \ + .regs_n = ARRAY_SIZE(regs_##ext), \ + }, \ + {0}, \ + }, \ +} \ + +#define KVM_ISA_EXT_SUBLIST_CONFIG (ext, extu) \ +static struct vcpu_reg_list config_##ext = { \ + .sublists = { \ + SUBLIST_BASE, \ + SUBLIST_##extu, \ + {0}, \ + }, \ +} \ + +/* Note: The below list is alphabetically sorted. */ + +KVM_ISA_EXT_SUBLIST_CONFIG (aia,AIA ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_f,FP_F ); +KVM_ISA_EXT_SUBLIST_CONFIG (fp_d,FP_D ); +KVM_ISA_EXT_SIMPLE_CONFIG (h,H ); +KVM_ISA_EXT_SUBLIST_CONFIG (smstateen,SMSTATEEN ); +KVM_ISA_EXT_SIMPLE_CONFIG (sstc,SSTC ); +KVM_ISA_EXT_SIMPLE_CONFIG (svinval,SVINVAL ); +KVM_ISA_EXT_SIMPLE_CONFIG (svnapot,SVNAPOT ); +KVM_ISA_EXT_SIMPLE_CONFIG (svpbmt,SVPBMT ); +KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM ); +KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicntr,ZICNTR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicond,ZICOND ); +KVM_ISA_EXT_SIMPLE_CONFIG (zicsr,ZICSR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zifencei,ZIFENCEI ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihintpause,ZIHINTPAUSE ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihpm,ZIHPM );struct vcpu_reg_list *vcpu_configs[] = { - &h_config, - &zicbom_config, - &zicboz_config, - &svpbmt_config, - &sstc_config, - &svinval_config, - &zihintpause_config, - &zba_config, - &zbb_config, - &zbs_config, - &zicntr_config, - &zicond_config, - &zicsr_config, - &zifencei_config, - &zihpm_config, - &aia_config, - &smstateen_config, - &fp_f_config, - &fp_d_config, + &config_aia, + &config_fp_f, + &config_fp_d, + &config_h, + &config_smstateen, + &config_sstc, + &config_svinval, + &config_svnapot, + &config_svpbmt, + &config_zba, + &config_zbb, + &config_zbs, + &config_zicbom, + &config_zicboz, + &config_zicntr, + &config_zicond, + &config_zicsr, + &config_zifencei, + &config_zihintpause, + &config_zihpm, };int vcpu_configs_n =ARRAY_SIZE (vcpu_configs); --2.34.1
PATCH 2/15 RISC-V: KVM: Allow Zbc extension for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable Zbc extension for Guest/VM.
--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +1 -0
@@ -139,6 +139,7 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZIHPM ,KVM_RISCV_ISA_EXT_SMSTATEEN ,KVM_RISCV_ISA_EXT_ZICOND , +KVM_RISCV_ISA_EXT_ZBC , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +2 -0
@@ -42,6 +42,7 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (SVPBMT ),KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ), +KVM_ISA_EXT_ARR (ZBC ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),
@@ -92,6 +93,7 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_SVNAPOT :case KVM_RISCV_ISA_EXT_ZBA :case KVM_RISCV_ISA_EXT_ZBB : +case KVM_RISCV_ISA_EXT_ZBC :case KVM_RISCV_ISA_EXT_ZBS :case KVM_RISCV_ISA_EXT_ZICNTR :case KVM_RISCV_ISA_EXT_ZICOND :
Signature · 1 line
2.34.1
Re: [PATCH 02/15] RISC-V: KVM: Allow Zbc extension for Guest/VM
Quoted 44 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable Zbc extension for Guest/VM.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)arch/riscv/include/uapi/asm/kvm.h +1
-0@@ -139,6 +139,7 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZIHPM ,KVM_RISCV_ISA_EXT_SMSTATEEN ,KVM_RISCV_ISA_EXT_ZICOND , +KVM_RISCV_ISA_EXT_ZBC , KVM_RISCV_ISA_EXT_MAX, };arch/riscv/kvm/vcpu_onereg.c +2
-0@@ -42,6 +42,7 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (SVPBMT ),KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ), +KVM_ISA_EXT_ARR (ZBC ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),@@ -92,6 +93,7 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_SVNAPOT :case KVM_RISCV_ISA_EXT_ZBA :case KVM_RISCV_ISA_EXT_ZBB : +case KVM_RISCV_ISA_EXT_ZBC :case KVM_RISCV_ISA_EXT_ZBS :case KVM_RISCV_ISA_EXT_ZICNTR :case KVM_RISCV_ISA_EXT_ZICOND :Signature · 1 line
2.34.1
PATCH 3/15 KVM: riscv: selftests: Add Zbc extension to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows Zbc extension for Guest/VM so let us add this extension to get-reg-list test.
--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +4 -0
@@ -44,6 +44,7 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVPBMT :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBC :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOM :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOZ :
@@ -361,6 +362,7 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (SVPBMT ),KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ), +KVM_ISA_EXT_ARR (ZBC ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),
@@ -739,6 +741,7 @@ KVM_ISA_EXT_SIMPLE_CONFIG(svnapot, SVNAPOT);KVM_ISA_EXT_SIMPLE_CONFIG (svpbmt,SVPBMT );KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA );KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbc,ZBC );KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS );KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM );KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ );
@@ -761,6 +764,7 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_svpbmt, &config_zba, &config_zbb, + &config_zbc, &config_zbs, &config_zicbom, &config_zicboz,
Signature · 1 line
2.34.1
Re: [PATCH 03/15] KVM: riscv: selftests: Add Zbc extension to get-reg-list test
Quoted 13 lines · Anup Patel
The KVM RISC-V allows Zbc extension for Guest/VM so let us add this extension to get-reg-list test.
Signed-off-by Anup Patel <[email protected]>--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)tools/testing/selftests/kvm/riscv/get-reg-list.c +0
-0
tools/testing/selftests/kvm/riscv/get-reg-list.c bool filter_reg(__u64 reg) · line 47
Quoted 4 lines
tools/testing/selftests/kvm/riscv/get-reg-list.c +1
-0@@ -44,6 +44,7 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_SVPBMT :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBC :
Assuming this gets rebased on [1] then this line becomes
case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT_ZBC:
[1] https://lore.kernel.org/linux-riscv/20231213170951.93453-8-ajones at ventanamicro.com/
Quoted 30 lines
tools/testing/selftests/kvm/riscv/get-reg-list.c +3
-0case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOM :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOZ :@@ -361,6 +362,7 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (SVPBMT ),KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ), +KVM_ISA_EXT_ARR (ZBC ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),@@ -739,6 +741,7 @@ KVM_ISA_EXT_SIMPLE_CONFIG(svnapot, SVNAPOT);KVM_ISA_EXT_SIMPLE_CONFIG (svpbmt,SVPBMT );KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA );KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbc,ZBC );KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS );KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM );KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ );@@ -761,6 +764,7 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_svpbmt, &config_zba, &config_zbb, + &config_zbc, &config_zbs, &config_zicbom, &config_zicboz,Signature · 1 line
2.34.1
PATCH 4/15 RISC-V: KVM: Allow scalar crypto extensions for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable scalar crypto extensions for Guest/VM. This includes extensions Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zkr, Zksed, Zksh, and Zkt.
--- arch/riscv/include/uapi/asm/kvm.h | 10 ++++++++++ arch/riscv/kvm/vcpu_onereg.c | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +10 -0
@@ -140,6 +140,16 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_SMSTATEEN ,KVM_RISCV_ISA_EXT_ZICOND ,KVM_RISCV_ISA_EXT_ZBC , +KVM_RISCV_ISA_EXT_ZBKB , +KVM_RISCV_ISA_EXT_ZBKC , +KVM_RISCV_ISA_EXT_ZBKX , +KVM_RISCV_ISA_EXT_ZKND , +KVM_RISCV_ISA_EXT_ZKNE , +KVM_RISCV_ISA_EXT_ZKNH , +KVM_RISCV_ISA_EXT_ZKR , +KVM_RISCV_ISA_EXT_ZKSED , +KVM_RISCV_ISA_EXT_ZKSH , +KVM_RISCV_ISA_EXT_ZKT , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +20 -0
@@ -43,6 +43,9 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ),KVM_ISA_EXT_ARR (ZBC ), +KVM_ISA_EXT_ARR (ZBKB ), +KVM_ISA_EXT_ARR (ZBKC ), +KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),
@@ -52,6 +55,13 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZIFENCEI ),KVM_ISA_EXT_ARR (ZIHINTPAUSE ),KVM_ISA_EXT_ARR (ZIHPM ), +KVM_ISA_EXT_ARR (ZKND ), +KVM_ISA_EXT_ARR (ZKNE ), +KVM_ISA_EXT_ARR (ZKNH ), +KVM_ISA_EXT_ARR (ZKR ), +KVM_ISA_EXT_ARR (ZKSED ), +KVM_ISA_EXT_ARR (ZKSH ), + KVM_ISA_EXT_ARR(ZKT), };static unsigned long kvm_riscv_vcpu_base2isa_ext (unsigned long base_ext)
@@ -94,6 +104,9 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZBA :case KVM_RISCV_ISA_EXT_ZBB :case KVM_RISCV_ISA_EXT_ZBC : +case KVM_RISCV_ISA_EXT_ZBKB : +case KVM_RISCV_ISA_EXT_ZBKC : +case KVM_RISCV_ISA_EXT_ZBKX :case KVM_RISCV_ISA_EXT_ZBS :case KVM_RISCV_ISA_EXT_ZICNTR :case KVM_RISCV_ISA_EXT_ZICOND :
@@ -101,6 +114,13 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZIFENCEI :case KVM_RISCV_ISA_EXT_ZIHINTPAUSE :case KVM_RISCV_ISA_EXT_ZIHPM : +case KVM_RISCV_ISA_EXT_ZKND : +case KVM_RISCV_ISA_EXT_ZKNE : +case KVM_RISCV_ISA_EXT_ZKNH : +case KVM_RISCV_ISA_EXT_ZKR : +case KVM_RISCV_ISA_EXT_ZKSED : +case KVM_RISCV_ISA_EXT_ZKSH : +case KVM_RISCV_ISA_EXT_ZKT :return false;/* Extensions which can be disabled using Smstateen */ case KVM_RISCV_ISA_EXT_SSAIA :
Signature · 1 line
2.34.1
Re: [PATCH 04/15] RISC-V: KVM: Allow scalar crypto extensions for Guest/VM
Quoted 87 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable scalar crypto extensions for Guest/VM. This includes extensions Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zkr, Zksed, Zksh, and Zkt.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 10 ++++++++++ arch/riscv/kvm/vcpu_onereg.c | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+)arch/riscv/include/uapi/asm/kvm.h +10
-0@@ -140,6 +140,16 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_SMSTATEEN ,KVM_RISCV_ISA_EXT_ZICOND ,KVM_RISCV_ISA_EXT_ZBC , +KVM_RISCV_ISA_EXT_ZBKB , +KVM_RISCV_ISA_EXT_ZBKC , +KVM_RISCV_ISA_EXT_ZBKX , +KVM_RISCV_ISA_EXT_ZKND , +KVM_RISCV_ISA_EXT_ZKNE , +KVM_RISCV_ISA_EXT_ZKNH , +KVM_RISCV_ISA_EXT_ZKR , +KVM_RISCV_ISA_EXT_ZKSED , +KVM_RISCV_ISA_EXT_ZKSH , +KVM_RISCV_ISA_EXT_ZKT , KVM_RISCV_ISA_EXT_MAX, };arch/riscv/kvm/vcpu_onereg.c +20
-0@@ -43,6 +43,9 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ),KVM_ISA_EXT_ARR (ZBC ), +KVM_ISA_EXT_ARR (ZBKB ), +KVM_ISA_EXT_ARR (ZBKC ), +KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),@@ -52,6 +55,13 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZIFENCEI ),KVM_ISA_EXT_ARR (ZIHINTPAUSE ),KVM_ISA_EXT_ARR (ZIHPM ), +KVM_ISA_EXT_ARR (ZKND ), +KVM_ISA_EXT_ARR (ZKNE ), +KVM_ISA_EXT_ARR (ZKNH ), +KVM_ISA_EXT_ARR (ZKR ), +KVM_ISA_EXT_ARR (ZKSED ), +KVM_ISA_EXT_ARR (ZKSH ), + KVM_ISA_EXT_ARR(ZKT), };static unsigned long kvm_riscv_vcpu_base2isa_ext (unsigned long base_ext)@@ -94,6 +104,9 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZBA :case KVM_RISCV_ISA_EXT_ZBB :case KVM_RISCV_ISA_EXT_ZBC : +case KVM_RISCV_ISA_EXT_ZBKB : +case KVM_RISCV_ISA_EXT_ZBKC : +case KVM_RISCV_ISA_EXT_ZBKX :case KVM_RISCV_ISA_EXT_ZBS :case KVM_RISCV_ISA_EXT_ZICNTR :case KVM_RISCV_ISA_EXT_ZICOND :@@ -101,6 +114,13 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZIFENCEI :case KVM_RISCV_ISA_EXT_ZIHINTPAUSE :case KVM_RISCV_ISA_EXT_ZIHPM : +case KVM_RISCV_ISA_EXT_ZKND : +case KVM_RISCV_ISA_EXT_ZKNE : +case KVM_RISCV_ISA_EXT_ZKNH : +case KVM_RISCV_ISA_EXT_ZKR : +case KVM_RISCV_ISA_EXT_ZKSED : +case KVM_RISCV_ISA_EXT_ZKSH : +case KVM_RISCV_ISA_EXT_ZKT :return false;/* Extensions which can be disabled using Smstateen */ case KVM_RISCV_ISA_EXT_SSAIA :Signature · 1 line
2.34.1
PATCH 5/15 KVM: riscv: selftests: Add scaler crypto extensions to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows scaler crypto extensions for Guest/VM so let us add these extensions to get-reg-list test. This includes extensions Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zkr, Zksed, Zksh, and Zkt.
--- .../selftests/kvm/riscv/get-reg-list.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +40 -0
@@ -45,6 +45,9 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBA :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBB :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBC : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKC : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKX :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOM :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOZ :
@@ -54,6 +57,13 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIFENCEI :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTPAUSE :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHPM : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKND : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKNE : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKNH : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKR : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKSED : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKSH : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKT :return true;/* AIA registers are always available when Ssaia can't be disabled */ case KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (siselect):
@@ -363,6 +373,9 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZBA ),KVM_ISA_EXT_ARR (ZBB ),KVM_ISA_EXT_ARR (ZBC ), +KVM_ISA_EXT_ARR (ZBKB ), +KVM_ISA_EXT_ARR (ZBKC ), +KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ),KVM_ISA_EXT_ARR (ZICBOM ), KVM_ISA_EXT_ARR(ZICBOZ),
@@ -372,6 +385,13 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZIFENCEI ),KVM_ISA_EXT_ARR (ZIHINTPAUSE ),KVM_ISA_EXT_ARR (ZIHPM ), +KVM_ISA_EXT_ARR (ZKND ), +KVM_ISA_EXT_ARR (ZKNE ), +KVM_ISA_EXT_ARR (ZKNH ), +KVM_ISA_EXT_ARR (ZKR ), +KVM_ISA_EXT_ARR (ZKSED ), +KVM_ISA_EXT_ARR (ZKSH ), + KVM_ISA_EXT_ARR(ZKT), };if (reg_off >=ARRAY_SIZE (kvm_isa_ext_reg_name))
@@ -742,6 +762,9 @@ KVM_ISA_EXT_SIMPLE_CONFIG(svpbmt, SVPBMT);KVM_ISA_EXT_SIMPLE_CONFIG (zba,ZBA );KVM_ISA_EXT_SIMPLE_CONFIG (zbb,ZBB );KVM_ISA_EXT_SIMPLE_CONFIG (zbc,ZBC ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbkb,ZBKB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbkc,ZBKC ); +KVM_ISA_EXT_SIMPLE_CONFIG (zbkx,ZBKX );KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS );KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM );KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ );
@@ -751,6 +774,13 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zicsr, ZICSR);KVM_ISA_EXT_SIMPLE_CONFIG (zifencei,ZIFENCEI );KVM_ISA_EXT_SIMPLE_CONFIG (zihintpause,ZIHINTPAUSE );KVM_ISA_EXT_SIMPLE_CONFIG (zihpm,ZIHPM ); +KVM_ISA_EXT_SIMPLE_CONFIG (zknd,ZKND ); +KVM_ISA_EXT_SIMPLE_CONFIG (zkne,ZKNE ); +KVM_ISA_EXT_SIMPLE_CONFIG (zknh,ZKNH ); +KVM_ISA_EXT_SIMPLE_CONFIG (zkr,ZKR ); +KVM_ISA_EXT_SIMPLE_CONFIG (zksed,ZKSED ); +KVM_ISA_EXT_SIMPLE_CONFIG (zksh,ZKSH ); +KVM_ISA_EXT_SIMPLE_CONFIG (zkt,ZKT );struct vcpu_reg_list *vcpu_configs[] = { &config_aia,
@@ -765,6 +795,9 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zba, &config_zbb, &config_zbc, + &config_zbkb, + &config_zbkc, + &config_zbkx, &config_zbs, &config_zicbom, &config_zicboz,
@@ -774,5 +807,12 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zifencei, &config_zihintpause, &config_zihpm, + &config_zknd, + &config_zkne, + &config_zknh, + &config_zkr, + &config_zksed, + &config_zksh, + &config_zkt, };int vcpu_configs_n =ARRAY_SIZE (vcpu_configs);
Signature · 1 line
2.34.1
Re: [PATCH 05/15] KVM: riscv: selftests: Add scaler crypto extensions to get-reg-list test
Quoted 8 lines · Anup Patel
The KVM RISC-V allows scaler crypto extensions for Guest/VM so let us add these extensions to get-reg-list test. This includes extensions Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zkr, Zksed, Zksh, and Zkt.
Signed-off-by Anup Patel <[email protected]>--- .../selftests/kvm/riscv/get-reg-list.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
PATCH 6/15 RISC-V: KVM: Allow vector crypto extensions for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable vector crypto extensions for Guest/VM. This includes extensions Zvbb, Zvbc, Zvkb, Zvkg, Zvkned, Zvknha, Zvknhb, Zvksed, Zvksh, and Zvkt.
--- arch/riscv/include/uapi/asm/kvm.h | 10 ++++++++++ arch/riscv/kvm/vcpu_onereg.c | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +10 -0
@@ -150,6 +150,16 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZKSED ,KVM_RISCV_ISA_EXT_ZKSH ,KVM_RISCV_ISA_EXT_ZKT , +KVM_RISCV_ISA_EXT_ZVBB , +KVM_RISCV_ISA_EXT_ZVBC , +KVM_RISCV_ISA_EXT_ZVKB , +KVM_RISCV_ISA_EXT_ZVKG , +KVM_RISCV_ISA_EXT_ZVKNED , +KVM_RISCV_ISA_EXT_ZVKNHA , +KVM_RISCV_ISA_EXT_ZVKNHB , +KVM_RISCV_ISA_EXT_ZVKSED , +KVM_RISCV_ISA_EXT_ZVKSH , +KVM_RISCV_ISA_EXT_ZVKT , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +20 -0
@@ -62,6 +62,16 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZKSED ),KVM_ISA_EXT_ARR (ZKSH ),KVM_ISA_EXT_ARR (ZKT ), +KVM_ISA_EXT_ARR (ZVBB ), +KVM_ISA_EXT_ARR (ZVBC ), +KVM_ISA_EXT_ARR (ZVKB ), +KVM_ISA_EXT_ARR (ZVKG ), +KVM_ISA_EXT_ARR (ZVKNED ), +KVM_ISA_EXT_ARR (ZVKNHA ), +KVM_ISA_EXT_ARR (ZVKNHB ), +KVM_ISA_EXT_ARR (ZVKSED ), +KVM_ISA_EXT_ARR (ZVKSH ), + KVM_ISA_EXT_ARR(ZVKT), };static unsigned long kvm_riscv_vcpu_base2isa_ext (unsigned long base_ext)
@@ -121,6 +131,16 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZKSED :case KVM_RISCV_ISA_EXT_ZKSH :case KVM_RISCV_ISA_EXT_ZKT : +case KVM_RISCV_ISA_EXT_ZVBB : +case KVM_RISCV_ISA_EXT_ZVBC : +case KVM_RISCV_ISA_EXT_ZVKB : +case KVM_RISCV_ISA_EXT_ZVKG : +case KVM_RISCV_ISA_EXT_ZVKNED : +case KVM_RISCV_ISA_EXT_ZVKNHA : +case KVM_RISCV_ISA_EXT_ZVKNHB : +case KVM_RISCV_ISA_EXT_ZVKSED : +case KVM_RISCV_ISA_EXT_ZVKSH : +case KVM_RISCV_ISA_EXT_ZVKT :return false;/* Extensions which can be disabled using Smstateen */ case KVM_RISCV_ISA_EXT_SSAIA :
Signature · 1 line
2.34.1
Re: [PATCH 06/15] RISC-V: KVM: Allow vector crypto extensions for Guest/VM
Quoted 11 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable vector crypto extensions for Guest/VM. This includes extensions Zvbb, Zvbc, Zvkb, Zvkg, Zvkned, Zvknha, Zvknhb, Zvksed, Zvksh, and Zvkt.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 10 ++++++++++ arch/riscv/kvm/vcpu_onereg.c | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+)
PATCH 7/15 KVM: riscv: selftests: Add vector crypto extensions to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows vector crypto extensions for Guest/VM so let us add these extensions to get-reg-list test. This includes extensions Zvbb, Zvbc, Zvkb, Zvkg, Zvkned, Zvknha, Zvknhb, Zvksed, Zvksh, and Zvkt.
--- .../selftests/kvm/riscv/get-reg-list.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +40 -0
@@ -64,6 +64,16 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKSED :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKSH :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKT : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVBB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVBC : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKG : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKNED : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKNHA : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKNHB : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKSED : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKSH : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKT :return true;/* AIA registers are always available when Ssaia can't be disabled */ case KVM_REG_RISCV_CSR |KVM_REG_RISCV_CSR_AIA |KVM_REG_RISCV_CSR_AIA_REG (siselect):
@@ -392,6 +402,16 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZKSED ),KVM_ISA_EXT_ARR (ZKSH ),KVM_ISA_EXT_ARR (ZKT ), +KVM_ISA_EXT_ARR (ZVBB ), +KVM_ISA_EXT_ARR (ZVBC ), +KVM_ISA_EXT_ARR (ZVKB ), +KVM_ISA_EXT_ARR (ZVKG ), +KVM_ISA_EXT_ARR (ZVKNED ), +KVM_ISA_EXT_ARR (ZVKNHA ), +KVM_ISA_EXT_ARR (ZVKNHB ), +KVM_ISA_EXT_ARR (ZVKSED ), +KVM_ISA_EXT_ARR (ZVKSH ), + KVM_ISA_EXT_ARR(ZVKT), };if (reg_off >=ARRAY_SIZE (kvm_isa_ext_reg_name))
@@ -781,6 +801,16 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zkr, ZKR);KVM_ISA_EXT_SIMPLE_CONFIG (zksed,ZKSED );KVM_ISA_EXT_SIMPLE_CONFIG (zksh,ZKSH );KVM_ISA_EXT_SIMPLE_CONFIG (zkt,ZKT ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvbb,ZVBB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvbc,ZVBC ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvkb,ZVKB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvkg,ZVKG ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvkned,ZVKNED ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvknha,ZVKNHA ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvknhb,ZVKNHB ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvksed,ZVKSED ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvksh,ZVKSH ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvkt,ZVKT );struct vcpu_reg_list *vcpu_configs[] = { &config_aia,
@@ -814,5 +844,15 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zksed, &config_zksh, &config_zkt, + &config_zvbb, + &config_zvbc, + &config_zvkb, + &config_zvkg, + &config_zvkned, + &config_zvknha, + &config_zvknhb, + &config_zvksed, + &config_zvksh, + &config_zvkt, };int vcpu_configs_n =ARRAY_SIZE (vcpu_configs);
Signature · 1 line
2.34.1
Re: [PATCH 07/15] KVM: riscv: selftests: Add vector crypto extensions to get-reg-list test
Quoted 9 lines · Anup Patel
The KVM RISC-V allows vector crypto extensions for Guest/VM so let us add these extensions to get-reg-list test. This includes extensions Zvbb, Zvbc, Zvkb, Zvkg, Zvkned, Zvknha, Zvknhb, Zvksed, Zvksh, and Zvkt.
Signed-off-by Anup Patel <[email protected]>--- .../selftests/kvm/riscv/get-reg-list.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
PATCH 8/15 RISC-V: KVM: Allow Zfh[min] extensions for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable Zfh[min] extensions for Guest/VM.
--- arch/riscv/include/uapi/asm/kvm.h | 2 ++ arch/riscv/kvm/vcpu_onereg.c | 4 ++++ 2 files changed, 6 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +2 -0
@@ -160,6 +160,8 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZVKSED ,KVM_RISCV_ISA_EXT_ZVKSH ,KVM_RISCV_ISA_EXT_ZVKT , +KVM_RISCV_ISA_EXT_ZFH , +KVM_RISCV_ISA_EXT_ZFHMIN , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +4 -0
@@ -47,6 +47,8 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZBKC ),KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ), +KVM_ISA_EXT_ARR (ZFH ), +KVM_ISA_EXT_ARR (ZFHMIN ),KVM_ISA_EXT_ARR (ZICBOM ),KVM_ISA_EXT_ARR (ZICBOZ ), KVM_ISA_EXT_ARR(ZICNTR),
@@ -118,6 +120,8 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZBKC :case KVM_RISCV_ISA_EXT_ZBKX :case KVM_RISCV_ISA_EXT_ZBS : +case KVM_RISCV_ISA_EXT_ZFH : +case KVM_RISCV_ISA_EXT_ZFHMIN :case KVM_RISCV_ISA_EXT_ZICNTR :case KVM_RISCV_ISA_EXT_ZICOND :case KVM_RISCV_ISA_EXT_ZICSR :
Signature · 1 line
2.34.1
Re: [PATCH 08/15] RISC-V: KVM: Allow Zfh[min] extensions for Guest/VM
Quoted 9 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable Zfh[min] extensions for Guest/VM.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 2 ++ arch/riscv/kvm/vcpu_onereg.c | 4 ++++ 2 files changed, 6 insertions(+)
PATCH 9/15 KVM: riscv: selftests: Add Zfh[min] extensions to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows Zfh[min] extensions for Guest/VM so let us add these extensions to get-reg-list test.
--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 8 ++++++++ 1 file changed, 8 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +8 -0
@@ -49,6 +49,8 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKC :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKX :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZFH : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZFHMIN :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOM :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOZ :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICNTR :
@@ -387,6 +389,8 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZBKC ),KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ), +KVM_ISA_EXT_ARR (ZFH ), +KVM_ISA_EXT_ARR (ZFHMIN ),KVM_ISA_EXT_ARR (ZICBOM ),KVM_ISA_EXT_ARR (ZICBOZ ), KVM_ISA_EXT_ARR(ZICNTR),
@@ -786,6 +790,8 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zbkb, ZBKB);KVM_ISA_EXT_SIMPLE_CONFIG (zbkc,ZBKC );KVM_ISA_EXT_SIMPLE_CONFIG (zbkx,ZBKX );KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS ); +KVM_ISA_EXT_SIMPLE_CONFIG (zfh,ZFH ); +KVM_ISA_EXT_SIMPLE_CONFIG (zfhmin,ZFHMIN );KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM );KVM_ISA_EXT_SUBLIST_CONFIG (zicboz,ZICBOZ );KVM_ISA_EXT_SIMPLE_CONFIG (zicntr,ZICNTR );
@@ -829,6 +835,8 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zbkc, &config_zbkx, &config_zbs, + &config_zfh, + &config_zfhmin, &config_zicbom, &config_zicboz, &config_zicntr,
Signature · 1 line
2.34.1
Re: [PATCH 09/15] KVM: riscv: selftests: Add Zfh[min] extensions to get-reg-list test
Quoted 8 lines · Anup Patel
The KVM RISC-V allows Zfh[min] extensions for Guest/VM so let us add these extensions to get-reg-list test.
Signed-off-by Anup Patel <[email protected]>--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 8 ++++++++ 1 file changed, 8 insertions(+)
PATCH 10/15 RISC-V: KVM: Allow Zihintntl extension for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable Zihintntl extension for Guest/VM.
--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +1 -0
@@ -162,6 +162,7 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZVKT ,KVM_RISCV_ISA_EXT_ZFH ,KVM_RISCV_ISA_EXT_ZFHMIN , +KVM_RISCV_ISA_EXT_ZIHINTNTL , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +2 -0
@@ -55,6 +55,7 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZICOND ),KVM_ISA_EXT_ARR (ZICSR ),KVM_ISA_EXT_ARR (ZIFENCEI ), +KVM_ISA_EXT_ARR (ZIHINTNTL ),KVM_ISA_EXT_ARR (ZIHINTPAUSE ),KVM_ISA_EXT_ARR (ZIHPM ), KVM_ISA_EXT_ARR(ZKND),
@@ -126,6 +127,7 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZICOND :case KVM_RISCV_ISA_EXT_ZICSR :case KVM_RISCV_ISA_EXT_ZIFENCEI : +case KVM_RISCV_ISA_EXT_ZIHINTNTL :case KVM_RISCV_ISA_EXT_ZIHINTPAUSE :case KVM_RISCV_ISA_EXT_ZIHPM :case KVM_RISCV_ISA_EXT_ZKND :
Signature · 1 line
2.34.1
Re: [PATCH 10/15] RISC-V: KVM: Allow Zihintntl extension for Guest/VM
Quoted 9 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable Zihintntl extension for Guest/VM.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)
PATCH 11/15 KVM: riscv: selftests: Add Zihintntl extension to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows Zihintntl extension for Guest/VM so let us add this extension to get-reg-list test.
--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +4 -0
@@ -57,6 +57,7 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICOND :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICSR :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIFENCEI : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTNTL :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHINTPAUSE :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZIHPM :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKND :
@@ -397,6 +398,7 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZICOND ),KVM_ISA_EXT_ARR (ZICSR ),KVM_ISA_EXT_ARR (ZIFENCEI ), +KVM_ISA_EXT_ARR (ZIHINTNTL ),KVM_ISA_EXT_ARR (ZIHINTPAUSE ),KVM_ISA_EXT_ARR (ZIHPM ), KVM_ISA_EXT_ARR(ZKND),
@@ -798,6 +800,7 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zicntr, ZICNTR);KVM_ISA_EXT_SIMPLE_CONFIG (zicond,ZICOND );KVM_ISA_EXT_SIMPLE_CONFIG (zicsr,ZICSR );KVM_ISA_EXT_SIMPLE_CONFIG (zifencei,ZIFENCEI ); +KVM_ISA_EXT_SIMPLE_CONFIG (zihintntl,ZIHINTNTL );KVM_ISA_EXT_SIMPLE_CONFIG (zihintpause,ZIHINTPAUSE );KVM_ISA_EXT_SIMPLE_CONFIG (zihpm,ZIHPM );KVM_ISA_EXT_SIMPLE_CONFIG (zknd,ZKND );
@@ -843,6 +846,7 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zicond, &config_zicsr, &config_zifencei, + &config_zihintntl, &config_zihintpause, &config_zihpm, &config_zknd,
Signature · 1 line
2.34.1
Re: [PATCH 11/15] KVM: riscv: selftests: Add Zihintntl extension to get-reg-list test
Quoted 8 lines · Anup Patel
The KVM RISC-V allows Zihintntl extension for Guest/VM so let us add this extension to get-reg-list test.
Signed-off-by Anup Patel <[email protected]>--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)
PATCH 12/15 RISC-V: KVM: Allow Zvfh[min] extensions for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable Zvfh[min] extensions for Guest/VM.
--- arch/riscv/include/uapi/asm/kvm.h | 2 ++ arch/riscv/kvm/vcpu_onereg.c | 4 ++++ 2 files changed, 6 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +2 -0
@@ -163,6 +163,8 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZFH ,KVM_RISCV_ISA_EXT_ZFHMIN ,KVM_RISCV_ISA_EXT_ZIHINTNTL , +KVM_RISCV_ISA_EXT_ZVFH , +KVM_RISCV_ISA_EXT_ZVFHMIN , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +4 -0
@@ -67,6 +67,8 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZKT ),KVM_ISA_EXT_ARR (ZVBB ),KVM_ISA_EXT_ARR (ZVBC ), +KVM_ISA_EXT_ARR (ZVFH ), +KVM_ISA_EXT_ARR (ZVFHMIN ),KVM_ISA_EXT_ARR (ZVKB ),KVM_ISA_EXT_ARR (ZVKG ), KVM_ISA_EXT_ARR(ZVKNED),
@@ -139,6 +141,8 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZKT :case KVM_RISCV_ISA_EXT_ZVBB :case KVM_RISCV_ISA_EXT_ZVBC : +case KVM_RISCV_ISA_EXT_ZVFH : +case KVM_RISCV_ISA_EXT_ZVFHMIN :case KVM_RISCV_ISA_EXT_ZVKB :case KVM_RISCV_ISA_EXT_ZVKG :case KVM_RISCV_ISA_EXT_ZVKNED :
Signature · 1 line
2.34.1
Re: [PATCH 12/15] RISC-V: KVM: Allow Zvfh[min] extensions for Guest/VM
Quoted 9 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable Zvfh[min] extensions for Guest/VM.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 2 ++ arch/riscv/kvm/vcpu_onereg.c | 4 ++++ 2 files changed, 6 insertions(+)
PATCH 13/15 KVM: riscv: selftests: Add Zvfh[min] extensions to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows Zvfh[min] extensions for Guest/VM so let us add these extensions to get-reg-list test.
--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 8 ++++++++ 1 file changed, 8 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +8 -0
@@ -69,6 +69,8 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZKT :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVBB :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVBC : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVFH : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVFHMIN :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKB :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKG :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZVKNED :
@@ -410,6 +412,8 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZKT ),KVM_ISA_EXT_ARR (ZVBB ),KVM_ISA_EXT_ARR (ZVBC ), +KVM_ISA_EXT_ARR (ZVFH ), +KVM_ISA_EXT_ARR (ZVFHMIN ),KVM_ISA_EXT_ARR (ZVKB ),KVM_ISA_EXT_ARR (ZVKG ), KVM_ISA_EXT_ARR(ZVKNED),
@@ -812,6 +816,8 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zksh, ZKSH);KVM_ISA_EXT_SIMPLE_CONFIG (zkt,ZKT );KVM_ISA_EXT_SIMPLE_CONFIG (zvbb,ZVBB );KVM_ISA_EXT_SIMPLE_CONFIG (zvbc,ZVBC ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvfh,ZVFH ); +KVM_ISA_EXT_SIMPLE_CONFIG (zvfhmin,ZVFHMIN );KVM_ISA_EXT_SIMPLE_CONFIG (zvkb,ZVKB );KVM_ISA_EXT_SIMPLE_CONFIG (zvkg,ZVKG );KVM_ISA_EXT_SIMPLE_CONFIG (zvkned,ZVKNED );
@@ -858,6 +864,8 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zkt, &config_zvbb, &config_zvbc, + &config_zvfh, + &config_zvfhmin, &config_zvkb, &config_zvkg, &config_zvkned,
Signature · 1 line
2.34.1
Re: [PATCH 13/15] KVM: riscv: selftests: Add Zvfh[min] extensions to get-reg-list test
Quoted 8 lines · Anup Patel
The KVM RISC-V allows Zvfh[min] extensions for Guest/VM so let us add these extensions to get-reg-list test.
Signed-off-by Anup Patel <[email protected]>--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 8 ++++++++ 1 file changed, 8 insertions(+)
PATCH 14/15 RISC-V: KVM: Allow Zfa extension for Guest/VM
In reply to Anup PatelWe extend the KVM ISA extension ONE_REG interface to allow KVM user space to detect and enable Zfa extension for Guest/VM.
--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)
arch/riscv/include/uapi/asm/kvm.h +1 -0
@@ -165,6 +165,7 @@ enum KVM_RISCV_ISA_EXT_ID {KVM_RISCV_ISA_EXT_ZIHINTNTL ,KVM_RISCV_ISA_EXT_ZVFH ,KVM_RISCV_ISA_EXT_ZVFHMIN , +KVM_RISCV_ISA_EXT_ZFA , KVM_RISCV_ISA_EXT_MAX, };
arch/riscv/kvm/vcpu_onereg.c +2 -0
@@ -47,6 +47,7 @@ static const unsigned long kvm_isa_ext_arr[] = {KVM_ISA_EXT_ARR (ZBKC ),KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ), +KVM_ISA_EXT_ARR (ZFA ),KVM_ISA_EXT_ARR (ZFH ),KVM_ISA_EXT_ARR (ZFHMIN ), KVM_ISA_EXT_ARR(ZICBOM),
@@ -123,6 +124,7 @@ static bool kvm_riscv_vcpu_isa_disable_allowed(unsigned long ext)case KVM_RISCV_ISA_EXT_ZBKC :case KVM_RISCV_ISA_EXT_ZBKX :case KVM_RISCV_ISA_EXT_ZBS : +case KVM_RISCV_ISA_EXT_ZFA :case KVM_RISCV_ISA_EXT_ZFH :case KVM_RISCV_ISA_EXT_ZFHMIN :case KVM_RISCV_ISA_EXT_ZICNTR :
Signature · 1 line
2.34.1
Re: [PATCH 14/15] RISC-V: KVM: Allow Zfa extension for Guest/VM
Quoted 9 lines · Anup Patel
We extend the KVM ISA extension
ONE_REGinterface to allow KVM user space to detect and enable Zfa extension for Guest/VM.Signed-off-by Anup Patel <[email protected]>--- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu_onereg.c | 2 ++ 2 files changed, 3 insertions(+)
PATCH 15/15 KVM: riscv: selftests: Add Zfa extension to get-reg-list test
In reply to Anup PatelThe KVM RISC-V allows Zfa extension for Guest/VM so let us add this extension to get-reg-list test.
--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/testing/selftests/kvm/riscv/get-reg-list.c +4 -0
@@ -49,6 +49,7 @@ bool filter_reg(__u64 reg)case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKC :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBKX :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZBS : +case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZFA :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZFH :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZFHMIN :case KVM_REG_RISCV_ISA_EXT |KVM_RISCV_ISA_EXT_ZICBOM :
@@ -392,6 +393,7 @@ static const char *isa_ext_id_to_str(const char *prefix, __u64 id)KVM_ISA_EXT_ARR (ZBKC ),KVM_ISA_EXT_ARR (ZBKX ),KVM_ISA_EXT_ARR (ZBS ), +KVM_ISA_EXT_ARR (ZFA ),KVM_ISA_EXT_ARR (ZFH ),KVM_ISA_EXT_ARR (ZFHMIN ), KVM_ISA_EXT_ARR(ZICBOM),
@@ -796,6 +798,7 @@ KVM_ISA_EXT_SIMPLE_CONFIG(zbkb, ZBKB);KVM_ISA_EXT_SIMPLE_CONFIG (zbkc,ZBKC );KVM_ISA_EXT_SIMPLE_CONFIG (zbkx,ZBKX );KVM_ISA_EXT_SIMPLE_CONFIG (zbs,ZBS ); +KVM_ISA_EXT_SIMPLE_CONFIG (zfa,ZFA );KVM_ISA_EXT_SIMPLE_CONFIG (zfh,ZFH );KVM_ISA_EXT_SIMPLE_CONFIG (zfhmin,ZFHMIN );KVM_ISA_EXT_SUBLIST_CONFIG (zicbom,ZICBOM );
@@ -844,6 +847,7 @@ struct vcpu_reg_list *vcpu_configs[] = { &config_zbkc, &config_zbkx, &config_zbs, + &config_zfa, &config_zfh, &config_zfhmin, &config_zicbom,
Signature · 1 line
2.34.1
Re: [PATCH 15/15] KVM: riscv: selftests: Add Zfa extension to get-reg-list test
Quoted 8 lines · Anup Patel
The KVM RISC-V allows Zfa extension for Guest/VM so let us add this extension to get-reg-list test.
Signed-off-by Anup Patel <[email protected]>--- tools/testing/selftests/kvm/riscv/get-reg-list.c | 4 ++++ 1 file changed, 4 insertions(+)
Anup Patel
maintainerQuoted 25 lines · On Tue, Nov 28, 2023 at 8:24?PM Anup Patel <[email protected]> wrote:
This extends the KVM RISC-V
ONE_REGinterface to report more ISA extensions
namely: Zbz, scalar crypto, vector crypto, Zfh[min], Zihintntl, Zvfh[min], and Zfa.This series depends upon the "riscv: report more ISA extensions through hwprobe" series.from Clement.
(Link: https://lore.kernel.org/lkml/20231114141256.126749-1-cleger at rivosinc.com/)To test these patches, use KVMTOOL from the
riscv_more_exts_v1branch at:
https://github.com/avpatel/kvmtool.gitThese patches can also be found in the
riscv_kvm_more_exts_v1branch at:
https://github.com/avpatel/linux.gitAnup Patel (15):
KVM: riscv: selftests: Generate ISA extensionreg_listusing macros
RISC-V: KVM: Allow Zbc extension for Guest/VM
KVM: riscv: selftests: Add Zbc extension to get-reg-list test
RISC-V: KVM: Allow scalar crypto extensions for Guest/VM
KVM: riscv: selftests: Add scaler crypto extensions to get-reg-list
test
RISC-V: KVM: Allow vector crypto extensions for Guest/VM
KVM: riscv: selftests: Add vector crypto extensions to get-reg-list
test
Quoted 8 lines
RISC-V: KVM: Allow Zfh[min] extensions for Guest/VM
KVM: riscv: selftests: Add Zfh[min] extensions to get-reg-list test
RISC-V: KVM: Allow Zihintntl extension for Guest/VM
KVM: riscv: selftests: Add Zihintntl extension to get-reg-list test
RISC-V: KVM: Allow Zvfh[min] extensions for Guest/VM
KVM: riscv: selftests: Add Zvfh[min] extensions to get-reg-list test
RISC-V: KVM: Allow Zfa extension for Guest/VM
KVM: riscv: selftests: Add Zfa extension to get-reg-list test
The first PATCH is already merged in upstream Linux.
I have rebased and queued the remaining patches for Linux-6.8.
Regards,
Anup
Quoted 9 lines
arch/riscv/include/uapi/asm/kvm.h | 27 ++ arch/riscv/kvm/vcpu_onereg.c | 54 +++ .../selftests/kvm/riscv/get-reg-list.c | 439 ++++++++---------- 3 files changed, 265 insertions(+), 255 deletions(-)--
2.34.1