[PATCH v2 7/7] KVM: arm64: vgic-its: Stop the VM when handling MOVALL
Fuad Tabba
fuad.tabba at linux.dev
Tue Sep 29 11:45:05 PDT 2026
On Tue, 29 Sept 2026 at 10:36, Marc Zyngier <maz at kernel.org> wrote:
>
> MOVALL is a royal pain, as it requires us to iterate over all the LPIs
> and move them around if they are on the correct source vcpu, and
> requiring locking for each of them.
>
> This locking can result in contention for vcpus that enter and exit
> the guest, and hinders forward progress. In order to make sure such
> process is not contended, just stop the VM altogether.
>
> Nobody in their right mind uses MOVALL anyway, as this is a rather
> braindead aspect of the GICv3 architecture.
>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
This is the only patch in the series without Cc: stable. Was that deliberate?
Reviewed-by: Fuad Tabba <fuad.tabba at linux.dev>
Tested-by: Fuad Tabba < fuad.tabba at linux.dev>
Cheers,
/fuad
> ---
> arch/arm64/kvm/vgic/vgic-its.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
> index cc02d9b62bd95..094eede267e54 100644
> --- a/arch/arm64/kvm/vgic/vgic-its.c
> +++ b/arch/arm64/kvm/vgic/vgic-its.c
> @@ -1382,6 +1382,15 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,
> if (vcpu1 == vcpu2)
> return 0;
>
> + /*
> + * Bulk operations such as MOVALL are a pain, as they can clash
> + * badly locking-wise with other vcpus entering and exiting the
> + * guest, should they be affected by it. Stopping the guest is a
> + * safer bet to ensure uncontended access and ultimately forward
> + * progress. Yeah...
> + */
> + kvm_arm_halt_guest(kvm);
> +
> xa_for_each(&dist->lpi_xa, intid, irq) {
> irq = vgic_get_irq(kvm, intid);
> if (!irq)
> @@ -1394,6 +1403,8 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,
>
> vgic_its_invalidate_cache(its);
>
> + kvm_arm_resume_guest(kvm);
> +
> return 0;
> }
>
> --
> 2.47.3
>
More information about the linux-arm-kernel
mailing list