qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>, qemu-devel@nongnu.org
Cc: Anton Johansson <anjo@rev.ng>,
	Pierrick Bouvier <pierrick.bouvier@linaro.org>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH-for-10.1 4/4] tcg: Convert TARGET_SUPPORTS_MTTCG to TCGCPUOps::mttcg_supported field
Date: Sun, 23 Mar 2025 12:07:38 -0700	[thread overview]
Message-ID: <8cc6f6a4-b868-4dc8-bc14-25b438ad62a5@linaro.org> (raw)
In-Reply-To: <20250321155925.96626-5-philmd@linaro.org>

On 3/21/25 08:59, Philippe Mathieu-Daudé wrote:
> Instead of having a compile-time TARGET_SUPPORTS_MTTCG definition,
> have each target set the 'mttcg_supported' field in the TCGCPUOps
> structure.
> 
> Since so far we only emulate one target architecture at a time,
> tcg_init_machine() gets whether MTTCG is supported via the
> &first_cpu global.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   docs/devel/multi-thread-tcg.rst          | 2 +-
>   configs/targets/aarch64-softmmu.mak      | 1 -
>   configs/targets/alpha-softmmu.mak        | 1 -
>   configs/targets/arm-softmmu.mak          | 1 -
>   configs/targets/hppa-softmmu.mak         | 1 -
>   configs/targets/i386-softmmu.mak         | 1 -
>   configs/targets/loongarch64-softmmu.mak  | 1 -
>   configs/targets/microblaze-softmmu.mak   | 1 -
>   configs/targets/microblazeel-softmmu.mak | 1 -
>   configs/targets/mips-softmmu.mak         | 1 -
>   configs/targets/mipsel-softmmu.mak       | 1 -
>   configs/targets/or1k-softmmu.mak         | 1 -
>   configs/targets/ppc64-softmmu.mak        | 1 -
>   configs/targets/riscv32-softmmu.mak      | 1 -
>   configs/targets/riscv64-softmmu.mak      | 1 -
>   configs/targets/s390x-softmmu.mak        | 1 -
>   configs/targets/sparc-softmmu.mak        | 1 -
>   configs/targets/sparc64-softmmu.mak      | 1 -
>   configs/targets/x86_64-softmmu.mak       | 1 -
>   configs/targets/xtensa-softmmu.mak       | 1 -
>   configs/targets/xtensaeb-softmmu.mak     | 1 -
>   include/accel/tcg/cpu-ops.h              | 8 ++++++++
>   include/exec/poison.h                    | 1 -
>   accel/tcg/tcg-all.c                      | 7 ++-----
>   target/alpha/cpu.c                       | 1 +
>   target/arm/cpu.c                         | 1 +
>   target/arm/tcg/cpu-v7m.c                 | 1 +
>   target/avr/cpu.c                         | 1 +
>   target/hexagon/cpu.c                     | 1 +
>   target/hppa/cpu.c                        | 1 +
>   target/i386/tcg/tcg-cpu.c                | 1 +
>   target/loongarch/cpu.c                   | 1 +
>   target/m68k/cpu.c                        | 1 +
>   target/microblaze/cpu.c                  | 1 +
>   target/mips/cpu.c                        | 1 +
>   target/openrisc/cpu.c                    | 1 +
>   target/ppc/cpu_init.c                    | 1 +
>   target/riscv/tcg/tcg-cpu.c               | 1 +
>   target/rx/cpu.c                          | 1 +
>   target/s390x/cpu.c                       | 1 +
>   target/sh4/cpu.c                         | 1 +
>   target/sparc/cpu.c                       | 1 +
>   target/tricore/cpu.c                     | 1 +
>   target/xtensa/cpu.c                      | 1 +
>   44 files changed, 31 insertions(+), 27 deletions(-)

As far as this goes,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

> @@ -91,11 +92,7 @@ static int tcg_init_machine(MachineState *ms)
>   #else
>       unsigned max_cpus = ms->smp.max_cpus;
>   #endif
> -#ifdef TARGET_SUPPORTS_MTTCG
> -    bool mttcg_supported = true;
> -#else
> -    bool mttcg_supported = false;
> -#endif
> +    bool mttcg_supported = first_cpu->cc->tcg_ops->mttcg_supported; /* FIXME avoid first_cpu */

Intersection of CPU_FOREACH?

> diff --git a/target/avr/cpu.c b/target/avr/cpu.c
> index 24e52e28f44..9bc921c1cb2 100644
> --- a/target/avr/cpu.c
> +++ b/target/avr/cpu.c
> @@ -216,6 +216,7 @@ static const TCGCPUOps avr_tcg_ops = {
>       .cpu_exec_halt = avr_cpu_has_work,
>       .tlb_fill = avr_cpu_tlb_fill,
>       .do_interrupt = avr_cpu_do_interrupt,
> +    .mttcg_supported = false,
>       .guest_default_memory_order = 0,
>   };

