Our current QEMU version uses inefficient structures to store PageDesc objects used in TCG. This issue was fixed in upstream [1] [2] [3] by using interval trees. Without these improvements merged into our user mode, we cannot use CheriBSD with snmalloc as the default allocator under the user mode because it creates a huge mapping (for a region of 512 GB in my case) with mmap(2) that itself takes several seconds.
[1] https://gitlab.com/qemu-project/qemu/-/issues/290
[2] https://gitlab.com/qemu-project/qemu/-/issues/967
[3] https://gitlab.com/qemu-project/qemu/-/issues/1214
[4] https://github.com/CTSRD-CHERI/cheribsd/blob/bcabfe1f46bd993c762a1816b6fb88cd8a9fbfc3/contrib/subrepo-snmalloc/src/snmalloc/pal/pal_posix.h#L332