linux/Documentation
Nico Boehr f2d3155e2a KVM: s390: disable migration mode when dirty tracking is disabled
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: 190df4a212 ("KVM: s390: CMMA tracking, ESSA emulation, migration mode")
Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Claudio 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: Janosch Frank <frankja@linux.ibm.com>
2023-02-07 18:05:59 +01:00
..
ABI block-2023-01-06 2023-01-06 13:12:42 -08:00
accel
accounting
admin-guide IOMMU Updates for Linux v6.2 2022-12-19 08:34:39 -06:00
arc
arm
arm64 Revert "arm64: errata: Workaround possible Cortex-A715 [ESR|FAR]_ELx corruption" 2022-12-15 17:59:12 +00:00
block
bpf docs/bpf: Reword docs for BPF_MAP_TYPE_SK_STORAGE 2022-12-14 18:35:41 +01:00
cdrom
core-api hardening updates for v6.2-rc1 2022-12-14 12:20:00 -08:00
cpu-freq
crypto
dev-tools
devicetree Devicetree fixes for v6.2: 2023-01-07 10:20:33 -08:00
doc-guide
driver-api dmaengine updates for v6.2 2022-12-19 08:54:17 -06:00
fault-injection
fb
features RISC-V Patches for the 6.2 Merge Window, Part 1 2022-12-14 15:23:49 -08:00
filesystems ntfs3 for 6.2 2022-12-21 10:18:17 -08:00
firmware-guide
firmware_class
fpga
gpu
hid
hwmon
i2c
ia64
iio
images
infiniband
input
isdn
kbuild
kernel-hacking
leds
litmus-tests
livepatch
locking
loongarch
m68k
maintainer docs, nvme: add a feature and quirk policy document 2022-12-28 05:37:12 -10:00
mhi
mips
misc-devices
mm MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
netlabel
networking Documentation: devlink: add missing toc entry for etas_es58x devlink doc 2022-12-19 16:08:27 +01:00
nios2
nvdimm
nvme docs, nvme: add a feature and quirk policy document 2022-12-28 05:37:12 -10:00
openrisc
parisc
PCI
pcmcia
peci
power
powerpc
process docs: netdev: convert to a non-FAQ document 2022-12-28 10:06:06 +00:00
RCU
riscv RISC-V Patches for the 6.2 Merge Window, Part 1 2022-12-14 15:23:49 -08:00
rust
s390
scheduler
scsi
security
sh
sound
sparc
sphinx
sphinx-static
spi
staging
target
timers
tools
trace Trace probes updates for 6.2: 2022-12-21 18:57:24 -08:00
translations
usb
userspace-api iommufd for 6.2 2022-12-14 09:15:43 -08:00
virt KVM: s390: disable migration mode when dirty tracking is disabled 2023-02-07 18:05:59 +01:00
w1
watchdog
x86
xtensa
.gitignore
arch.rst
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py
docutils.conf
dontdiff
index.rst
Kconfig
Makefile
memory-barriers.txt
SubmittingPatches
subsystem-apis.rst