kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/4] KVM: arm64: Add VLPI migration support on GICv4.1
@ 2021-01-27 12:13 Shenming Lu
  2021-01-27 12:13 ` [PATCH v3 1/4] KVM: arm64: GICv4.1: Add function to get VLPI state Shenming Lu
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Shenming Lu @ 2021-01-27 12:13 UTC (permalink / raw)
  To: Marc Zyngier, Eric Auger, Will Deacon, linux-arm-kernel, kvmarm,
	kvm, linux-kernel
  Cc: Alex Williamson, Cornelia Huck, Lorenzo Pieralisi,
	wanghaibin.wang, yuzenghui, lushenming

Hi Marc, sorry for the late commit.

In GICv4.1, migration has been supported except for (directly-injected)
VLPI. And GICv4.1 Spec explicitly gives a way to get the VLPI's pending
state (which was crucially missing in GICv4.0). So we make VLPI migration
capable on GICv4.1 in this patch set.

In order to support VLPI migration, we need to save and restore all
required configuration information and pending states of VLPIs. But
in fact, the configuration information of VLPIs has already been saved
(or will be reallocated on the dst host...) in vgic(kvm) migration.
So we only have to migrate the pending states of VLPIs specially.

Below is the related workflow in migration.

On the save path:
	In migration completion:
		pause all vCPUs
				|
		call each VM state change handler:
			pause other devices (just keep from sending interrupts, and
			such as VFIO migration protocol has already realized it [1])
					|
			flush ITS tables into guest RAM
					|
			flush RDIST pending tables (also flush VLPI state here)
				|
		...
On the resume path:
	load each device's state:
		restore ITS tables (include pending tables) from guest RAM
				|
		for other (PCI) devices (paused), if configured to have VLPIs,
		establish the forwarding paths of their VLPIs (and transfer
		the pending states from kvm's vgic to VPT here)

We have tested this series in VFIO migration, and found some related
issues in QEMU [2].

Links:
[1] vfio: UAPI for migration interface for device state:
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a8a24f3f6e38103b77cf399c38eb54e1219d00d6
[2] vfio: Some fixes and optimizations for VFIO migration:
    https://patchwork.ozlabs.org/cover/1413263/

History:

v2 -> v3
 - Add the vgic initialized check to ensure that the allocation and enabling
   of the doorbells have already been done before unmapping the vPEs.
 - Check all get_vlpi_state related conditions in save_pending_tables in one place.
 - Nit fixes.

v1 -> v2:
 - Get the VLPI state from the KVM side.
 - Nit fixes.

Thanks,
Shenming


Shenming Lu (3):
  KVM: arm64: GICv4.1: Add function to get VLPI state
  KVM: arm64: GICv4.1: Try to save hw pending state in
    save_pending_tables
  KVM: arm64: GICv4.1: Give a chance to save VLPI's pending state

Zenghui Yu (1):
  KVM: arm64: GICv4.1: Restore VLPI's pending state to physical side

 .../virt/kvm/devices/arm-vgic-its.rst         |  2 +-
 arch/arm64/kvm/vgic/vgic-its.c                |  6 +-
 arch/arm64/kvm/vgic/vgic-v3.c                 | 61 +++++++++++++++++--
 arch/arm64/kvm/vgic/vgic-v4.c                 | 33 ++++++++++
 arch/arm64/kvm/vgic/vgic.h                    |  1 +
 5 files changed, 93 insertions(+), 10 deletions(-)

-- 
2.19.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-03-12 12:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-27 12:13 [PATCH v3 0/4] KVM: arm64: Add VLPI migration support on GICv4.1 Shenming Lu
2021-01-27 12:13 ` [PATCH v3 1/4] KVM: arm64: GICv4.1: Add function to get VLPI state Shenming Lu
     [not found]   ` <87wnuef4oj.wl-maz@kernel.org>
2021-03-11 12:26     ` Shenming Lu
2021-01-27 12:13 ` [PATCH v3 2/4] KVM: arm64: GICv4.1: Try to save hw pending state in save_pending_tables Shenming Lu
     [not found]   ` <87v99yf450.wl-maz@kernel.org>
2021-03-11 12:31     ` Shenming Lu
     [not found]       ` <87lfasg2wt.wl-maz@kernel.org>
2021-03-12 10:47         ` Shenming Lu
2021-01-27 12:13 ` [PATCH v3 3/4] KVM: arm64: GICv4.1: Restore VLPI's pending state to physical side Shenming Lu
     [not found]   ` <87tupif3x3.wl-maz@kernel.org>
2021-03-11 12:32     ` Shenming Lu
     [not found]       ` <87k0qcg2s6.wl-maz@kernel.org>
2021-03-12 10:48         ` Shenming Lu
     [not found]           ` <87h7lgfwzu.wl-maz@kernel.org>
2021-03-12 11:34             ` Shenming Lu
     [not found]               ` <87ft10fulr.wl-maz@kernel.org>
2021-03-12 12:31                 ` Shenming Lu
2021-01-27 12:13 ` [PATCH v3 4/4] KVM: arm64: GICv4.1: Give a chance to save VLPI's pending state Shenming Lu
2021-02-26  8:58 ` [PATCH v3 0/4] KVM: arm64: Add VLPI migration support on GICv4.1 Shenming Lu
2021-03-11  7:03   ` Shenming Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).