Re: [PATCH v2 1/7] powerpc: Add TIDR CPU feature for Power9

From: Alastair D'Silva
Date: Mon May 07 2018 - 23:13:53 EST


On Mon, 2018-05-07 at 19:17 +0200, Frederic Barrat wrote:
>
> Le 18/04/2018 Ã 03:08, Alastair D'Silva a Ãcrit :
> > From: Alastair D'Silva <alastair@xxxxxxxxxxx>
> >
> > This patch adds a CPU feature bit to show whether the CPU has
> > the TIDR register available, enabling as_notify/wait in userspace.
> >
> > Signed-off-by: Alastair D'Silva <alastair@xxxxxxxxxxx>
> > ---
> > arch/powerpc/include/asm/cputable.h | 3 ++-
> > arch/powerpc/kernel/dt_cpu_ftrs.c | 1 +
> > 2 files changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/powerpc/include/asm/cputable.h
> > b/arch/powerpc/include/asm/cputable.h
> > index 4e332f3531c5..54c4cbbe57b4 100644
> > --- a/arch/powerpc/include/asm/cputable.h
> > +++ b/arch/powerpc/include/asm/cputable.h
> > @@ -215,6 +215,7 @@ static inline void cpu_feature_keys_init(void)
> > { }
> > #define CPU_FTR_P9_TM_HV_ASSIST LONG_ASM_CONST(0x0
> > 000100000000000)
> > #define CPU_FTR_P9_TM_XER_SO_BUG LONG_ASM_CONST(0x00002000
> > 00000000)
> > #define CPU_FTR_P9_TLBIE_BUG LONG_ASM_CONST(0x0000
> > 400000000000)
> > +#define CPU_FTR_P9_TIDR LONG_ASM_CONST(0x00
> > 00800000000000)
> >
> > #ifndef __ASSEMBLY__
> >
> > @@ -462,7 +463,7 @@ static inline void cpu_feature_keys_init(void)
> > { }
> > CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
> > CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_ARCH_207S |
> > \
> > CPU_FTR_TM_COMP | CPU_FTR_ARCH_300 | CPU_FTR_PKEY | \
> > - CPU_FTR_P9_TLBIE_BUG)
> > + CPU_FTR_P9_TLBIE_BUG | CPU_FTR_P9_TIDR)
> > #define CPU_FTRS_POWER9_DD1 ((CPU_FTRS_POWER9 |
> > CPU_FTR_POWER9_DD1) & \
> > (~CPU_FTR_SAO))
> > #define CPU_FTRS_POWER9_DD2_0 CPU_FTRS_POWER9
> > diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c
> > b/arch/powerpc/kernel/dt_cpu_ftrs.c
> > index 11a3a4fed3fb..10f8b7f55637 100644
> > --- a/arch/powerpc/kernel/dt_cpu_ftrs.c
> > +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c
> > @@ -722,6 +722,7 @@ static __init void cpufeatures_cpu_quirks(void)
> > if ((version & 0xffff0000) == 0x004e0000) {
> > cur_cpu_spec->cpu_features &= ~(CPU_FTR_DAWR);
> > cur_cpu_spec->cpu_features |=
> > CPU_FTR_P9_TLBIE_BUG; > + cur_cpu_spec->cpu_features
> > |= CPU_FTR_P9_TIDR;
>
>
> Isn't it redundant with adding the flag to CPU_FTRS_POWER9?
>
> Fred
>

No, cpu_features is populated from device tree, not from
CPU_FTRS_POWER9. Since TIDR will not be explicitly requested in the
device tree, we need to handle it in quirks.

--
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819