On Mon, Oct 31, 2022 at 08:36:16AM +0800, Gavin Shan wrote: > ARM64 needs to dirty memory outside of a VCPU context when VGIC/ITS is > enabled. It's conflicting with that ring-based dirty page tracking always > requires a running VCPU context. > > Introduce a new flavor of dirty ring that requires the use of both VCPU > dirty rings and a dirty bitmap. The expectation is that for non-VCPU > sources of dirty memory (such as the VGIC/ITS on arm64), KVM writes to > the dirty bitmap. Userspace should scan the dirty bitmap before migrating > the VM to the target. > > Use an additional capability to advertise this behavior. The newly added > capability (KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP) can't be enabled before > KVM_CAP_DIRTY_LOG_RING_ACQ_REL on ARM64. In this way, the newly added > capability is treated as an extension of KVM_CAP_DIRTY_LOG_RING_ACQ_REL. > > Suggested-by: Marc Zyngier <maz@xxxxxxxxxx> > Suggested-by: Peter Xu <peterx@xxxxxxxxxx> > Co-developed-by: Oliver Upton <oliver.upton@xxxxxxxxx> > Signed-off-by: Oliver Upton <oliver.upton@xxxxxxxxx> > Signed-off-by: Gavin Shan <gshan@xxxxxxxxxx> Acked-by: Peter Xu <peterx@xxxxxxxxxx> -- Peter Xu