[Pdbg] [PATCH 05/10] libpdbg: implement fused-core and lpar-per-thread thread status
Joel Stanley
joel at jms.id.au
Thu Aug 4 15:45:29 AEST 2022
On Tue, 31 May 2022 at 09:15, Nicholas Piggin <npiggin at gmail.com> wrote:
>
> Like smt_state, these are really a per-core state but for now they are
> put in the thread_state. A future change will use fused-core, and the
> lpar mode may be generally useful to know in some situations.
>
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
> libpdbg/libpdbg.h | 2 ++
> libpdbg/p10chip.c | 3 +++
> libpdbg/p8chip.c | 3 +++
> libpdbg/p9chip.c | 3 +++
> 4 files changed, 11 insertions(+)
>
> diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
> index 05e54f76..252b1b16 100644
> --- a/libpdbg/libpdbg.h
> +++ b/libpdbg/libpdbg.h
> @@ -1043,6 +1043,8 @@ enum pdbg_smt_state {
> struct thread_state {
> bool active;
> bool quiesced;
> + bool lpar_per_thread;
> + bool fused_core_mode;
> enum pdbg_sleep_state sleep_state;
> enum pdbg_smt_state smt_state;
> };
> diff --git a/libpdbg/p10chip.c b/libpdbg/p10chip.c
> index 70481f1f..632a1a9c 100644
> --- a/libpdbg/p10chip.c
> +++ b/libpdbg/p10chip.c
> @@ -107,6 +107,9 @@ struct thread_state p10_thread_state(struct thread *thread)
> else
> thread_state.sleep_state = PDBG_THREAD_STATE_RUN;
>
> + thread_state.lpar_per_thread = !(value & PPC_BIT(62));
> + thread_state.fused_core_mode = !!(value & PPC_BIT(63));
> +
> return thread_state;
> }
>
> diff --git a/libpdbg/p8chip.c b/libpdbg/p8chip.c
> index 5b2a90a9..0592ca08 100644
> --- a/libpdbg/p8chip.c
> +++ b/libpdbg/p8chip.c
> @@ -247,6 +247,9 @@ static struct thread_state p8_thread_state(struct thread *thread)
> /* Clear debug mode */
> pib_write(&thread->target, RAS_MODE_REG, mode_reg);
>
> + thread_state.lppar_per_thread = false;
> + thread_state.fused_core_mode = false;
There were a few typos here that I fixed when applying:
- thread_state.lppar_per_thread = false;
- thread_state.fused_core_mode = false;
+ thread_status.lpar_per_thread = false;
+ thread_status.fused_core_mode = false;
> +
> return thread_status;
> }
>
> diff --git a/libpdbg/p9chip.c b/libpdbg/p9chip.c
> index 0040402c..036be521 100644
> --- a/libpdbg/p9chip.c
> +++ b/libpdbg/p9chip.c
> @@ -128,6 +128,9 @@ struct thread_state p9_thread_state(struct thread *thread)
> else
> thread_state.sleep_state = PDBG_THREAD_STATE_RUN;
>
> + thread_state.lpar_per_thread = !(value & PPC_BIT(62));
> + thread_state.fused_core_mode = !!(value & PPC_BIT(63));
> +
> return thread_state;
> }
>
> --
> 2.35.1
>
> --
> Pdbg mailing list
> Pdbg at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/pdbg
More information about the Pdbg
mailing list