diff mbox series

[v3,12/28] accel/tcg: Merge tcg_exec_init into tcg_init_machine

Message ID 20210502231844.1977630-13-richard.henderson@linaro.org
State Superseded
Headers show
Series tcg: Clean up code_gen_buffer allocation | expand

Commit Message

Richard Henderson May 2, 2021, 11:18 p.m. UTC
There is only one caller, and shortly we will need access
to the MachineState, which tcg_init_machine already has.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 accel/tcg/internal.h      |  2 ++
 include/sysemu/tcg.h      |  2 --
 accel/tcg/tcg-all.c       | 14 +++++++++++++-
 accel/tcg/translate-all.c | 21 ++-------------------
 4 files changed, 17 insertions(+), 22 deletions(-)

-- 
2.25.1

Comments

Alex Bennée June 8, 2021, 11:55 a.m. UTC | #1
Richard Henderson <richard.henderson@linaro.org> writes:

> There is only one caller, and shortly we will need access

> to the MachineState, which tcg_init_machine already has.

>

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  accel/tcg/internal.h      |  2 ++

>  include/sysemu/tcg.h      |  2 --

>  accel/tcg/tcg-all.c       | 14 +++++++++++++-

>  accel/tcg/translate-all.c | 21 ++-------------------

>  4 files changed, 17 insertions(+), 22 deletions(-)

>

> diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h

> index e9c145e0fb..881bc1ede0 100644

> --- a/accel/tcg/internal.h

> +++ b/accel/tcg/internal.h

> @@ -16,5 +16,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, target_ulong pc,

>                                int cflags);

>  

>  void QEMU_NORETURN cpu_io_recompile(CPUState *cpu, uintptr_t retaddr);

> +void page_init(void);

> +void tb_htable_init(void);

>  

>  #endif /* ACCEL_TCG_INTERNAL_H */

> diff --git a/include/sysemu/tcg.h b/include/sysemu/tcg.h

> index 00349fb18a..53352450ff 100644

> --- a/include/sysemu/tcg.h

> +++ b/include/sysemu/tcg.h

> @@ -8,8 +8,6 @@

>  #ifndef SYSEMU_TCG_H

>  #define SYSEMU_TCG_H

>  

> -void tcg_exec_init(unsigned long tb_size, int splitwx);

> -

>  #ifdef CONFIG_TCG

>  extern bool tcg_allowed;

>  #define tcg_enabled() (tcg_allowed)

> diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c

> index 30d81ff7f5..0e83acbfe5 100644

> --- a/accel/tcg/tcg-all.c

> +++ b/accel/tcg/tcg-all.c

> @@ -32,6 +32,7 @@

>  #include "qemu/error-report.h"

>  #include "qemu/accel.h"

>  #include "qapi/qapi-builtin-visit.h"

> +#include "internal.h"

>  

>  struct TCGState {

>      AccelState parent_obj;

> @@ -109,8 +110,19 @@ static int tcg_init_machine(MachineState *ms)

>  {

>      TCGState *s = TCG_STATE(current_accel());

>  

> -    tcg_exec_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);

> +    tcg_allowed = true;

>      mttcg_enabled = s->mttcg_enabled;

> +

> +    page_init();

> +    tb_htable_init();

> +    tcg_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);

> +


nit: you could clean up to use unit.h definitions, i.e. tb->size * MiB

Otherwise:

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


-- 
Alex Bennée
Richard Henderson June 8, 2021, 3:45 p.m. UTC | #2
On 6/8/21 4:55 AM, Alex Bennée wrote:
>> +    tcg_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);

>> +

> 

> nit: you could clean up to use unit.h definitions, i.e. tb->size * MiB

> 

> Otherwise:

> 

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


Amusingly, I cleaned that up this week while rebasing.


r~
Luis Fernando Fujita Pires June 9, 2021, 2:58 p.m. UTC | #3
From: Richard Henderson <richard.henderson@linaro.org>

> There is only one caller, and shortly we will need access to the MachineState,

> which tcg_init_machine already has.

> 

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  accel/tcg/internal.h      |  2 ++

>  include/sysemu/tcg.h      |  2 --

>  accel/tcg/tcg-all.c       | 14 +++++++++++++-

>  accel/tcg/translate-all.c | 21 ++-------------------

>  4 files changed, 17 insertions(+), 22 deletions(-)


Nitpicking: there's a comment in bsd-user/main.c's main() that should be updated now that tcg_exec_init() no longer exists. Currently:
934     /*
935      * Now that page sizes are configured in tcg_exec_init() we can do
936      * proper page alignment for guest_base.
937      */
938     guest_base = HOST_PAGE_ALIGN(guest_base);

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>


