qemu/include/system
Tom Lendacky 4cdc489eb9 i386/kvm: Prefault memory on page state change
A page state change is typically followed by an access of the page(s) and
results in another VMEXIT in order to map the page into the nested page
table. Depending on the size of page state change request, this can
generate a number of additional VMEXITs. For example, under SNP, when
Linux is utilizing lazy memory acceptance, memory is typically accepted in
4M chunks. A page state change request is submitted to mark the pages as
private, followed by validation of the memory. Since the guest_memfd
currently only supports 4K pages, each page validation will result in
VMEXIT to map the page, resulting in 1024 additional exits.

When performing a page state change, invoke KVM_PRE_FAULT_MEMORY for the
size of the page state change in order to pre-map the pages and avoid the
additional VMEXITs. This helps speed up boot times.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/r/f5411c42340bd2f5c14972551edb4e959995e42b.1743193824.git.thomas.lendacky@amd.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-06-06 14:32:54 +02:00
..
accel-blocker.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
accel-ops.h accel: Forward-declare AccelOpsClass in 'qemu/typedefs.h' 2025-03-06 15:46:18 +01:00
address-spaces.h include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
arch_init.h system: Replace arch_type global by qemu_arch_available() helper 2025-03-11 20:03:26 +01:00
balloon.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend-common.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend-global-state.h block: Remove unused blk_op_is_blocked() 2025-03-11 15:49:14 +01:00
block-backend-io.h block: Improve blk_get_attached_dev_id() docstring 2025-02-06 13:59:00 +01:00
block-backend.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-ram-registrar.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
blockdev.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
confidential-guest-support.h meson: Only allow CONFIG_USER_ONLY from certain source sets 2025-04-23 14:08:44 -07:00
cpu-throttle.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-timers-internal.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-timers.h include/exec: Split out icount.h 2025-04-23 14:08:44 -07:00
cpus.h accel: Forward-declare AccelOpsClass in 'qemu/typedefs.h' 2025-03-06 15:46:18 +01:00
cryptodev-vhost-user.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cryptodev-vhost.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cryptodev.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
device_tree.h hw: Centralize handling of -machine dumpdtb option 2025-02-24 15:03:42 +00:00
dirtylimit.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dirtyrate.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dma.h include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
dump-arch.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dump.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
event-loop-base.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
host_iommu_device.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
hostmem.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
hvf.h include/system/hvf: missing vaddr include 2025-05-14 15:12:40 +01:00
hvf_int.h system/hvf: Avoid including 'cpu.h' 2025-05-08 14:22:12 +02:00
hw_accel.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
iommufd.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
ioport.h include/system: Move exec/ioport.h to system/ioport.h 2025-04-23 14:08:21 -07:00
iothread.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
kvm.h i386/kvm: Prefault memory on page state change 2025-06-06 14:32:54 +02:00
kvm_int.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
kvm_xen.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
memory.h memory: Store user data pointer in the IOMMU notifiers 2025-06-01 06:38:53 -04:00
memory_mapping.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
numa.h system/numa: Remove unnecessary 'exec/cpu-common.h' header 2024-12-20 17:44:57 +01:00
nvmm.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
os-posix.h os: add an ability to lock memory on_fault 2025-02-12 11:36:01 -05:00
os-wasm.h include/qemu/osdep.h: Add Emscripten-specific OS dependencies 2025-05-06 16:02:04 +02:00
os-win32.h cleanup: Drop pointless return at end of function 2025-04-24 09:33:42 +02:00
qtest.h include/system: Remove ifndef CONFIG_USER_ONLY in qtest.h 2025-04-23 14:08:44 -07:00
ram_addr.h include: Remove 'exec/exec-all.h' 2025-04-30 12:45:05 -07:00
ramblock.h include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
replay.h meson: Only allow CONFIG_USER_ONLY from certain source sets 2025-04-23 14:08:44 -07:00
reset.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rng-random.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rng.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rtc.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
runstate-action.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
runstate.h system/runstate: add VM state change cb with return value 2025-05-14 05:39:14 -04:00
seccomp.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
spdm-socket.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
stats.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
system.h overcommit: introduce mem-lock=on-fault 2025-02-12 11:36:13 -05:00
tcg.h tcg: Move qemu_tcg_mttcg_enabled() to 'system/tcg.h' 2025-04-23 15:07:32 -07:00
tpm.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
tpm_backend.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
tpm_util.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
vhost-user-backend.h vhost-user: return failure if backend crash when live migration 2025-05-14 05:39:15 -04:00
watchdog.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
whpx.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
xen-mapcache.h system/xen: remove inline stubs 2025-04-23 13:52:37 -07:00
xen.h meson: Only allow CONFIG_USER_ONLY from certain source sets 2025-04-23 14:08:44 -07:00