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

KVM: arm64: Use MI to detect groups being enabled/disabled



Add the maintenance interrupt to force an exit when the guest
enables/disables individual groups, so that we can resort the
ap_list accordingly.

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-27-maz@kernel.org


Signed-off-by: default avatarOliver Upton <oupton@kernel.org>
parent 33c1f60b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,11 @@ void vgic_v2_configure_hcr(struct kvm_vcpu *vcpu,
		cpuif->vgic_hcr |= GICH_HCR_LRENPIE;
	if (irqs_outside_lrs(als))
		cpuif->vgic_hcr |= GICH_HCR_UIE;

	cpuif->vgic_hcr |= (cpuif->vgic_vmcr & GICH_VMCR_ENABLE_GRP0_MASK) ?
		GICH_HCR_VGrp0DIE : GICH_HCR_VGrp0EIE;
	cpuif->vgic_hcr |= (cpuif->vgic_vmcr & GICH_VMCR_ENABLE_GRP1_MASK) ?
		GICH_HCR_VGrp1DIE : GICH_HCR_VGrp1EIE;
}

static bool lr_signals_eoi_mi(u32 lr_val)
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,11 @@ void vgic_v3_configure_hcr(struct kvm_vcpu *vcpu,

	if (!als->nr_sgi)
		cpuif->vgic_hcr |= ICH_HCR_EL2_vSGIEOICount;

	cpuif->vgic_hcr |= (cpuif->vgic_vmcr & ICH_VMCR_ENG0_MASK) ?
		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;
}

static bool lr_signals_eoi_mi(u64 lr_val)