linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Joel Schopp <jschopp@austin.ibm.com>
To: Michael Neuling <mikey@neuling.org>
Cc: linuxppc-dev@ozlabs.org, Paul Mackerras <paulus@samba.org>
Subject: Re: powerpc: Add cputable entry for POWER7
Date: Wed, 18 Jun 2008 11:18:40 -0500	[thread overview]
Message-ID: <48593560.9080107@austin.ibm.com> (raw)
In-Reply-To: <16237.1213750046@neuling.org>

I'll send out some additional entries in a minute when I rebase what I 
have on this.  I think a couple of those lines were originally authored 
by me so...

Signed-off-by: Joel Schopp <jschopp@austin.ibm.com>

Michael Neuling wrote:
> Add a cputable entry for the POWER7 processor.  
>
> Also tell firmware that we know about POWER7.
>
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> --- 
> Paulus: please consider for your 2.6.27 tree.
>
>  arch/powerpc/kernel/cputable.c  |   25 +++++++++++++++++++++++++
>  arch/powerpc/kernel/misc.S      |    5 +++++
>  arch/powerpc/kernel/prom_init.c |    1 +
>  include/asm-powerpc/cputable.h  |   12 ++++++++++--
>  4 files changed, 41 insertions(+), 2 deletions(-)
>
> Index: linux-2.6-ozlabs/arch/powerpc/kernel/cputable.c
> ===================================================================
> --- linux-2.6-ozlabs.orig/arch/powerpc/kernel/cputable.c
> +++ linux-2.6-ozlabs/arch/powerpc/kernel/cputable.c
> @@ -52,6 +52,8 @@ extern void __setup_cpu_ppc970MP(unsigne
>  extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec);
>  extern void __restore_cpu_pa6t(void);
>  extern void __restore_cpu_ppc970(void);
> +extern void __setup_cpu_power7(unsigned long offset, struct cpu_spec* spec);
> +extern void __restore_cpu_power7(void);
>  #endif /* CONFIG_PPC64 */
>  
>  /* This table only contains "desktop" CPUs, it need to be filled with embedded
> @@ -68,6 +70,9 @@ extern void __restore_cpu_ppc970(void);
>  #define COMMON_USER_POWER6	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
>  				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
>  				 PPC_FEATURE_TRUE_LE)
> +#define COMMON_USER_POWER7	(COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
> +				 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
> +				 PPC_FEATURE_TRUE_LE)
>  #define COMMON_USER_PA6T	(COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
>  				 PPC_FEATURE_TRUE_LE | \
>  				 PPC_FEATURE_HAS_ALTIVEC_COMP)
> @@ -380,6 +385,26 @@ static struct cpu_spec __initdata cpu_sp
>  		.machine_check		= machine_check_generic,
>  		.platform		= "power6",
>  	},
> +	{	/* Power7 */
> +		.pvr_mask		= 0xffff0000,
> +		.pvr_value		= 0x003f0000,
> +		.cpu_name		= "POWER7",
> +		.cpu_features		= CPU_FTRS_POWER7,
> +		.cpu_user_features	= COMMON_USER_POWER7,
> +		.icache_bsize		= 128,
> +		.dcache_bsize		= 128,
> +		.num_pmcs		= 6,
> +		.pmc_type		= PPC_PMC_IBM,
> +		.cpu_setup		= __setup_cpu_power7,
> +		.cpu_restore		= __restore_cpu_power7,
> +		.oprofile_cpu_type	= "ppc64/power7",
> +		.oprofile_type		= PPC_OPROFILE_POWER4,
> +		.oprofile_mmcra_sihv	= POWER6_MMCRA_SIHV,
> +		.oprofile_mmcra_sipr	= POWER6_MMCRA_SIPR,
> +		.oprofile_mmcra_clear	= POWER6_MMCRA_THRM |
> +			POWER6_MMCRA_OTHER,
> +		.platform		= "power7",
> +	},
>  	{	/* Cell Broadband Engine */
>  		.pvr_mask		= 0xffff0000,
>  		.pvr_value		= 0x00700000,
> Index: linux-2.6-ozlabs/arch/powerpc/kernel/misc.S
> ===================================================================
> --- linux-2.6-ozlabs.orig/arch/powerpc/kernel/misc.S
> +++ linux-2.6-ozlabs/arch/powerpc/kernel/misc.S
> @@ -116,3 +116,8 @@ _GLOBAL(longjmp)
>  	mtlr	r0
>  	mr	r3,r4
>  	blr
> +
> +_GLOBAL(__setup_cpu_power7)
> +_GLOBAL(__restore_cpu_power7)
> +	/* place holder */
> +	blr
> Index: linux-2.6-ozlabs/arch/powerpc/kernel/prom_init.c
> ===================================================================
> --- linux-2.6-ozlabs.orig/arch/powerpc/kernel/prom_init.c
> +++ linux-2.6-ozlabs/arch/powerpc/kernel/prom_init.c
> @@ -650,6 +650,7 @@ static void __init early_cmdline_parse(v
>  static unsigned char ibm_architecture_vec[] = {
>  	W(0xfffe0000), W(0x003a0000),	/* POWER5/POWER5+ */
>  	W(0xffff0000), W(0x003e0000),	/* POWER6 */
> +	W(0xffff0000), W(0x003f0000),	/* POWER7 */
>  	W(0xffffffff), W(0x0f000002),	/* all 2.05-compliant */
>  	W(0xfffffffe), W(0x0f000001),	/* all 2.04-compliant and earlier */
>  	5 - 1,				/* 5 option vectors */
> Index: linux-2.6-ozlabs/include/asm-powerpc/cputable.h
> ===================================================================
> --- linux-2.6-ozlabs.orig/include/asm-powerpc/cputable.h
> +++ linux-2.6-ozlabs/include/asm-powerpc/cputable.h
> @@ -26,6 +26,7 @@
>  #define PPC_FEATURE_PA6T		0x00000800
>  #define PPC_FEATURE_HAS_DFP		0x00000400
>  #define PPC_FEATURE_POWER6_EXT		0x00000200
> +#define PPC_FEATURE_ARCH_2_06		0x00000100
>  
>  #define PPC_FEATURE_TRUE_LE		0x00000002
>  #define PPC_FEATURE_PPC_LE		0x00000001
> @@ -376,6 +377,12 @@ extern void do_feature_fixups(unsigned l
>  	    CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \
>  	    CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
>  	    CPU_FTR_DSCR)
> +#define CPU_FTRS_POWER7 (CPU_FTR_USE_TB | \
> +	    CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
> +	    CPU_FTR_MMCRA | CPU_FTR_SMT | \
> +	    CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \
> +	    CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
> +	    CPU_FTR_DSCR)
>  #define CPU_FTRS_CELL	(CPU_FTR_USE_TB | \
>  	    CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
>  	    CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
> @@ -391,7 +398,8 @@ extern void do_feature_fixups(unsigned l
>  #define CPU_FTRS_POSSIBLE	\
>  	    (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 |	\
>  	    CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 |	\
> -	    CPU_FTRS_CELL | CPU_FTRS_PA6T | CPU_FTR_1T_SEGMENT)
> +	    CPU_FTRS_POWER7 | CPU_FTRS_CELL | CPU_FTRS_PA6T |		\
> +	    CPU_FTR_1T_SEGMENT)
>  #else
>  enum {
>  	CPU_FTRS_POSSIBLE =
> @@ -431,7 +439,7 @@ enum {
>  #define CPU_FTRS_ALWAYS		\
>  	    (CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 &	\
>  	    CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_POWER6 &	\
> -	    CPU_FTRS_CELL & CPU_FTRS_PA6T & CPU_FTRS_POSSIBLE)
> +	    CPU_FTRS_POWER7 & CPU_FTRS_CELL & CPU_FTRS_PA6T & CPU_FTRS_POSSIBLE)
>  #else
>  enum {
>  	CPU_FTRS_ALWAYS =
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>   

      reply	other threads:[~2008-06-18 16:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-18  0:47 powerpc: Add cputable entry for POWER7 Michael Neuling
2008-06-18 16:18 ` Joel Schopp [this message]

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=48593560.9080107@austin.ibm.com \
    --to=jschopp@austin.ibm.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mikey@neuling.org \
    --cc=paulus@samba.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).