[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/9] accel/tcg: Fix page_set_flags and related [#1528]
From: |
Joel Stanley |
Subject: |
Re: [PATCH 0/9] accel/tcg: Fix page_set_flags and related [#1528] |
Date: |
Tue, 7 Mar 2023 03:19:37 +0000 |
On Mon, 6 Mar 2023 at 02:14, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> The primary issue is that of overflow, where "end" for the last
> page of the 32-bit address space overflows to 0. The fix is to
> use "last" instead, which can always be represented.
>
> This requires that we adjust reserved_va as well, because of
>
> -/*
> - * There are a number of places where we assign reserved_va to a variable
> - * of type abi_ulong and expect it to fit. Avoid the last page.
> - */
> -# define MAX_RESERVED_VA (0xfffffffful & TARGET_PAGE_MASK)
>
> and the related
>
> - /*
> - * reserved_va must be aligned with the host page size
> - * as it is used with mmap()
> - */
> - reserved_va = local_max_va & qemu_host_page_mask;
>
> whereby we avoided the final (host | guest) page of the address space
> because of said overflow. With the change in representation, we can
> always use UINT32_MAX as the end of the 32-bit address space.
>
> This was observable on ppc64le (or any other 64k page host) not being
> able to load any arm32 binary, because the COMMPAGE goes at 0xffff0000,
> which violated that last host page problem above.
>
> The issue is resolved in patch 4, but the rest clean up other interfaces
> with the same issue. I'm not touching any interfaces that use start+len
> instead of start+end.
Thanks for looking at this Richard. I gave it a spin on a ppc64le host
and it resolved the assert.
Tested-by: Joel Stanley <joel@jms.id.au>
Cheers,
Joel
- [PATCH 3/9] include/exec: Replace reserved_va with max_reserved_va, (continued)
- [PATCH 3/9] include/exec: Replace reserved_va with max_reserved_va, Richard Henderson, 2023/03/05
- [PATCH 6/9] accel/tcg: Pass last not end to PAGE_FOR_EACH_TB, Richard Henderson, 2023/03/05
- [PATCH 7/9] accel/tcg: Pass last not end to page_collection_lock, Richard Henderson, 2023/03/05
- [PATCH 4/9] accel/tcg: Pass last not end to page_set_flags, Richard Henderson, 2023/03/05
- [PATCH 9/9] accel/tcg: Pass last not end to tb_invalidate_phys_range, Richard Henderson, 2023/03/05
- [PATCH 8/9] accel/tcg: Pass last not end to tb_invalidate_phys_page_range__locked, Richard Henderson, 2023/03/05
- Re: [PATCH 0/9] accel/tcg: Fix page_set_flags and related [#1528],
Joel Stanley <=