This may well be the only true not supported.
I'm not sure what needs to happen to make that true.

> diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
> index 34734b0edb0..7bcf297998f 100644
> --- a/target/hexagon/cpu.c
> +++ b/target/hexagon/cpu.c
> @@ -324,6 +324,7 @@ static const TCGCPUOps hexagon_tcg_ops = {
>       .translate_code = hexagon_translate_code,
>       .synchronize_from_tb = hexagon_cpu_synchronize_from_tb,
>       .restore_state_to_opc = hexagon_restore_state_to_opc,
> +    .mttcg_supported = false,
>       /* MTTCG not yet supported: require strict ordering */
>       .guest_default_memory_order = TCG_MO_ALL,

We now have strict ordering, right there with TCG_MO_ALL.
Likewise for m68k, sh4, tricore.
I think we simply forgot to update.

> diff --git a/target/mips/cpu.c b/target/mips/cpu.c
> index 5ddc9bbb829..eee604e9254 100644
> --- a/target/mips/cpu.c
> +++ b/target/mips/cpu.c
> @@ -554,6 +554,7 @@ static const TCGCPUOps mips_tcg_ops = {
>       .synchronize_from_tb = mips_cpu_synchronize_from_tb,
>       .restore_state_to_opc = mips_restore_state_to_opc,
>   
> +    .mttcg_supported = TARGET_LONG_BITS == 32,
>       .guest_default_memory_order = 0,

What is missing from mip64?

> diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
> index 28fbbb8d3c1..ed79cc1a6b7 100644
> --- a/target/ppc/cpu_init.c
> +++ b/target/ppc/cpu_init.c
> @@ -7490,6 +7490,7 @@ static const TCGCPUOps ppc_tcg_ops = {
>     .translate_code = ppc_translate_code,
>     .restore_state_to_opc = ppc_restore_state_to_opc,
>   
> +  .mttcg_supported = TARGET_LONG_BITS == 64,
>     .guest_default_memory_order = 0,

Similarly.  I'd be surprised if ppc32 can't use mttcg, really.


r~


  parent reply	other threads:[~2025-03-23 19:08 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-21 15:59 [PATCH-for-10.1 0/4] tcg: Convert TARGET_SUPPORTS_MTTCG to TCGCPUOps::mttcg_supported field Philippe Mathieu-Daudé
2025-03-21 15:59 ` [PATCH-for-10.1 1/4] target/riscv: Restrict RV128 MTTCG check on system emulation Philippe Mathieu-Daudé
2025-03-21 17:32   ` Pierrick Bouvier
2025-03-23 18:08   ` Richard Henderson
2025-04-02 14:25     ` Philippe Mathieu-Daudé
2025-04-02 14:40       ` Philippe Mathieu-Daudé
2025-04-04  3:22         ` Alistair Francis
2025-03-21 15:59 ` [PATCH-for-10.1 2/4] tcg: Move qemu_tcg_mttcg_enabled() to 'system/tcg.h' Philippe Mathieu-Daudé
2025-03-21 17:33   ` Pierrick Bouvier
2025-03-23 18:36   ` Richard Henderson
2025-03-21 15:59 ` [PATCH-for-10.1 3/4] tcg: Convert TCGState::mttcg_enabled to TriState Philippe Mathieu-Daudé
2025-03-21 17:01   ` Anton Johansson via
2025-03-21 17:45     ` Philippe Mathieu-Daudé
2025-03-21 17:36   ` Pierrick Bouvier
2025-03-21 18:26     ` Philippe Mathieu-Daudé
2025-03-21 18:33       ` Pierrick Bouvier
2025-03-23 18:43   ` Richard Henderson
2025-04-02 21:12     ` Philippe Mathieu-Daudé
2025-03-21 15:59 ` [PATCH-for-10.1 4/4] tcg: Convert TARGET_SUPPORTS_MTTCG to TCGCPUOps::mttcg_supported field Philippe Mathieu-Daudé
2025-03-21 16:41   ` Anton Johansson via
2025-03-21 17:43   ` Pierrick Bouvier
2025-03-23 19:07   ` Richard Henderson [this message]
2025-03-23 21:24     ` Philippe Mathieu-Daudé
2025-03-23 22:13       ` BALATON Zoltan
2025-03-23 22:17         ` Richard Henderson
2025-03-23 22:49           ` BALATON Zoltan
2025-03-24 16:39             ` Philippe Mathieu-Daudé
2025-03-23 23:15         ` Philippe Mathieu-Daudé
2025-03-21 16:00 ` [PATCH-for-10.1 0/4] " Philippe Mathieu-Daudé

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=8cc6f6a4-b868-4dc8-bc14-25b438ad62a5@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=anjo@rev.ng \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=pierrick.bouvier@linaro.org \
    --cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).