From: Lucas Amaral <lucaaamaral@gmail.com>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, Lucas Amaral <lucaaamaral@gmail.com>
Subject: [PATCH v2 2/2] target/arm/hvf: configure IPA granule on macOS 26
Date: Tue, 10 Mar 2026 23:27:32 -0300 [thread overview]
Message-ID: <20260311022732.64141-3-lucaaamaral@gmail.com> (raw)
In-Reply-To: <20260311022732.64141-1-lucaaamaral@gmail.com>
Read the ipa-granule property (set by hvf_accel_init) and configure
the HVF stage-2 translation granule via hv_vm_config_set_ipa_granule()
on macOS 26+. When ipa-granule=4k, use HV_IPA_GRANULE_4KB to allow
HVF to map memory at 4KB granularity, matching 4KB-page guests.
If macOS < 26 and a sub-host-page granule was requested, warn and
fall back to the host page size (16KB).
After resolution, warn if the map granule exceeds the guest page size,
as Venus blob BAR mappings require page-aligned offsets.
Signed-off-by: Lucas Amaral <lucaaamaral@gmail.com>
---
target/arm/hvf/hvf.c | 49 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
index 7952b01..a6f139d 100644
--- a/target/arm/hvf/hvf.c
+++ b/target/arm/hvf/hvf.c
@@ -11,7 +11,9 @@
#include "qemu/osdep.h"
#include "qemu/error-report.h"
+#include "qemu/units.h"
#include "qemu/log.h"
+#include "exec/target_page.h"
#include "system/runstate.h"
#include "system/hvf.h"
@@ -960,6 +962,53 @@ hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range)
}
chosen_ipa_bit_size = pa_range;
+ /*
+ * Configure IPA granule from the ipa-granule property.
+ * hvf_get_map_granule() was set by hvf_accel_init() before this call.
+ */
+ {
+ uint64_t granule = hvf_get_map_granule();
+ bool granule_set = false;
+
+#ifdef MAC_OS_VERSION_26_0
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_26_0
+ if (__builtin_available(macOS 26, *)) {
+ hv_ipa_granule_t hv_gran = (granule <= 4 * KiB)
+ ? HV_IPA_GRANULE_4KB : HV_IPA_GRANULE_16KB;
+ ret = hv_vm_config_set_ipa_granule(config, hv_gran);
+ if (ret != HV_SUCCESS) {
+ error_report("HVF: failed to set IPA granule: %s",
+ hvf_return_string(ret));
+ goto cleanup;
+ }
+ granule_set = true;
+ }
+#endif
+#endif
+
+ if (!granule_set && granule < qemu_real_host_page_size()) {
+ warn_report("HVF: ipa-granule=%zuKB requested but macOS < 26; "
+ "falling back to host page size (%zuKB)",
+ (size_t)(granule / KiB),
+ (size_t)(qemu_real_host_page_size() / KiB));
+ hvf_set_map_granule(qemu_real_host_page_size());
+ }
+
+ /*
+ * Venus blob mapping safety: warn if the resolved map granule
+ * exceeds the guest page size, as virtio-gpu blob BAR mappings
+ * require page-aligned offsets and would hang otherwise.
+ */
+ if (hvf_get_map_granule() > qemu_target_page_size()) {
+ warn_report("HVF map granule (%zu) > guest page size (%zu); "
+ "Venus blob BAR mappings may hang. "
+ "Consider ipa-granule=4k (requires macOS 26+) or "
+ "guest F_BLOB_ALIGNMENT support.",
+ (size_t)hvf_get_map_granule(),
+ qemu_target_page_size());
+ }
+ }
+
ret = hv_vm_create(config);
cleanup:
--
2.52.0
next prev parent reply other threads:[~2026-03-11 2:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-09 21:49 [PATCH 0/2] hvf: map granule abstraction and macOS 26 4KB IPA Lucas Amaral
2026-03-09 21:49 ` [PATCH 1/2] accel/hvf: introduce map granule abstraction Lucas Amaral
2026-03-09 21:49 ` [PATCH 2/2] target/arm/hvf: set 4KB IPA granule on macOS 26 Lucas Amaral
2026-03-10 1:25 ` Mohamed Mediouni
2026-03-11 2:27 ` [PATCH v2 0/2] hvf: map granule abstraction and configurable IPA Lucas Amaral
2026-03-11 2:27 ` [PATCH v2 1/2] accel/hvf: introduce map granule abstraction and IPA property Lucas Amaral
2026-03-11 4:38 ` Mohamed Mediouni
2026-03-11 2:27 ` Lucas Amaral [this message]
2026-03-11 4:41 ` [PATCH v2 2/2] target/arm/hvf: configure IPA granule on macOS 26 Mohamed Mediouni
2026-03-15 3:41 ` [PATCH v3 0/3] hvf: map granule abstraction, configurable IPA, and MAP_FIXED alignment fix Lucas Amaral
2026-03-15 3:41 ` [PATCH 1/3] virtio-gpu: validate host page alignment for MAP_FIXED blobs Lucas Amaral
2026-03-15 3:41 ` [PATCH 2/3] accel/hvf: introduce map granule abstraction and IPA property Lucas Amaral
2026-03-15 3:41 ` [PATCH 3/3] target/arm/hvf: configure IPA granule on macOS 26 Lucas Amaral
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260311022732.64141-3-lucaaamaral@gmail.com \
--to=lucaaamaral@gmail.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.