Files
Snapintosh/tools
Acelogic f2bbd16a82 compat: add opt-in IO-coherent GPU mappings with a bounded self-test
SNAP_ADRENO_COHERENT (off by default; needs SNAP_ROOT_CACHE_WIDE). At
GPU prepare, before the guest exists and while CB0's mirror holds no
guest leaf, compat/adreno-coherent.c runs a bounded self-test through
the ring: CP_MEMCPY jobs of at most 1 MiB in both directions, with
non-coherent controls first and a PMU refill witness. Only if every
iteration passes do the mirror leaves become IO-coherent (AttrIndx 1,
SH inner shareable; MAIR0 index 1 is re-read before use and before
every IB). Any other outcome keeps today's leaves and maintenance.

The guest learns the outcome through ADRENO_GUEST_COHERENT (QUERY:
state, detail, the CPU attribute epoch, iterations passed), and may
then ask ADRENO_GUEST_CACHE with ADRENO_CACHE_COHERENT, which keeps the
plain call's validation and refusals and maintains only frames whose
live CPU attribute is not Normal write-back. A monitor without the
define refuses QUERY, so a kext falls back to full maintenance.
SNAP_ADRENO_COHERENT_FORCE is a debug build that reports ON without the
self-test and says FORCED in EV_GPU_COHERENT.

probes/run.py links compat/adreno-coherent.c only when the define is in
FLAGS (OPTIONAL), after MULTI's objects, and decodes EV_GPU_COHERENT
(59); tools/monitor_build_offline.py follows the same rule. With the
define off the monitor objects and ELF are unchanged: b12v20's flags
rebuild its xnuboot.bin/.elf byte for byte, and b12v23's flags (with
the define) rebuild its xnuboot.bin/.elf byte for byte.

Tests: tools/test-adreno-coherent.c (async, sync and forced builds),
and the existing Adreno, ring and SPTM-DART harnesses with the define
on and off.
2026-10-23 20:45:24 -04:00
..
2026-10-23 20:41:43 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-23 20:41:43 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00
2026-10-21 21:26:36 -04:00