--
Luis Pires
Instituto de Pesquisas ELDORADO
Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html>
Richard Henderson June 10, 2021, 3:16 p.m. UTC | #4
On 6/9/21 7:58 AM, Luis Fernando Fujita Pires wrote:
> From: Richard Henderson <richard.henderson@linaro.org>

>> There is only one caller, and shortly we will need access to the MachineState,

>> which tcg_init_machine already has.

>>

>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

>> ---

>>   accel/tcg/internal.h      |  2 ++

>>   include/sysemu/tcg.h      |  2 --

>>   accel/tcg/tcg-all.c       | 14 +++++++++++++-

>>   accel/tcg/translate-all.c | 21 ++-------------------

>>   4 files changed, 17 insertions(+), 22 deletions(-)

> 

> Nitpicking: there's a comment in bsd-user/main.c's main() that should be updated now that tcg_exec_init() no longer exists. Currently:

> 934     /*

> 935      * Now that page sizes are configured in tcg_exec_init() we can do

> 936      * proper page alignment for guest_base.

> 937      */

> 938     guest_base = HOST_PAGE_ALIGN(guest_base);


Thanks.  I think the comment was wrong, and has been wrong for a while.  The 
only thing that controls HOST_PAGE_ALIGN is command-line options.

I've just clipped tcg_exec_init out of the comment and will leave the rest to 
the guys that are modernizing bsd-user/.


r~
diff mbox series

Patch

diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h
index e9c145e0fb..881bc1ede0 100644
--- a/accel/tcg/internal.h
+++ b/accel/tcg/internal.h
@@ -16,5 +16,7 @@  TranslationBlock *tb_gen_code(CPUState *cpu, target_ulong pc,
                               int cflags);
 
 void QEMU_NORETURN cpu_io_recompile(CPUState *cpu, uintptr_t retaddr);
+void page_init(void);
+void tb_htable_init(void);
 
 #endif /* ACCEL_TCG_INTERNAL_H */
diff --git a/include/sysemu/tcg.h b/include/sysemu/tcg.h
index 00349fb18a..53352450ff 100644
--- a/include/sysemu/tcg.h
+++ b/include/sysemu/tcg.h
@@ -8,8 +8,6 @@ 
 #ifndef SYSEMU_TCG_H
 #define SYSEMU_TCG_H
 
-void tcg_exec_init(unsigned long tb_size, int splitwx);
-
 #ifdef CONFIG_TCG
 extern bool tcg_allowed;
 #define tcg_enabled() (tcg_allowed)
diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c
index 30d81ff7f5..0e83acbfe5 100644
--- a/accel/tcg/tcg-all.c
+++ b/accel/tcg/tcg-all.c
@@ -32,6 +32,7 @@ 
 #include "qemu/error-report.h"
 #include "qemu/accel.h"
 #include "qapi/qapi-builtin-visit.h"
+#include "internal.h"
 
 struct TCGState {
     AccelState parent_obj;
@@ -109,8 +110,19 @@  static int tcg_init_machine(MachineState *ms)
 {
     TCGState *s = TCG_STATE(current_accel());
 
-    tcg_exec_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);
+    tcg_allowed = true;
     mttcg_enabled = s->mttcg_enabled;
+
+    page_init();
+    tb_htable_init();
+    tcg_init(s->tb_size * 1024 * 1024, s->splitwx_enabled);
+
+#if defined(CONFIG_SOFTMMU)
+    /* There's no guest base to take into account, so go ahead and
+       initialize the prologue now.  */
+    tcg_prologue_init(tcg_ctx);
+#endif
+
     return 0;
 }
 
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index bebb3366c0..0c818c3618 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -408,7 +408,7 @@  bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc, bool will_exit)
     return false;
 }
 
-static void page_init(void)
+void page_init(void)
 {
     page_size_init();
     page_table_config_init();
@@ -907,30 +907,13 @@  static bool tb_cmp(const void *ap, const void *bp)
         a->page_addr[1] == b->page_addr[1];
 }
 
-static void tb_htable_init(void)
+void tb_htable_init(void)
 {
     unsigned int mode = QHT_MODE_AUTO_RESIZE;
 
     qht_init(&tb_ctx.htable, tb_cmp, CODE_GEN_HTABLE_SIZE, mode);
 }
 
-/* Must be called before using the QEMU cpus. 'tb_size' is the size
-   (in bytes) allocated to the translation buffer. Zero means default
-   size. */
-void tcg_exec_init(unsigned long tb_size, int splitwx)
-{
-    tcg_allowed = true;
-    page_init();
-    tb_htable_init();
-    tcg_init(tb_size, splitwx);
-
-#if defined(CONFIG_SOFTMMU)
-    /* There's no guest base to take into account, so go ahead and
-       initialize the prologue now.  */
-    tcg_prologue_init(tcg_ctx);
-#endif
-}
-
 /* call with @p->lock held */
 static inline void invalidate_page_bitmap(PageDesc *p)
 {