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
Subject: Re: [PATCH-for-10.1 v2 38/43] tcg: Move cpu_req_mo() macro to target-agnostic 'backend-ldst.h'
Date: Thu, 3 Apr 2025 07:54:14 -0700	[thread overview]
Message-ID: <92e627b4-fd41-4382-afa8-438a409c903e@linaro.org> (raw)
In-Reply-To: <20250402212319.58349-2-philmd@linaro.org>

On 4/2/25 14:23, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   accel/tcg/backend-ldst.h    | 41 +++++++++++++++++++++++++++++++++++++
>   accel/tcg/internal-common.h | 27 ++++++++++++++++++++++++
>   accel/tcg/internal-target.h | 28 -------------------------
>   accel/tcg/cputlb.c          |  1 +
>   accel/tcg/user-exec.c       |  1 +
>   5 files changed, 70 insertions(+), 28 deletions(-)
>   create mode 100644 accel/tcg/backend-ldst.h
> 
> diff --git a/accel/tcg/backend-ldst.h b/accel/tcg/backend-ldst.h
> new file mode 100644
> index 00000000000..9c3a407a5af
> --- /dev/null
> +++ b/accel/tcg/backend-ldst.h
> @@ -0,0 +1,41 @@
> +/*
> + * Internal memory barrier helpers for QEMU (target agnostic)
> + *
> + *  Copyright (c) 2003 Fabrice Bellard
> + *
> + * SPDX-License-Identifier: LGPL-2.1-or-later
> + */
> +
> +#ifndef ACCEL_TCG_BACKEND_LDST_H
> +#define ACCEL_TCG_BACKEND_LDST_H
> +
> +#include "tcg-target-mo.h"
> +
> +/**
> + * tcg_req_mo:
> + * @guest_mo: Guest default memory order
> + * @type: TCGBar
> + *
> + * Filter @type to the barrier that is required for the guest
> + * memory ordering vs the host memory ordering.  A non-zero
> + * result indicates that some barrier is required.
> + */
> +#define tcg_req_mo(guest_mo, type) \
> +    ((type) & guest_mo & ~TCG_TARGET_DEFAULT_MO)
> +
> +/**
> + * cpu_req_mo:
> + * @cpu: CPUState
> + * @type: TCGBar
> + *
> + * If tcg_req_mo indicates a barrier for @type is required
> + * for the guest memory model, issue a host memory barrier.
> + */
> +#define cpu_req_mo(cpu, type)     \
> +    do {                          \
> +        if (tcg_req_mo(cpu->cc->tcg_ops->guest_default_memory_order, type)) { \
> +            smp_mb();             \
> +        }                         \
> +    } while (0)
> +
> +#endif
> diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h
> index 2f00560d102..829ae9389d2 100644
> --- a/accel/tcg/internal-common.h
> +++ b/accel/tcg/internal-common.h
> @@ -108,4 +108,31 @@ static inline tb_page_addr_t get_page_addr_code(CPUArchState *env,
>       return get_page_addr_code_hostp(env, addr, NULL);
>   }
>   
> +/**
> + * tcg_req_mo:
> + * @guest_mo: Guest default memory order
> + * @type: TCGBar
> + *
> + * Filter @type to the barrier that is required for the guest
> + * memory ordering vs the host memory ordering.  A non-zero
> + * result indicates that some barrier is required.
> + */
> +#define tcg_req_mo(guest_mo, type) \
> +    ((type) & guest_mo & ~TCG_TARGET_DEFAULT_MO)
> +
> +/**
> + * cpu_req_mo:
> + * @cpu: CPUState
> + * @type: TCGBar
> + *
> + * If tcg_req_mo indicates a barrier for @type is required
> + * for the guest memory model, issue a host memory barrier.
> + */
> +#define cpu_req_mo(cpu, type)     \
> +    do {                          \
> +        if (tcg_req_mo(cpu->cc->tcg_ops->guest_default_memory_order, type)) { \
> +            smp_mb();             \
> +        }                         \
> +    } while (0)
> +
>   #endif

I assume you meant to remove this from here in v2.


r~

