Commit 70fd60bd authored by Marc Zyngier's avatar Marc Zyngier Committed by Oliver Upton
Browse files

KVM: arm64: GICv3: Set ICH_HCR_EL2.TDIR when interrupts overflow LR capacity



Now that we are ready to handle deactivation through ICV_DIR_EL1,
set the trap bit if we have active interrupts outside of the LRs.

Tested-by: default avatarFuad Tabba <tabba@google.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Tested-by: default avatarMark Brown <broonie@kernel.org>
Link: https://msgid.link/20251120172540.2267180-31-maz@kernel.org


Signed-off-by: default avatarOliver Upton <oupton@kernel.org>
parent 295b6921
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -45,6 +45,13 @@ void vgic_v3_configure_hcr(struct kvm_vcpu *vcpu,
		ICH_HCR_EL2_VGrp0DIE : ICH_HCR_EL2_VGrp0EIE;
	cpuif->vgic_hcr |= (cpuif->vgic_vmcr & ICH_VMCR_ENG1_MASK) ?
		ICH_HCR_EL2_VGrp1DIE : ICH_HCR_EL2_VGrp1EIE;

	/*
	 * Note that we set the trap irrespective of EOIMode, as that
	 * can change behind our back without any warning...
	 */
	if (irqs_active_outside_lrs(als))
		cpuif->vgic_hcr |= ICH_HCR_EL2_TDIR;
}

static bool lr_signals_eoi_mi(u64 lr_val)