Subject: Re: [PATCH 13/43] KVM: arm64: gic-v5: Make VPEs (non-)resident in vgic_load/put

From: Marc Zyngier <[email-masked]>
Date: Thu, 30 Apr 2026 11:26:42 +0100

On Mon, 27 Apr 2026 17:10:28 +0100,
Sascha Bischoff <[email-masked]> wrote:
> 
> Extend vgic_v5_load and vgic_v5_put to make the VPEs resident and
> non-resident, respectively. This makes the IRS aware of which VPE is
> currently resident, and therefore allows it to perform HPPI selection
> for LPIs and SPIs, which would otherwise never be signalled to the
> VPE.
> 
> Signed-off-by: Sascha Bischoff <[email-masked]>
> ---
>  arch/arm64/kvm/vgic/vgic-v5.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kvm/vgic/vgic-v5.c b/arch/arm64/kvm/vgic/vgic-v5.c
> index 92bb63b6dd6bb..11a1a491b7e0a 100644
> --- a/arch/arm64/kvm/vgic/vgic-v5.c
> +++ b/arch/arm64/kvm/vgic/vgic-v5.c
> @@ -1053,6 +1053,8 @@ void vgic_v5_flush_ppi_state(struct kvm_vcpu *vcpu)
>  void vgic_v5_load(struct kvm_vcpu *vcpu)
>  {
>  	struct vgic_v5_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v5;
> +	u16 vm = vgic_v5_vm_id(vcpu->kvm);
> +	u16 vpe = vgic_v5_vpe_id(vcpu);
>  
>  	/*
>  	 * On the WFI path, vgic_load is called a second time. The first is when
> @@ -1065,7 +1067,11 @@ void vgic_v5_load(struct kvm_vcpu *vcpu)
>  
>  	kvm_call_hyp(__vgic_v5_restore_vmcr_apr, cpu_if);
>  
> -	cpu_if->gicv5_vpe.resident = true;
> +	cpu_if->vgic_contextr = FIELD_PREP(ICH_CONTEXTR_EL2_V, true) |
> +				FIELD_PREP(ICH_CONTEXTR_EL2_VPE, vpe) |
> +				FIELD_PREP(ICH_CONTEXTR_EL2_VM, vm);
> +
> +	kvm_call_hyp(__vgic_v5_make_resident, cpu_if);
>  }
>  
>  void vgic_v5_put(struct kvm_vcpu *vcpu)
> @@ -1083,7 +1089,9 @@ void vgic_v5_put(struct kvm_vcpu *vcpu)
>  
>  	kvm_call_hyp(__vgic_v5_save_apr, cpu_if);
>  
> -	cpu_if->gicv5_vpe.resident = false;
> +	cpu_if->vgic_contextr = 0;
> +
> +	kvm_call_hyp(__vgic_v5_make_non_resident, cpu_if);
>  
>  	/* The shadow priority is only updated on entering WFI */
>  	if (vcpu_get_flag(vcpu, IN_WFI))

Should this patch be folded in patch #3? They seem to overlap in major
ways.

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.