> On Jan 5, 2022, at 6:50 AM, Alex Bennée <alex.ben...@linaro.org> wrote:
>
> The various approaches to finding memory holes are quite complicated
> to follow especially at a distance. Improve the logging so we can see
> exactly what method found the space for the guest memory.
>
> Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
> ---
> linux-user/elfload.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
Reviewed-by: Warner Losh <i...@bsdimp.com>
I’ve added similar things in the past for debugging bsd-user.
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 767f54c76d..238979b8b6 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -2221,6 +2221,9 @@ static void pgb_have_guest_base(const char *image_name,
> abi_ulong guest_loaddr,
> if (test != addr) {
> pgb_fail_in_use(image_name);
> }
> + qemu_log_mask(CPU_LOG_PAGE,
> + "%s: base @ %p for " TARGET_ABI_FMT_ld " bytes\n",
> + __func__, addr, guest_hiaddr - guest_loaddr);
> }
>
> /**
> @@ -2263,6 +2266,9 @@ static uintptr_t pgd_find_hole_fallback(uintptr_t
> guest_size, uintptr_t brk,
> if (mmap_start != MAP_FAILED) {
> munmap(mmap_start, guest_size);
> if (mmap_start == (void *) align_start) {
> + qemu_log_mask(CPU_LOG_PAGE,
> + "%s: base @ %p for %" PRIdPTR" bytes\n",
> + __func__, mmap_start + offset, guest_size);
> return (uintptr_t) mmap_start + offset;
> }
> }
> @@ -2342,6 +2348,12 @@ static uintptr_t pgb_find_hole(uintptr_t guest_loaddr,
> uintptr_t guest_size,
> }
> free_self_maps(maps);
>
> + if (ret != -1) {
> + qemu_log_mask(CPU_LOG_PAGE, "%s: base @ %" PRIxPTR
> + " for %" PRIdPTR " bytes\n",
> + __func__, ret, guest_size);
> + }
> +
> return ret;
> }
>
> @@ -2391,6 +2403,9 @@ static void pgb_static(const char *image_name,
> abi_ulong orig_loaddr,
> }
>
> guest_base = addr;
> +
> + qemu_log_mask(CPU_LOG_PAGE, "%s: base @ %"PRIxPTR" for %" PRIdPTR"
> bytes\n",
> + __func__, addr, hiaddr - loaddr);
> }
>
> static void pgb_dynamic(const char *image_name, long align)
> @@ -2447,6 +2462,9 @@ static void pgb_reserved_va(const char *image_name,
> abi_ulong guest_loaddr,
> "using -R option)", reserved_va, test, strerror(errno));
> exit(EXIT_FAILURE);
> }
> +
> + qemu_log_mask(CPU_LOG_PAGE, "%s: base @ %p for %ld bytes\n",
> + __func__, addr, reserved_va);
> }
>
> void probe_guest_base(const char *image_name, abi_ulong guest_loaddr,
> --
> 2.30.2
>
>