Subject: Re: [PATCH] powerpc: Add cputable definition for POWER8 DD1

From: Benjamin Herrenschmidt <[email-masked]>
Date: Sat, 19 Jul 2014 09:12:16 +1000

On Fri, 2014-07-18 at 15:10 +1000, Michael Neuling wrote:
> On Fri, 2014-07-18 at 11:41 +0930, Joel Stanley wrote:
> > These processors do not currently support doorbell IPIs, so remove them
> > from the feature list if we are at DD 1.xx for the 0x004d part.
> 
> We GAed with DD2.1 and generally we don't upstream anything that isn't
> GAed.  Plus, if you wanna go down this path, you are going to have to
> fix a lot more bugs than this one (not that our early chips had bugs or
> anything).  
> 
> I suggested you crush your crappy DD1 parts into cubes and ask for some
> shiny new DD2.1 parts.

This is Venice, not Murano. We are going to have some of these guys
out there with the initial batch of dev boards.

.../..

> Humm, well doorbells worked on DD1 so i'm not sure this is entirely your
> problem.  There was an issue related to powersave that Ian posted a fix
> for but we never needed it as the issue was fixed before GA.
> 
> http://patchwork.ozlabs.org/patch/240338/
> 
> So NAK again.

Actually he did what I asked him to do :-)

Between Ian's workaround and just disabling DB on DD1, I prefer just
disabling DB on DD1. The fix is more crappy obscure asm to carry around
and I think it might cause spurrious DBs on non-broken CPUs.

Cheers,
Ben.

> Mikey
> 
> > Fixes: d4e58e5928f8 (powerpc/powernv: Enable POWER8 doorbell IPIs)
> > Signed-off-by: Joel Stanley <[email-masked]>
> > ---
> >  arch/powerpc/include/asm/cputable.h |  1 +
> >  arch/powerpc/kernel/cputable.c      | 20 ++++++++++++++++++++
> >  2 files changed, 21 insertions(+)
> > 
> > diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
> > index bc23477..0fdd7ee 100644
> > --- a/arch/powerpc/include/asm/cputable.h
> > +++ b/arch/powerpc/include/asm/cputable.h
> > @@ -447,6 +447,7 @@ extern const char *powerpc_base_platform;
> >  	    CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \
> >  	    CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP)
> >  #define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG)
> > +#define CPU_FTRS_POWER8_DD1 (CPU_FTRS_POWER8 & ~CPU_FTR_DBELL)
> >  #define CPU_FTRS_CELL	(CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
> >  	    CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
> >  	    CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
> > diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
> > index 965291b..0c15764 100644
> > --- a/arch/powerpc/kernel/cputable.c
> > +++ b/arch/powerpc/kernel/cputable.c
> > @@ -527,6 +527,26 @@ static struct cpu_spec __initdata cpu_specs[] = {
> >  		.machine_check_early	= __machine_check_early_realmode_p8,
> >  		.platform		= "power8",
> >  	},
> > +	{	/* Power8 DD1: Does not support doorbell IPIs */
> > +		.pvr_mask		= 0xffffff00,
> > +		.pvr_value		= 0x004d0100,
> > +		.cpu_name		= "POWER8 (raw)",
> > +		.cpu_features		= CPU_FTRS_POWER8_DD1,
> > +		.cpu_user_features	= COMMON_USER_POWER8,
> > +		.cpu_user_features2	= COMMON_USER2_POWER8,
> > +		.mmu_features		= MMU_FTRS_POWER8,
> > +		.icache_bsize		= 128,
> > +		.dcache_bsize		= 128,
> > +		.num_pmcs		= 6,
> > +		.pmc_type		= PPC_PMC_IBM,
> > +		.oprofile_cpu_type	= "ppc64/power8",
> > +		.oprofile_type		= PPC_OPROFILE_INVALID,
> > +		.cpu_setup		= __setup_cpu_power8,
> > +		.cpu_restore		= __restore_cpu_power8,
> > +		.flush_tlb		= __flush_tlb_power8,
> > +		.machine_check_early	= __machine_check_early_realmode_p8,
> > +		.platform		= "power8",
> > +	},
> >  	{	/* Power8 */
> >  		.pvr_mask		= 0xffff0000,
> >  		.pvr_value		= 0x004d0000,