> diff --git a/accel/tcg/internal-target.h b/accel/tcg/internal-target.h
> index f5a3fd7e402..9a9cef31406 100644
> --- a/accel/tcg/internal-target.h
> +++ b/accel/tcg/internal-target.h
> @@ -13,7 +13,6 @@
>   #include "exec/exec-all.h"
>   #include "exec/translation-block.h"
>   #include "tb-internal.h"
> -#include "tcg-target-mo.h"
>   #include "exec/mmap-lock.h"
>   
>   /*
> @@ -44,31 +43,4 @@ void page_table_config_init(void);
>   G_NORETURN void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr);
>   #endif /* CONFIG_USER_ONLY */
>   
> -/**
> - * tcg_req_mo:
> - * @guest_mo: Guest default memory order
> - * @type: TCGBar
> - *
> - * Filter @type to the barrier that is required for the guest
> - * memory ordering vs the host memory ordering.  A non-zero
> - * result indicates that some barrier is required.
> - */
> -#define tcg_req_mo(guest_mo, type) \
> -    ((type) & guest_mo & ~TCG_TARGET_DEFAULT_MO)
> -
> -/**
> - * cpu_req_mo:
> - * @cpu: CPUState
> - * @type: TCGBar
> - *
> - * If tcg_req_mo indicates a barrier for @type is required
> - * for the guest memory model, issue a host memory barrier.
> - */
> -#define cpu_req_mo(cpu, type)     \
> -    do {                          \
> -        if (tcg_req_mo(cpu->cc->tcg_ops->guest_default_memory_order, type)) { \
> -            smp_mb();             \
> -        }                         \
> -    } while (0)
> -
>   #endif /* ACCEL_TCG_INTERNAL_H */
> diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
> index 35b1ff03a51..d9fb68d7198 100644
> --- a/accel/tcg/cputlb.c
> +++ b/accel/tcg/cputlb.c
> @@ -48,6 +48,7 @@
>   #include "qemu/plugin-memory.h"
>   #endif
>   #include "tcg/tcg-ldst.h"
> +#include "backend-ldst.h"
>   
>   
>   /* DEBUG defines, enable DEBUG_TLB_LOG to log to the CPU_LOG_MMU target */
> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
> index 3f4d6824460..5eef8e7f186 100644
> --- a/accel/tcg/user-exec.c
> +++ b/accel/tcg/user-exec.c
> @@ -37,6 +37,7 @@
>   #include "qemu/int128.h"
>   #include "trace.h"
>   #include "tcg/tcg-ldst.h"
> +#include "backend-ldst.h"
>   #include "internal-common.h"
>   #include "internal-target.h"
>   #include "tb-internal.h"



  reply	other threads:[~2025-04-03 14:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-02 21:23 [PATCH-for-10.1 v2 00/43] tcg: philmd's queue Philippe Mathieu-Daudé
2025-04-02 21:23 ` [PATCH-for-10.1 v2 38/43] tcg: Move cpu_req_mo() macro to target-agnostic 'backend-ldst.h' Philippe Mathieu-Daudé
2025-04-03 14:54   ` Richard Henderson [this message]
2025-04-02 21:23 ` [PATCH-for-10.1 v2 39/43] tcg: Move qemu_tcg_mttcg_enabled() to 'system/tcg.h' Philippe Mathieu-Daudé
2025-04-03 15:01   ` Richard Henderson
2025-04-02 21:23 ` [PATCH-for-10.1 v2 40/43] tcg: Convert TCGState::mttcg_enabled to TriState Philippe Mathieu-Daudé
2025-04-02 21:23 ` [PATCH-for-10.1 v2 41/43] tcg: Factor mttcg_init() out Philippe Mathieu-Daudé
2025-04-03 15:36   ` Richard Henderson
2025-04-02 21:23 ` [PATCH-for-10.1 v2 42/43] tcg: Convert TARGET_SUPPORTS_MTTCG to TCGCPUOps::mttcg_supported field Philippe Mathieu-Daudé
2025-04-03 15:36   ` Richard Henderson
2025-04-02 21:23 ` [PATCH-for-10.1 v2 43/43] target/arm: Update comment around cpu_untagged_addr() Philippe Mathieu-Daudé
2025-04-03 15:36   ` Richard Henderson

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=92e627b4-fd41-4382-afa8-438a409c903e@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=philmd@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).