From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> As an extra sanity check, make sure the region we're registering can perform UFFDIO_COPY; the COPY will fail later but this gives a cleaner failure.
Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> --- migration/postcopy-ram.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 102fb61..effbeb6 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -378,6 +378,10 @@ static int ram_block_enable_notify(const char *block_name, void *host_addr, error_report("%s userfault register: %s", __func__, strerror(errno)); return -1; } + if (!(reg_struct.ioctls & ((__u64)1 << _UFFDIO_COPY))) { + error_report("%s userfault: Region doesn't support COPY", __func__); + return -1; + } return 0; } -- 2.9.3