@@ -772,6 +772,12 @@ static u64 reset_mpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
772772 return mpidr ;
773773}
774774
775+ static unsigned int hidden_visibility (const struct kvm_vcpu * vcpu ,
776+ const struct sys_reg_desc * r )
777+ {
778+ return REG_HIDDEN ;
779+ }
780+
775781static unsigned int pmu_visibility (const struct kvm_vcpu * vcpu ,
776782 const struct sys_reg_desc * r )
777783{
@@ -2324,6 +2330,10 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
23242330 EL2_REG_FILTERED(name, acc, rst, v, el2_visibility)
23252331
23262332#define EL2_REG_VNCR (name , rst , v ) EL2_REG(name, bad_vncr_trap, rst, v)
2333+ #define EL2_REG_VNCR_FILT (name , vis ) \
2334+ EL2_REG_FILTERED(name, bad_vncr_trap, reset_val, 0, vis)
2335+ #define EL2_REG_VNCR_GICv3 (name ) \
2336+ EL2_REG_VNCR_FILT(name, hidden_visibility)
23272337#define EL2_REG_REDIR (name , rst , v ) EL2_REG(name, bad_redir_trap, rst, v)
23282338
23292339/*
@@ -3372,40 +3382,40 @@ static const struct sys_reg_desc sys_reg_descs[] = {
33723382 { SYS_DESC (SYS_RVBAR_EL2 ), undef_access },
33733383 { SYS_DESC (SYS_RMR_EL2 ), undef_access },
33743384
3375- EL2_REG_VNCR (ICH_AP0R0_EL2 , reset_val , 0 ),
3376- EL2_REG_VNCR (ICH_AP0R1_EL2 , reset_val , 0 ),
3377- EL2_REG_VNCR (ICH_AP0R2_EL2 , reset_val , 0 ),
3378- EL2_REG_VNCR (ICH_AP0R3_EL2 , reset_val , 0 ),
3379- EL2_REG_VNCR (ICH_AP1R0_EL2 , reset_val , 0 ),
3380- EL2_REG_VNCR (ICH_AP1R1_EL2 , reset_val , 0 ),
3381- EL2_REG_VNCR (ICH_AP1R2_EL2 , reset_val , 0 ),
3382- EL2_REG_VNCR (ICH_AP1R3_EL2 , reset_val , 0 ),
3385+ EL2_REG_VNCR_GICv3 (ICH_AP0R0_EL2 ),
3386+ EL2_REG_VNCR_GICv3 (ICH_AP0R1_EL2 ),
3387+ EL2_REG_VNCR_GICv3 (ICH_AP0R2_EL2 ),
3388+ EL2_REG_VNCR_GICv3 (ICH_AP0R3_EL2 ),
3389+ EL2_REG_VNCR_GICv3 (ICH_AP1R0_EL2 ),
3390+ EL2_REG_VNCR_GICv3 (ICH_AP1R1_EL2 ),
3391+ EL2_REG_VNCR_GICv3 (ICH_AP1R2_EL2 ),
3392+ EL2_REG_VNCR_GICv3 (ICH_AP1R3_EL2 ),
33833393
33843394 { SYS_DESC (SYS_ICC_SRE_EL2 ), access_gic_sre },
33853395
3386- EL2_REG_VNCR (ICH_HCR_EL2 , reset_val , 0 ),
3396+ EL2_REG_VNCR_GICv3 (ICH_HCR_EL2 ),
33873397 { SYS_DESC (SYS_ICH_VTR_EL2 ), access_gic_vtr },
33883398 { SYS_DESC (SYS_ICH_MISR_EL2 ), access_gic_misr },
33893399 { SYS_DESC (SYS_ICH_EISR_EL2 ), access_gic_eisr },
33903400 { SYS_DESC (SYS_ICH_ELRSR_EL2 ), access_gic_elrsr },
3391- EL2_REG_VNCR (ICH_VMCR_EL2 , reset_val , 0 ),
3392-
3393- EL2_REG_VNCR (ICH_LR0_EL2 , reset_val , 0 ),
3394- EL2_REG_VNCR (ICH_LR1_EL2 , reset_val , 0 ),
3395- EL2_REG_VNCR (ICH_LR2_EL2 , reset_val , 0 ),
3396- EL2_REG_VNCR (ICH_LR3_EL2 , reset_val , 0 ),
3397- EL2_REG_VNCR (ICH_LR4_EL2 , reset_val , 0 ),
3398- EL2_REG_VNCR (ICH_LR5_EL2 , reset_val , 0 ),
3399- EL2_REG_VNCR (ICH_LR6_EL2 , reset_val , 0 ),
3400- EL2_REG_VNCR (ICH_LR7_EL2 , reset_val , 0 ),
3401- EL2_REG_VNCR (ICH_LR8_EL2 , reset_val , 0 ),
3402- EL2_REG_VNCR (ICH_LR9_EL2 , reset_val , 0 ),
3403- EL2_REG_VNCR (ICH_LR10_EL2 , reset_val , 0 ),
3404- EL2_REG_VNCR (ICH_LR11_EL2 , reset_val , 0 ),
3405- EL2_REG_VNCR (ICH_LR12_EL2 , reset_val , 0 ),
3406- EL2_REG_VNCR (ICH_LR13_EL2 , reset_val , 0 ),
3407- EL2_REG_VNCR (ICH_LR14_EL2 , reset_val , 0 ),
3408- EL2_REG_VNCR (ICH_LR15_EL2 , reset_val , 0 ),
3401+ EL2_REG_VNCR_GICv3 (ICH_VMCR_EL2 ),
3402+
3403+ EL2_REG_VNCR_GICv3 (ICH_LR0_EL2 ),
3404+ EL2_REG_VNCR_GICv3 (ICH_LR1_EL2 ),
3405+ EL2_REG_VNCR_GICv3 (ICH_LR2_EL2 ),
3406+ EL2_REG_VNCR_GICv3 (ICH_LR3_EL2 ),
3407+ EL2_REG_VNCR_GICv3 (ICH_LR4_EL2 ),
3408+ EL2_REG_VNCR_GICv3 (ICH_LR5_EL2 ),
3409+ EL2_REG_VNCR_GICv3 (ICH_LR6_EL2 ),
3410+ EL2_REG_VNCR_GICv3 (ICH_LR7_EL2 ),
3411+ EL2_REG_VNCR_GICv3 (ICH_LR8_EL2 ),
3412+ EL2_REG_VNCR_GICv3 (ICH_LR9_EL2 ),
3413+ EL2_REG_VNCR_GICv3 (ICH_LR10_EL2 ),
3414+ EL2_REG_VNCR_GICv3 (ICH_LR11_EL2 ),
3415+ EL2_REG_VNCR_GICv3 (ICH_LR12_EL2 ),
3416+ EL2_REG_VNCR_GICv3 (ICH_LR13_EL2 ),
3417+ EL2_REG_VNCR_GICv3 (ICH_LR14_EL2 ),
3418+ EL2_REG_VNCR_GICv3 (ICH_LR15_EL2 ),
34093419
34103420 EL2_REG (CONTEXTIDR_EL2 , access_rw , reset_val , 0 ),
34113421 EL2_REG (TPIDR_EL2 , access_rw , reset_val , 0 ),
0 commit comments