All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH v3 06/28] tcg: Split out tcg_region_prologue_set
Date: Tue, 08 Jun 2021 12:47:58 +0100	[thread overview]
Message-ID: <878s3kmvbf.fsf@linaro.org> (raw)
In-Reply-To: <20210502231844.1977630-7-richard.henderson@linaro.org>


Richard Henderson <richard.henderson@linaro.org> writes:

> This has only one user, but will make more sense after some
> code motion.
>
> Always leave the tcg_init_ctx initialized to the first region,
> in preparation for tcg_prologue_init().  This also requires
> that we don't re-allocate the region for the first cpu, lest
> we hit the assertion for total number of regions allocated .
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  tcg/tcg.c | 37 ++++++++++++++++++++++---------------
>  1 file changed, 22 insertions(+), 15 deletions(-)
>
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index df78c89673..ee3319e163 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -885,10 +885,26 @@ void tcg_region_init(void)
>  
>      tcg_region_trees_init();
>  
> -    /* In user-mode we support only one ctx, so do the initial allocation now */
> -#ifdef CONFIG_USER_ONLY
> -    tcg_region_initial_alloc__locked(tcg_ctx);
> -#endif
> +    /*
> +     * Leave the initial context initialized to the first region.
> +     * This will be the context into which we generate the prologue.
> +     * It is also the only context for CONFIG_USER_ONLY.
> +     */
> +    tcg_region_initial_alloc__locked(&tcg_init_ctx);
> +}
> +
> +static void tcg_region_prologue_set(TCGContext *s)
> +{
> +    /* Deduct the prologue from the first region.  */
> +    g_assert(region.start == s->code_gen_buffer);
> +    region.start = s->code_ptr;
> +
> +    /* Recompute boundaries of the first region. */
> +    tcg_region_assign(s, 0);
> +
> +    /* Register the balance of the buffer with gdb. */
> +    tcg_register_jit(tcg_splitwx_to_rx(region.start),
> +                     region.end - region.start);
>  }
>  
>  #ifdef CONFIG_DEBUG_TCG
> @@ -968,10 +984,10 @@ void tcg_register_thread(void)
>  
>      if (n > 0) {
>          alloc_tcg_plugin_context(s);
> +        tcg_region_initial_alloc(s);
>      }
>  
>      tcg_ctx = s;
> -    tcg_region_initial_alloc(s);
>  }
>  #endif /* !CONFIG_USER_ONLY */
>  
> @@ -1211,8 +1227,6 @@ void tcg_prologue_init(TCGContext *s)
>  {
>      size_t prologue_size;
>  
> -    /* Put the prologue at the beginning of code_gen_buffer.  */
> -    tcg_region_assign(s, 0);
>      s->code_ptr = s->code_gen_ptr;
>      s->code_buf = s->code_gen_ptr;
>      s->data_gen_ptr = NULL;
> @@ -1244,14 +1258,7 @@ void tcg_prologue_init(TCGContext *s)
>                          (uintptr_t)s->code_buf, prologue_size);
>  #endif
>  
> -    /* Deduct the prologue from the first region.  */
> -    region.start = s->code_ptr;
> -
> -    /* Recompute boundaries of the first region. */
> -    tcg_region_assign(s, 0);
> -
> -    tcg_register_jit(tcg_splitwx_to_rx(region.start),
> -                     region.end - region.start);
> +    tcg_region_prologue_set(s);
>  
>  #ifdef DEBUG_DISAS
>      if (qemu_loglevel_mask(CPU_LOG_TB_OUT_ASM)) {


-- 
Alex Bennée


  reply	other threads:[~2021-06-08 11:49 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-02 23:18 [PATCH v3 00/28] tcg: Clean up code_gen_buffer allocation Richard Henderson
2021-05-02 23:18 ` [PATCH v3 01/28] meson: Split out tcg/meson.build Richard Henderson
2021-06-07 19:38   ` Alex Bennée
2021-06-09 14:56   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 02/28] meson: Split out fpu/meson.build Richard Henderson
2021-06-07 19:38   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 03/28] tcg: Re-order tcg_region_init vs tcg_prologue_init Richard Henderson
2021-06-08  9:04   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 04/28] tcg: Remove error return from tcg_region_initial_alloc__locked Richard Henderson
2021-06-08 11:04   ` Alex Bennée
2021-06-08 15:44     ` Richard Henderson
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 05/28] tcg: Split out tcg_region_initial_alloc Richard Henderson
2021-06-08 11:45   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 06/28] tcg: Split out tcg_region_prologue_set Richard Henderson
2021-06-08 11:47   ` Alex Bennée [this message]
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 07/28] tcg: Split out region.c Richard Henderson
2021-06-08 11:48   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 08/28] accel/tcg: Inline cpu_gen_init Richard Henderson
2021-06-08 11:49   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 09/28] accel/tcg: Move alloc_code_gen_buffer to tcg/region.c Richard Henderson
2021-06-08 11:50   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 10/28] accel/tcg: Rename tcg_init to tcg_init_machine Richard Henderson
2021-06-08 11:51   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 11/28] tcg: Create tcg_init Richard Henderson
2021-06-08 11:52   ` Alex Bennée
2021-06-09 14:57   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 12/28] accel/tcg: Merge tcg_exec_init into tcg_init_machine Richard Henderson
2021-06-08 11:55   ` Alex Bennée
2021-06-08 15:45     ` Richard Henderson
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-06-10 15:16     ` Richard Henderson
2021-05-02 23:18 ` [PATCH v3 13/28] accel/tcg: Pass down max_cpus to tcg_init Richard Henderson
2021-06-08 15:44   ` Alex Bennée
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 14/28] tcg: Introduce tcg_max_ctxs Richard Henderson
2021-06-08 15:54   ` Alex Bennée
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 15/28] tcg: Move MAX_CODE_GEN_BUFFER_SIZE to tcg-target.h Richard Henderson
2021-06-08 15:56   ` Alex Bennée
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 16/28] tcg: Replace region.end with region.total_size Richard Henderson
2021-06-08 16:03   ` Alex Bennée
2021-06-08 16:12     ` Richard Henderson
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 17/28] tcg: Rename region.start to region.after_prologue Richard Henderson
2021-06-08 16:06   ` Alex Bennée
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 18/28] tcg: Tidy tcg_n_regions Richard Henderson
2021-06-08 16:06   ` Alex Bennée
2021-06-09 14:58   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 19/28] tcg: Tidy split_cross_256mb Richard Henderson
2021-06-09 10:01   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-06-10 15:20     ` Richard Henderson
2021-05-02 23:18 ` [PATCH v3 20/28] tcg: Move in_code_gen_buffer and tests to region.c Richard Henderson
2021-06-09 10:07   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 21/28] tcg: Allocate code_gen_buffer into struct tcg_region_state Richard Henderson
2021-06-09 10:29   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 22/28] tcg: Return the map protection from alloc_code_gen_buffer Richard Henderson
2021-06-09 10:30   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 23/28] tcg: Sink qemu_madvise call to common code Richard Henderson
2021-06-09 10:34   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 24/28] util/osdep: Add qemu_mprotect_rw Richard Henderson
2021-06-09 10:34   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 25/28] tcg: Round the tb_size default from qemu_get_host_physmem Richard Henderson
2021-06-09 10:36   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 26/28] tcg: Merge buffer protection and guard page protection Richard Henderson
2021-06-09 10:39   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 27/28] tcg: When allocating for !splitwx, begin with PROT_NONE Richard Henderson
2021-06-09 11:21   ` Alex Bennée
2021-06-10 15:34     ` Richard Henderson
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:18 ` [PATCH v3 28/28] tcg: Move tcg_init_ctx and tcg_ctx from accel/tcg/ Richard Henderson
2021-06-09 11:30   ` Alex Bennée
2021-06-09 14:59   ` Luis Fernando Fujita Pires
2021-05-02 23:45 ` [PATCH v3 00/28] tcg: Clean up code_gen_buffer allocation no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878s3kmvbf.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.