Fix a bug in the MAP_FIXED blob mapping path (introduced by 4eb0aace)
where non-host-page-aligned offsets cause mmap(MAP_FIXED) to fail with
EINVAL. This affects any host where the page size exceeds the guest's
(ARM64 with 16KB/64KB pages, macOS ARM64).
This series introduces:
1. MAP_FIXED alignment validation in virtio-gpu: check that both
offset and blob size are aligned to the host page size before
calling virgl_renderer_resource_map_fixed(). When not aligned,
fall through to the subregion method (which works at any
alignment).
2. A map granule abstraction (hvf_set/get_map_granule) replacing
hardcoded qemu_real_host_page_size() calls in HVF memory mapping.
Non-aligned regions return early instead of proceeding with
add=false (which attempted an unnecessary unmap).
An 'ipa-granule' property (auto, 4k, 16k) on the HVF accelerator
object allows opt-in configuration:
-accel hvf,ipa-granule=4k
The property follows the kvm_arch_accel_class_init() pattern:
ARM registers the property in hvf_arch_accel_class_init(), x86
provides an empty stub.
3. macOS 26 IPA granule support via hv_vm_config_set_ipa_granule(),
reading the ipa-granule property to select HV_IPA_GRANULE_4KB or
HV_IPA_GRANULE_16KB. Falls back with a warning on macOS < 26.
Dependencies: none.
Changes v3 -> v4:
- Rebased onto current master (no code changes)
- Resent as new top-level thread per Alex Bennée's feedback
Changes v2 -> v3:
- Rebased on current master
- Add MAP_FIXED alignment validation (new patch 1)
- Move #ifdef __aarch64__ property code into hvf_arch_accel_class_init
following kvm_arch_accel_class_init() pattern (x86 empty stub)
- Use MAC_OS_VERSION_26_0 named constant
- Remove Venus blob mapping warning
Changes v1 -> v2 (Mohamed Mosaad review):
- Replace hardcoded 4KB with configurable ipa-granule property
(auto, 4k, 16k) on the HVF accelerator object.
- 'auto' defaults to host page size; explicit values opt in.
- Add fallback warning when macOS < 26 can't honor the request.
- Add Venus blob mapping safety warning.
- Use KiB constants instead of magic numbers.
Lucas Amaral (3):
virtio-gpu: validate host page alignment for MAP_FIXED blobs
accel/hvf: introduce map granule abstraction and IPA property
target/arm/hvf: configure IPA granule on macOS 26
accel/hvf/hvf-all.c | 30 +++++++++++++--
hw/display/virtio-gpu-virgl.c | 45 +++++++++++++---------
include/system/hvf.h | 15 ++++++++
include/system/hvf_int.h | 2 +
target/arm/hvf/hvf.c | 72 +++++++++++++++++++++++++++++++++++
target/i386/hvf/hvf.c | 4 ++
6 files changed, 147 insertions(+), 21 deletions(-)
--
2.52.0