mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00

Emscripten does not support partial unmapping of mmapped memory
regions[1]. This limitation prevents correct implementation of qemu_ram_mmap
and qemu_ram_munmap, which rely on partial unmap behavior.
As a workaround, this commit excludes mmap-alloc.c from the Emscripten
build. Instead, for Emscripten build, this modifies qemu_anon_ram_alloc to
use qemu_memalign in place of qemu_ram_mmap, and disable memory backends
that rely on mmap, such as memory-backend-file and memory-backend-shm.
[1] d4a74336f2/system/lib/libc/emscripten_mmap.c (L61)
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
Link: https://lore.kernel.org/r/76834f933ee4f14eeb5289d21c59d306886e58e9.1745820062.git.ktokunaga.mail@gmail.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
40 lines
1.2 KiB
Meson
40 lines
1.2 KiB
Meson
system_ss.add([files(
|
|
'cryptodev-builtin.c',
|
|
'cryptodev-hmp-cmds.c',
|
|
'cryptodev.c',
|
|
'hostmem-ram.c',
|
|
'hostmem.c',
|
|
'rng-builtin.c',
|
|
'rng-egd.c',
|
|
'rng.c',
|
|
'confidential-guest-support.c',
|
|
), numa])
|
|
|
|
if host_os != 'windows'
|
|
system_ss.add(files('rng-random.c'))
|
|
if host_os != 'emscripten'
|
|
system_ss.add(files('hostmem-file.c'))
|
|
system_ss.add([files('hostmem-shm.c'), rt])
|
|
endif
|
|
endif
|
|
if host_os == 'linux'
|
|
system_ss.add(files('hostmem-memfd.c'))
|
|
system_ss.add(files('host_iommu_device.c'))
|
|
endif
|
|
if keyutils.found()
|
|
system_ss.add(keyutils, files('cryptodev-lkcf.c'))
|
|
endif
|
|
if have_vhost_user
|
|
system_ss.add(when: 'CONFIG_VIRTIO', if_true: files('vhost-user.c'))
|
|
endif
|
|
system_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
|
|
system_ss.add(when: 'CONFIG_IOMMUFD', if_true: files('iommufd.c'))
|
|
if have_vhost_user_crypto
|
|
system_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost-user.c'))
|
|
endif
|
|
system_ss.add(when: gio, if_true: files('dbus-vmstate.c'))
|
|
system_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))
|
|
|
|
system_ss.add(when: 'CONFIG_SPDM_SOCKET', if_true: files('spdm-socket.c'))
|
|
|
|
subdir('tpm')
|