On Wed, Oct 05, 2022 at 08:41:50AM +0800, Gavin Shan wrote: > -8.29 KVM_CAP_DIRTY_LOG_RING/KVM_CAP_DIRTY_LOG_RING_ACQ_REL > ----------------------------------------------------------- > +8.29 KVM_CAP_DIRTY_LOG_{RING, RING_ACQ_REL, RING_ALLOW_BITMAP} > +-------------------------------------------------------------- Shall we make it a standalone cap, just to rely on DIRTY_RING[_ACQ_REL] being enabled first, instead of making the three caps at the same level? E.g. we can skip creating bitmap for DIRTY_RING[_ACQ_REL] && !_ALLOW_BITMAP (x86). > @@ -2060,10 +2060,6 @@ int kvm_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log, > unsigned long n; > unsigned long any = 0; > > - /* Dirty ring tracking is exclusive to dirty log tracking */ > - if (kvm->dirty_ring_size) > - return -ENXIO; Then we can also have one dirty_ring_exclusive(), with something like: bool dirty_ring_exclusive(struct kvm *kvm) { return kvm->dirty_ring_size && !kvm->dirty_ring_allow_bitmap; } Does it make sense? Thanks, -- Peter Xu _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm