On Fri, Jan 5, 2024 at 4:55 PM Jiri Denemark <jdenemar@redhat.com> wrote:
During post-copy migration (once it actually switches to post-copy mode)
dirty memory pages are continued to be migrated iteratively, while the
destination can explicitly request a specific page to be migrated before
the iterative process gets to it (which happens when a guest wants to
read a page that was not migrated yet). Without this flag explicitly
requested pages need to wait until all other pages already queued are
transferred. Enabling this flag will instruct the hypervisor to create a
separate migration channel for explicitly requested pages so that they
can preempt the queue.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
 include/libvirt/libvirt-domain.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 30cce85b29..ee23ae97a5 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -1100,6 +1100,14 @@ typedef enum {
      * Since: 8.5.0
      */
     VIR_MIGRATE_ZEROCOPY = (1 << 20),
+
+    /* Allow post-copy requests to preempt normal migration stream. This way
+     * page faults on the destination hosts caused by accessing a memory page
+     * that was not migrated yet should be handled faster.

Based on this description and the commit message there doesn't seem to be any reason why the user should not enable that. And in that case I think the users will be better off when libvirt auto-enables this.