v2: --- * pr_warn -> WARN_ONCE * comment style Migration mode is a VM attribute which enables tracking of changes in storage attributes (PGSTE). It assumes dirty tracking is enabled on all memslots to keep a dirty bitmap of pages with changed storage attributes. When enabling migration mode, we currently check that dirty tracking is enabled for all memslots. However, userspace can disable dirty tracking without disabling migration mode. Since migration mode is pointless with dirty tracking disabled, disable migration mode whenever userspace disables dirty tracking on any slot. Also update the documentation to clarify that dirty tracking must be enabled when enabling migration mode, which is already enforced by the code in kvm_s390_vm_start_migration(). To disable migration mode, slots_lock should be held, which is taken in kvm_set_memory_region() and thus held in kvm_arch_prepare_memory_region(). Restructure the prepare code a bit so all the sanity checking is done before disabling migration mode. This ensures migration mode isn't disabled when some sanity check fails. Nico Boehr (1): KVM: s390: disable migration mode when dirty tracking is disabled Documentation/virt/kvm/devices/vm.rst | 4 +++ arch/s390/kvm/kvm-s390.c | 38 ++++++++++++++++++--------- 2 files changed, 29 insertions(+), 13 deletions(-) -- 2.39.1