On Tue, Mar 31, 2020 at 02:59:59PM -0400, Peter Xu wrote: > Previously the dirty ring test was working in synchronous way, because > only with a vmexit (with that it was the ring full event) we'll know > the hardware dirty bits will be flushed to the dirty ring. > > With this patch we first introduced the vcpu kick mechanism by using > SIGUSR1, meanwhile we can have a guarantee of vmexit and also the > flushing of hardware dirty bits. With all these, we can keep the vcpu > dirty work asynchronous of the whole collection procedure now. Still, > we need to be very careful that we can only do it async if the vcpu is > not reaching soft limit (no KVM_EXIT_DIRTY_RING_FULL). Otherwise we > must collect the dirty bits before continuing the vcpu. > > Further increase the dirty ring size to current maximum to make sure > we torture more on the no-ring-full case, which should be the major > scenario when the hypervisors like QEMU would like to use this feature. > > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > tools/testing/selftests/kvm/dirty_log_test.c | 126 +++++++++++++----- > .../testing/selftests/kvm/include/kvm_util.h | 1 + > tools/testing/selftests/kvm/lib/kvm_util.c | 9 ++ > 3 files changed, 106 insertions(+), 30 deletions(-) > For the vcpu_kick and sem_wait stuff Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx>