• Nico Boehr's avatar
    KVM: s390: disable migration mode when dirty tracking is disabled · f2d3155e
    Nico Boehr authored
    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().
    
    Also highlight in the documentation for KVM_S390_GET_CMMA_BITS that it
    can now fail with -EINVAL when dirty tracking is disabled while
    migration mode is on. Move all the error codes to a table so this stays
    readable.
    
    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.
    
    Cc: stable@vger.kernel.org
    Fixes: 190df4a2 ("KVM: s390: CMMA tracking, ESSA emulation, migration mode")
    Signed-off-by: default avatarNico Boehr <nrb@linux.ibm.com>
    Reviewed-by: default avatarJanosch Frank <frankja@linux.ibm.com>
    Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
    Link: https://lore.kernel.org/r/20230127140532.230651-2-nrb@linux.ibm.com
    Message-Id: <20230127140532.230651-2-nrb@linux.ibm.com>
    [frankja@linux.ibm.com: fixed commit message typo, moved api.rst error table upwards]
    Signed-off-by: default avatarJanosch Frank <frankja@linux.ibm.com>
    f2d3155e
vm.rst 12.1 KB