Skip to content

Commit 21d29cd

Browse files
Marc Zyngieroupton
authored andcommitted
KVM: arm64: nv: Sanitise ICH_HCR_EL2 accesses
As ICH_HCR_EL2 is a VNCR accessor when runnintg NV, add some sanitising to what gets written. Crucially, mark TDIR as RES0 if the HW doesn't support it (unlikely, but hey...), as well as anything GICv4 related, since we only expose a GICv3 to the uest. Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20250225172930.1850838-8-maz@kernel.org Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
1 parent 96c2f03 commit 21d29cd

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

arch/arm64/kvm/nested.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,6 +1290,15 @@ int kvm_init_nv_sysregs(struct kvm_vcpu *vcpu)
12901290
res0 |= GENMASK(11, 8);
12911291
set_sysreg_masks(kvm, CNTHCTL_EL2, res0, res1);
12921292

1293+
/* ICH_HCR_EL2 */
1294+
res0 = ICH_HCR_EL2_RES0;
1295+
res1 = ICH_HCR_EL2_RES1;
1296+
if (!(kvm_vgic_global_state.ich_vtr_el2 & ICH_VTR_EL2_TDS))
1297+
res0 |= ICH_HCR_EL2_TDIR;
1298+
/* No GICv4 is presented to the guest */
1299+
res0 |= ICH_HCR_EL2_DVIM | ICH_HCR_EL2_vSGIEOICount;
1300+
set_sysreg_masks(kvm, ICH_HCR_EL2, res0, res1);
1301+
12931302
out:
12941303
for (enum vcpu_sysreg sr = __SANITISED_REG_START__; sr < NR_SYS_REGS; sr++)
12951304
(void)__vcpu_sys_reg(vcpu, sr);

0 commit comments

Comments
 (0)