Posting pre-PR because I had to adjust Emilio's QTree patch [1], and added a new patch to avoid an assert that can be generated with incorrect -R reserved_va values vs the ARM commpage.
r~ [1] https://gitlab.com/rth7680/qemu/-/jobs/3975817279#L92 Emilio Cota (2): util: import GTree as QTree tcg: use QTree instead of GTree Richard Henderson (9): linux-user: Diagnose misaligned -R size include/exec: Change reserved_va semantics to last byte accel/tcg: Pass last not end to page_set_flags accel/tcg: Pass last not end to page_reset_target_data accel/tcg: Pass last not end to PAGE_FOR_EACH_TB accel/tcg: Pass last not end to page_collection_lock accel/tcg: Pass last not end to tb_invalidate_phys_page_range__locked accel/tcg: Pass last not end to tb_invalidate_phys_range linux-user/arm: Take more care allocating commpage configure | 15 + meson.build | 4 + include/exec/cpu-all.h | 15 +- include/exec/exec-all.h | 2 +- include/qemu/qtree.h | 201 +++++ linux-user/arm/target_cpu.h | 2 +- accel/tcg/tb-maint.c | 112 +-- accel/tcg/translate-all.c | 2 +- accel/tcg/user-exec.c | 25 +- bsd-user/main.c | 10 +- bsd-user/mmap.c | 10 +- linux-user/elfload.c | 67 +- linux-user/main.c | 31 +- linux-user/mmap.c | 22 +- linux-user/syscall.c | 4 +- softmmu/physmem.c | 2 +- tcg/region.c | 19 +- tests/bench/qtree-bench.c | 286 +++++++ tests/unit/test-qtree.c | 333 +++++++++ util/qtree.c | 1390 +++++++++++++++++++++++++++++++++++ tests/bench/meson.build | 4 + tests/unit/meson.build | 1 + util/meson.build | 1 + 23 files changed, 2412 insertions(+), 146 deletions(-) create mode 100644 include/qemu/qtree.h create mode 100644 tests/bench/qtree-bench.c create mode 100644 tests/unit/test-qtree.c create mode 100644 util/qtree.c -- 2.34.1