It has been known case where no running VCPU context exists when the vgic/its tables are saved. There are other two unknown cases where we don't have the running VCPU context: (a) restore vgic3 LPI pending status. (b) restoring vgic3 pending tables. PATCH[1] adds unified helper vgic_write_guest_lock() PATCH[2 - 3] allows no-running-vcpu context for (a) and (b) v1: https://lore.kernel.org/kvmarm/20230116040405.260935-1-gshan@xxxxxxxxxx/T/#t Changelog ========= v2: * Add unified helper vgic_write_guest_lock() (Oliver) * Dropped two patches to refactor mark_page_dirty_in_slot() (Sean) Gavin Shan (3): KVM: arm64: Add helper vgic_write_guest_lock() KVM: arm64: Allow no running vcpu on restoring vgic3 LPI pending status KVM: arm64: Allow no running vcpu on saving vgic3 pending table Documentation/virt/kvm/api.rst | 10 +++++++--- arch/arm64/kvm/vgic-sys-reg-v3.c | 1 + arch/arm64/kvm/vgic/vgic-irqfd.c | 1 + arch/arm64/kvm/vgic/vgic-its.c | 13 +++++-------- arch/arm64/kvm/vgic/vgic-mmio-v2.c | 1 + arch/arm64/kvm/vgic/vgic-mmio.c | 1 + arch/arm64/kvm/vgic/vgic-v3.c | 4 ++-- arch/arm64/kvm/vgic/vgic-v4.c | 1 + arch/arm64/kvm/vgic/vgic.c | 1 + arch/arm64/kvm/vgic/vgic.h | 13 +++++++++++++ include/kvm/arm_vgic.h | 2 +- 11 files changed, 34 insertions(+), 14 deletions(-) -- 2.23.0