From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Cédric Le Goater" <clg@kaod.org>, qemu-ppc@nongnu.org
Cc: <qemu-devel@nongnu.org>,
"Daniel Henrique Barboza" <dbarboza@ventanamicro.com>
Subject: Re: [RFC PATCH 4/5] target/ppc: Add msgsnd/p and DPDES SMT support
Date: Fri, 02 Jun 2023 16:56:31 +1000 [thread overview]
Message-ID: <CT1YVK35L3UT.2CY7LU5L7GDG4@wheely> (raw)
In-Reply-To: <60f0d393-f0b5-cc06-feff-a8f00e5a32b3@kaod.org>
On Thu Jun 1, 2023 at 5:13 PM AEST, Cédric Le Goater wrote:
> On 5/31/23 03:23, Nicholas Piggin wrote:
> > Doorbells in SMT need to coordinate msgsnd/msgclr and DPDES access from
> > multiple threads that affect the same state.
> >
> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> > ---
> > hw/ppc/ppc.c | 6 ++
> > include/hw/ppc/ppc.h | 1 +
> > target/ppc/cpu.h | 7 +-
> > target/ppc/excp_helper.c | 86 +++++++++++++------
> > target/ppc/gdbstub.c | 2 +-
> > target/ppc/helper.h | 2 +-
> > target/ppc/misc_helper.c | 60 +++++++++++--
> > target/ppc/translate.c | 8 ++
> > .../ppc/translate/processor-ctrl-impl.c.inc | 2 +-
> > 9 files changed, 140 insertions(+), 34 deletions(-)
> >
> > diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
> > index 80b4706db2..e30853413b 100644
> > --- a/hw/ppc/ppc.c
> > +++ b/hw/ppc/ppc.c
> > @@ -1434,6 +1434,12 @@ int ppc_cpu_pir(PowerPCCPU *cpu)
> > return env->spr_cb[SPR_PIR].default_value;
> > }
> >
> > +int ppc_cpu_tir(PowerPCCPU *cpu)
> > +{
> > + CPUPPCState *env = &cpu->env;
> > + return env->spr_cb[SPR_PIR].default_value;
>
> PIR or TIR ?
Good catch, I think I "tidied" that up before sending it :\
> > @@ -3154,22 +3172,42 @@ void helper_book3s_msgclrp(CPUPPCState *env, target_ulong rb)
> > }
> >
> > /*
> > - * sends a message to other threads that are on the same
> > + * sends a message to another thread on the same
> > * multi-threaded processor
> > */
> > void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb)
> > {
> > - int pir = env->spr_cb[SPR_PIR].default_value;
> > + CPUState *cs = env_cpu(env);
> > + PowerPCCPU *cpu = POWERPC_CPU(cs);
> > + CPUState *ccs;
> > + uint32_t nr_threads = cs->nr_threads;
> > + int ttir = rb & PPC_BITMASK(57, 63);
> >
> > helper_hfscr_facility_check(env, HFSCR_MSGP, "msgsndp", HFSCR_IC_MSGP);
> >
> > - if (!dbell_type_server(rb)) {
> > + if (!dbell_type_server(rb) || ttir >= nr_threads) {
>
> may be log bad ttir values ? even if the insn is a no-op in that case,
> telling the user would be good since it should be a guest os issue
Yeah. We don't seem to do that on a systematic basis in PPC but we
probably should. It's certainly helped me before when I've got
something wrong. Good idea.
> > @@ -192,14 +192,38 @@ void helper_store_pcr(CPUPPCState *env, target_ulong value)
> > */
> > target_ulong helper_load_dpdes(CPUPPCState *env)
> > {
> > + CPUState *cs = env_cpu(env);
> > + CPUState *ccs;
> > + uint32_t nr_threads = cs->nr_threads;
> > + uint32_t core_id = env->spr[SPR_PIR] & ~(nr_threads - 1);
>
> you could add an helper for the above.
Yes.
Thanks,
Nick
next prev parent reply other threads:[~2023-06-02 6:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-31 1:23 [RFC PATCH 0/5] target/ppc: initial SMT support in TCG Nicholas Piggin
2023-05-31 1:23 ` [RFC PATCH 1/5] target/ppc: gdbstub init spr gdb_id for all CPUs Nicholas Piggin
2023-05-31 5:49 ` Philippe Mathieu-Daudé
2023-06-23 9:26 ` Cédric Le Goater
2023-05-31 1:23 ` [RFC PATCH 2/5] target/ppc: Add initial flags and helpers for SMT support Nicholas Piggin
2023-05-31 7:25 ` Cédric Le Goater
2023-06-02 6:54 ` Nicholas Piggin
2023-05-31 1:23 ` [RFC PATCH 3/5] target/ppc: Add support for SMT CTRL register Nicholas Piggin
2023-05-31 1:23 ` [RFC PATCH 4/5] target/ppc: Add msgsnd/p and DPDES SMT support Nicholas Piggin
2023-06-01 7:13 ` Cédric Le Goater
2023-06-02 6:56 ` Nicholas Piggin [this message]
2023-05-31 1:23 ` [RFC PATCH 5/5] spapr: Allow up to 8 threads SMT configuration Nicholas Piggin
2023-06-01 7:20 ` Cédric Le Goater
2023-06-02 6:59 ` Nicholas Piggin
2023-06-02 7:04 ` Cédric Le Goater
2023-06-05 10:29 ` Nicholas Piggin
2023-06-01 7:56 ` [RFC PATCH 0/5] target/ppc: initial SMT support in TCG Cédric Le Goater
2023-06-02 7:01 ` Nicholas Piggin
2023-06-02 7:21 ` Cédric Le Goater
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=CT1YVK35L3UT.2CY7LU5L7GDG4@wheely \
--to=npiggin@gmail.com \
--cc=clg@kaod.org \
--cc=dbarboza@ventanamicro.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 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.