[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 2/7] tcg: Remove softmmu code_gen_buffer fixed address
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 2/7] tcg: Remove softmmu code_gen_buffer fixed address |
Date: |
Tue, 07 Jan 2020 11:35:31 +0000 |
User-agent: |
mu4e 1.3.6; emacs 28.0.50 |
Richard Henderson <address@hidden> writes:
> The commentary talks about "in concert with the addresses
> assigned in the relevant linker script", except there is no
> linker script for softmmu, nor has there been for some time.
>
> (Do not confuse the user-only linker script editing that was
> removed in the previous patch, because user-only does not
> use this code_gen_buffer allocation method.)
>
> Reviewed-by: Thomas Huth <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> accel/tcg/translate-all.c | 37 +++++--------------------------------
> 1 file changed, 5 insertions(+), 32 deletions(-)
>
> diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
> index 9f48da9472..88468a1c08 100644
> --- a/accel/tcg/translate-all.c
> +++ b/accel/tcg/translate-all.c
> @@ -1032,47 +1032,20 @@ static inline void *alloc_code_gen_buffer(void)
> {
> int prot = PROT_WRITE | PROT_READ | PROT_EXEC;
> int flags = MAP_PRIVATE | MAP_ANONYMOUS;
> - uintptr_t start = 0;
> size_t size = tcg_ctx->code_gen_buffer_size;
> void *buf;
>
> - /* Constrain the position of the buffer based on the host cpu.
> - Note that these addresses are chosen in concert with the
> - addresses assigned in the relevant linker script file. */
> -# if defined(__PIE__) || defined(__PIC__)
> - /* Don't bother setting a preferred location if we're building
> - a position-independent executable. We're more likely to get
> - an address near the main executable if we let the kernel
> - choose the address. */
> -# elif defined(__x86_64__) && defined(MAP_32BIT)
> - /* Force the memory down into low memory with the executable.
> - Leave the choice of exact location with the kernel. */
> - flags |= MAP_32BIT;
> - /* Cannot expect to map more than 800MB in low memory. */
> - if (size > 800u * 1024 * 1024) {
> - tcg_ctx->code_gen_buffer_size = size = 800u * 1024 * 1024;
> - }
> -# elif defined(__sparc__)
> - start = 0x40000000ul;
> -# elif defined(__s390x__)
> - start = 0x90000000ul;
> -# elif defined(__mips__)
> -# if _MIPS_SIM == _ABI64
> - start = 0x128000000ul;
> -# else
> - start = 0x08000000ul;
> -# endif
> -# endif
> -
> - buf = mmap((void *)start, size, prot, flags, -1, 0);
> + buf = mmap(NULL, size, prot, flags, -1, 0);
> if (buf == MAP_FAILED) {
> return NULL;
> }
>
> #ifdef __mips__
> if (cross_256mb(buf, size)) {
> - /* Try again, with the original still mapped, to avoid re-acquiring
> - that 256mb crossing. This time don't specify an address. */
> + /*
> + * Try again, with the original still mapped, to avoid re-acquiring
> + * the same 256mb crossing.
> + */
> size_t size2;
> void *buf2 = mmap(NULL, size, prot, flags, -1, 0);
> switch ((int)(buf2 != MAP_FAILED)) {
--
Alex Bennée
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH v2 2/7] tcg: Remove softmmu code_gen_buffer fixed address,
Alex Bennée <=