[RFC] reorganize cputypes for PPC64

2008-07-12 Thread Marvin
Hi,

attached patch introduces a "processor type" menu similar to ppc32. It 
_should_ not change anything upto now. 

The aim is to allow future fine graded cpu optimizations via mcpu/mtune 
compiler flags and also to clean up the arch Makefile/Kconfig.cputypes (I 
know this is a minefield).

Greetings

Marvin

diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index f7efaa9..eebde6c 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -54,35 +54,65 @@ config E200
 
 endchoice
 
-config POWER4_ONLY
-	bool "Optimize for POWER4"
+choice
+	prompt "Processor Type"
 	depends on PPC64
+	default TUNE_POWER4
+	help
+	  There are serveral families of 64 bit PowerPC chips supported.
+	  These include the Power3 to Power6 series, 970, and Cell BE based
+	  CPUs made be IBM.
+
+	  If unsure, select Power4.
+
+config TUNE_POWER3
+	bool "Power3"
+
+config TUNE_POWER4
+	bool "Power4"
+
+config TUNE_970
+	bool "970/G5"
+
+config TUNE_POWER5
+	bool "Power5"
+
+config TUNE_POWER6
+	bool "Power6"
+
+config TUNE_CELL
+	bool "Cell Broadband Engine"
+	help
+	  Cause the compiler to optimize for the PPE of the Cell Broadband
+	  Engine. This will make the code run considerably faster on Cell
+	  but somewhat slower on other machines. If the resulting kernel is
+	  built to run only on Cell BE machines, select also OPT_EXCLUSIVE.
+
+endchoice
+
+config OPT_EXCLUSIVE
+	bool "Optimize to run exclusive on selected CPU"
 	default n
-	---help---
-	  Cause the compiler to optimize for POWER4/POWER5/PPC970 processors.
-	  The resulting binary will not work on POWER3 or RS64 processors
-	  when compiled with binutils 2.15 or later.
+	help
+	  Cause the compiler to optimize to run exclusive on the selected
+	  CPU. The resulting binary will probably not work on other CPUs.
+	  
+	  If the compiler/binutils combination does not support the exclusive
+	  optimization, it will try to tune only or fail.
+	  
+	  If you are unsure, select no.
 
 config POWER3
-	bool
 	depends on PPC64
-	default y if !POWER4_ONLY
+	def_bool y if !POWER4_ONLY
 
 config POWER4
 	depends on PPC64
 	def_bool y
 
-config TUNE_CELL
-	bool "Optimize for Cell Broadband Engine"
+config POWER4_ONLY
 	depends on PPC64
-	help
-	  Cause the compiler to optimize for the PPE of the Cell Broadband
-	  Engine. This will make the code run considerably faster on Cell
-	  but somewhat slower on other machines. This option only changes
-	  the scheduling of instructions, not the selection of instructions
-	  itself, so the resulting kernel will keep running on all other
-	  machines. When building a kernel that is supposed to run only
-	  on Cell, you should also select the POWER4_ONLY option.
+	def_bool y if TUNE_POWER4 && OPT_EXCLUSIVE
 
 config 6xx
 	bool
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: [RFC] reorganize cputypes for PPC64

2008-07-13 Thread Marvin
Hi,

On Saturday 12 July 2008 20:00:05 Arnd Bergmann wrote:
> On Saturday 12 July 2008, Marvin wrote:
> > attached patch introduces a "processor type" menu similar to ppc32. It
> > _should_ not change anything upto now.
> >
> > The aim is to allow future fine graded cpu optimizations via mcpu/mtune
> > compiler flags and also to clean up the arch Makefile/Kconfig.cputypes (I
> > know this is a minefield).
>
> I tried something similar last year, but failed miserably, because the
> complexity cannot really be contained. I still think it's a good idea,
> but I'm not sure whether your patch will help at all.

before I try to change something, I like to get some feedback about the 
direction to take. Therefore your comments are more than welcome.

> > diff --git a/arch/powerpc/platforms/Kconfig.cputype
> > b/arch/powerpc/platforms/Kconfig.cputype index f7efaa9..eebde6c 100644
> > --- a/arch/powerpc/platforms/Kconfig.cputype
> > +++ b/arch/powerpc/platforms/Kconfig.cputype
> > @@ -54,35 +54,65 @@ config E200
> >
> >  endchoice
> >
> > -config POWER4_ONLY
> > -   bool "Optimize for POWER4"
> > +choice
> > +   prompt "Processor Type"
> > depends on PPC64
> > +   default TUNE_POWER4
> > +   help
> > + There are serveral families of 64 bit PowerPC chips supported.
> > + These include the Power3 to Power6 series, 970, and Cell BE
> > based + CPUs made be IBM.
> > +
> > + If unsure, select Power4.
> > +
> > +config TUNE_POWER3
> > +   bool "Power3"
> > +
> > +config TUNE_POWER4
> > +   bool "Power4"
> > +
> > +config TUNE_970
> > +   bool "970/G5"
> > +
> > +config TUNE_POWER5
> > +   bool "Power5"
> > +
> > +config TUNE_POWER6
> > +   bool "Power6"
> > +
> > +config TUNE_CELL
> > +   bool "Cell Broadband Engine"
> > +   help
> > + Cause the compiler to optimize for the PPE of the Cell
> > Broadband + Engine. This will make the code run considerably
> > faster on Cell + but somewhat slower on other machines. If the
> > resulting kernel is + built to run only on Cell BE machines,
> > select also OPT_EXCLUSIVE. +
> > +endchoice
>
> What about the other CPUs? There is also RS64, Power5+, PA6T and Power7.

I grepped the source (especially the defconfigs) and it seems, that there is 
only one distinction between the different PPC64 archs named POWER3. POWER4 
is always set on PPC64 archs, POWER3 is not set on G5, maple and pasemi. 

Grepping further reveals, that POWER3 is mentioned in mm/pgtable_32.c only, 
where is used to define HAVE_BATS (it exists also in asm/cputable.h, which is 
a candidate for cleanup -> replace !POWER4 && !POWER3 by !PPC64).

My daring conclusion is therefore:
1. POWER3 could be replaced by HAVE_BATS
2. POWER4 could be replaced by PPC64

The only processor dependant config left is the tuning option. gcc has no 
special option for power7 or pa6t yet, but the reorg should be flexible, so 
new tuning options can be added easily. RS64 could be added to the tuneing 
options. 

> > +
> > +config OPT_EXCLUSIVE
> > +   bool "Optimize to run exclusive on selected CPU"
> > default n
> > -   ---help---
> > - Cause the compiler to optimize for POWER4/POWER5/PPC970
> > processors. - The resulting binary will not work on POWER3 or
> > RS64 processors - when compiled with binutils 2.15 or later.
> > +   help
> > + Cause the compiler to optimize to run exclusive on the selected
> > + CPU. The resulting binary will probably not work on other CPUs.
> > +
> > + If the compiler/binutils combination does not support the
> > exclusive + optimization, it will try to tune only or fail.
> > +
> > + If you are unsure, select no.
>
> Almost all CPUs are backwards compatible, so the option should not
> be labelled 'exclusive'. In general, if you build for PowerX, it will
> also run on Power(X+1). 970 is backwards compatible to Power4, Cell
> and PA6T are backwards compatible to 970, Power6 is backwards compatible
> to both of these.
>
> Also, there are good reasons to have the -mcpu option different from
> -mtune. E.g. you may want to use Power4 compatible instructions but
> tune for Power6 in a typical distro kernel.

ok. That would mean to have two config menus:
- optimize to run exclusive on cpu_x or higher
- tune 

Re: removal of arch/ppc in 2.6.27?

2008-04-20 Thread Marvin
Hi,

On Saturday 19 April 2008 17:30:10 Kumar Gala wrote:
> This is intended as a reminder that we plan on getting rid of arch/ppc
> this summer.  I'm guessing based on kernel release times that will be
> 2.6.27.  That would mean 2.6.26 will be the last kernel to support
> arch/ppc.
>
> If people have boards that like ported over please let us know and
> work with us to port this over to arch/powerpc.
>
> Here is a list based on arch/ppc/platforms.  Its not intended to be
> complete but a general idea of what's left in arch/ppc.
>
> PPC_PREPe6xx

will this be the end of life for all the PReP's ? I remember a patch posted 
some month ago, but didn't heard anything since then. Any news? Or just let 
it die quietly?

Marvin

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: removal of arch/ppc in 2.6.27?

2008-04-20 Thread Marvin

Hi Paul,

On Sunday 20 April 2008 14:27:27 Paul Mackerras wrote:
> Marvin writes:
> > will this be the end of life for all the PReP's ? I remember a patch
> > posted some month ago, but didn't heard anything since then. Any news? Or
> > just let it die quietly?
>
> No, I'm still planning on getting PReP support over to arch/powerpc,
> but getting time to work on it has been the difficulty.
>
> What sort of PReP do you have?

IBM 7248 (aka Carolina) and Motorola Powerstack II (aka Utah) - currently 
running Debian with 2.6.18 kernel.

Marvin


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [patch 5/5] PS3: Update ps3_defconfig

2008-05-02 Thread Marvin

Hi Geoff,

what about adding these defaults:
- CONFIG_SCHED_SMT
- CONFIG_HUGETLBFS (needed by ibm cell sdk) 


not sure about:
- CONFIG_SPU_FS_64K_LS

Greetings

Marvin

On Thursday 01 May 2008 00:25:36 Geoff Levand wrote:
> Update ps3_defconfig.
>
> Signed-off-by: Geoff Levand <[EMAIL PROTECTED]>
> ---
>  arch/powerpc/configs/ps3_defconfig |  132
> +++-- 1 file changed, 84 insertions(+), 48
> deletions(-)
>
> --- a/arch/powerpc/configs/ps3_defconfig
> +++ b/arch/powerpc/configs/ps3_defconfig
> @@ -1,7 +1,7 @@
>  #
>  # Automatically generated make config: don't edit
> -# Linux kernel version: 2.6.25-rc6
> -# Thu Mar 20 11:07:04 2008
> +# Linux kernel version: 2.6.25
> +# Mon Apr 28 12:39:10 2008
>  #
>  CONFIG_PPC64=y
> [...]
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [patch 5/5] PS3: Update ps3_defconfig

2008-05-06 Thread Marvin

Hi Geoff,

On Monday 05 May 2008 21:00:47 you wrote:
> Marvin wrote:
> > what about adding these defaults:
> > - CONFIG_SCHED_SMT
> > - CONFIG_HUGETLBFS (needed by ibm cell sdk)

I'm using these for years now ;-)

> > not sure about:
> > - CONFIG_SPU_FS_64K_LS

I also have this option enabled. I think you can forget about it, as it seems 
to improve performance only in some corner cases. I'm not an expert, so maybe 
asking at cbe-oss-dev would be a better place. 

Thanks

Marvin

p.s. I installed fc9 last week and Xorg crashes when PCI is not enabled. just 
in case someone has the same problem.

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [Cbe-oss-dev] Xorg crash when PCI not enabled

2008-05-06 Thread Marvin

Hi Dan,

On Tuesday 06 May 2008 11:44:12 Dan Munckton wrote:
> Hi
>
> On Tue, 2008-05-06 at 10:14 +0200, Marvin wrote:
> > p.s. I installed fc9 last week and Xorg crashes when PCI is not
> > enabled. just
> > in case someone has the same problem.
>
> The Ubuntu PS3 team is also working on an a couple of bugs relating to
> lack of PCI info. I don't know if these are the same issues you're
> facing. We're tracking them here at [0] and [2].
>
> We had an initial crash was simple to fix [1]. Now we need to get X to
> automatically load the fbdev driver instead of vesa [2].

Fedora uses a newer Xorg (1.5.0 RC1) then Ubuntu. It seems that the 
detection/scanning code was changed. For me, it crashes right behind "using 
VT number 7", where a file in /sys/bus/pci is accessed (which of course does 
not exist), so its not related to the other mentioned bugs. I'm hesitating to 
file a fedora bug report, because the default kernel works. It's more a Xorg 
bug to assume everyone has PCI ...

Greetings

Marvin
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


32-bit kernel on PPC64 supported?

2008-07-18 Thread Marvin

Hi,

while trying to cleanup some configs/makefiles for ppc64 I noticed, that 
CONFIG_POWER4 implies CONFIG_PPC64 and vice versa in all defconfigs.
So I want to boldly replace CONFIG_POWER4 by CONFIG_PPC64 - ugh.

However, there are some constructs like:

#ifndef CONFIG_PPC64
...
#ifdef CONFIG_POWER4
...
#endif
...
#endif /* CONFIG_PPC64 */

in which POWER4 is always undefined, e.g. in 
include/asm-powerpc/mmu_context.h. Maybe this is a leftover from times, where 
64-bit kernels where not supported on Powermacs. Is this 32-bit support still 
necessary?

Greetings

Marvin
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: 32-bit kernel on PPC64 supported?

2008-07-19 Thread Marvin

Hi,

On Saturday 19 July 2008 00:14:35 Benjamin Herrenschmidt wrote:
> On Fri, 2008-07-18 at 20:43 +0200, Marvin wrote:
> > Hi,
> >
> > while trying to cleanup some configs/makefiles for ppc64 I noticed, that
> > CONFIG_POWER4 implies CONFIG_PPC64 and vice versa in all defconfigs.
> > So I want to boldly replace CONFIG_POWER4 by CONFIG_PPC64 - ugh.
>
> No, those are different.
>
> CONFIG_PPC64 means a 64 bits kernel.
>
> CONFIG_POWER4 means a 64 bits kernel that only runs on IBM POWER4 and
> later (ie, processors conforming to, iirc, version 2.01 or later of
> the architecture).
>
> That is, it's legal to have CONFIG_PPC64 and !CONFIG_POWER4, and this
> is even necessary if you want to boot on a POWER3 or an RS64 processor.

I don't want to replace CONFIG_POWER4 by void, but by something like 
CONFIG_TUNE_POWER4 (see my previous post, one week ago). So there is 
no "feature loss". CONFIG_POWER3 is used only to define HAVE_BATS, so I 
thought I can clean this up. 

> Now, there also used to be some 32 bits support for POWER4 and G5 but
> that has been dropped a while ago.

Ok - that's fine. 

I hope to finish my patches during the weekend, so things will become more 
clear. 

Greetings

Marvin


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[5/5] include tuning options into Makefile

2008-07-21 Thread Marvin

This patch finally adds mcpu/mtune options to the Makefile using the
previous introduced tuning mechanism.

Subject: [PATCH] include tuning options into Makefile

---
 arch/powerpc/Makefile |   41 +++--
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9629c5e..09f81a7 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -75,30 +75,35 @@ CPP = $(CC) -E $(KBUILD_CFLAGS)
 CHECKFLAGS 
+= -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
 
 ifeq ($(CONFIG_PPC64),y)
-GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; 
fi)
 
-ifeq ($(CONFIG_TUNE_POWER4),y)
-ifeq ($(CONFIG_OPT_EXCLUSIVE),y)
-ifeq ($(CONFIG_ALTIVEC),y)
-ifeq ($(GCC_BROKEN_VEC),y)
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=970)
+ifeq ($(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi),y)
+P4CPU := power4
 else
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
+P4CPU := 970
 endif
-else
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
-endif
-else
-   KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
-endif
-   KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
+
+# optimize for specific cpu
+ifeq ($(CONFIG_TUNE_RS64),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=rs64)
+else ifeq ($(CONFIG_TUNE_POWER3),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=power3)
+else ifeq ($(CONFIG_TUNE_POWER4),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=$(P4CPU))
+else ifeq ($(CONFIG_TUNE_CELL),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=cell,-mtune=cell)
+else ifeq ($(CONFIG_TUNE_POWER5),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=power5,-mtune=power5)
+else ifeq ($(CONFIG_TUNE_POWER6),y)
+KBUILD_CFLAGS += $(call cc-option,-mcpu=power6,-mtune=power6)
 endif
-else
-LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
+
+ifneq ($(CONFIG_OPT_EXCLUSIVE),y)
+KBUILD_CFLAGS := $(subst mcpu,mtune,$(KBUILD_CFLAGS))
 endif
 
-ifeq ($(CONFIG_TUNE_CELL),y)
-   KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
+else
+# !PPC64
+LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
 endif
 
 # No AltiVec instruction when building kernel
-- 
1.5.6.2



___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[1/5] add tune options to Kconfig.cputypes

2008-07-21 Thread Marvin

This patch adds tuning options similar to ppc32. In addition one can choose to 
compile exclusive for the selected (and higher) cpus.

Subject: [PATCH] add tune options to Kconfig.cputypes

---
 arch/powerpc/platforms/Kconfig.cputype |   79 ---
 1 files changed, 61 insertions(+), 18 deletions(-)

diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 5bc4b61..88e6ce2 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -54,35 +54,78 @@ config E200
 
 endchoice
 
-config POWER4_ONLY
-   bool "Optimize for POWER4"
+choice
+   prompt "Processor Type"
depends on PPC64
+   default TUNE_POWER4
+   help
+ There are serveral families of 64 bit PowerPC chips supported.
+ These include the RS64, Power3 to Power6 series, 970, and 
+ Cell BE based CPUs made be IBM.
+
+ If unsure, select Power4.
+
+config TUNE_RS64
+   bool "RS64"
+
+config TUNE_POWER3
+   bool "Power3"
+
+config TUNE_POWER4
+   bool "Power4"
+
+config TUNE_970
+   bool "970/G5"
+
+config TUNE_POWER5
+   bool "Power5"
+
+config TUNE_POWER6
+   bool "Power6"
+
+config TUNE_CELL
+   bool "Cell Broadband Engine"
+   help
+ Cause the compiler to optimize for the PPE of the Cell Broadband
+ Engine. This will make the code run considerably faster on Cell
+ but somewhat slower on other machines. If the resulting kernel is
+ built to run only on Cell BE machines, select also OPT_EXCLUSIVE.
+
+endchoice
+
+config OPT_EXCLUSIVE
+   bool "Optimize to run exclusive on selected CPU"
default n
-   ---help---
- Cause the compiler to optimize for POWER4/POWER5/PPC970 processors.
- The resulting binary will not work on POWER3 or RS64 processors
- when compiled with binutils 2.15 or later.
+   help
+ Cause the compiler to optimize to run exclusive on the selected
+ CPU. The resulting binary will probably not work on older CPUs, 
+ but should work on newer ones.
+ 
+ See the following chart for supported PPC64 CPU generations.
+ 
+ older <--> newer
+
+ RS64 -> POWER3 -> POWER4 -> POWER5 -> POWER6
+   970/G5
+   CELL BE
+   PA6T
+ 
+ If the compiler/binutils combination does not support the exclusive
+ optimization, it will try to tune only or fail.
+ 
+ If you are unsure, select no.
 
 config POWER3
-   bool
depends on PPC64
-   default y if !POWER4_ONLY
+   def_bool y if !POWER4_ONLY
 
 config POWER4
depends on PPC64
def_bool y
 
-config TUNE_CELL
-   bool "Optimize for Cell Broadband Engine"
+config POWER4_ONLY
depends on PPC64
-   help
- Cause the compiler to optimize for the PPE of the Cell Broadband
- Engine. This will make the code run considerably faster on Cell
- but somewhat slower on other machines. This option only changes
- the scheduling of instructions, not the selection of instructions
- itself, so the resulting kernel will keep running on all other
- machines. When building a kernel that is supposed to run only
- on Cell, you should also select the POWER4_ONLY option.
+   def_bool y if TUNE_POWER4 && OPT_EXCLUSIVE
 
 config 6xx
bool
-- 
1.5.6.2

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[3/5] replace CONFIG_POWER4 by CONFIG_PPC64

2008-07-21 Thread Marvin

This patch replaces all occurrences of CONFIG_POWER4 by CONFIG_PPC64 since it 
is redundant.

Subject: [PATCH] replace CONFIG_POWER4 by CONFIG_PPC64

---
 arch/powerpc/Makefile |2 +-
 arch/powerpc/configs/cell_defconfig   |1 -
 arch/powerpc/configs/celleb_defconfig |1 -
 arch/powerpc/configs/g5_defconfig |1 -
 arch/powerpc/configs/iseries_defconfig|1 -
 arch/powerpc/configs/maple_defconfig  |1 -
 arch/powerpc/configs/pasemi_defconfig |1 -
 arch/powerpc/configs/ppc64_defconfig  |1 -
 arch/powerpc/configs/ps3_defconfig|1 -
 arch/powerpc/configs/pseries_defconfig|1 -
 arch/powerpc/mm/ppc_mmu_32.c  |2 +-
 arch/powerpc/platforms/Kconfig.cputype|4 ---
 arch/powerpc/platforms/powermac/feature.c |   42 +---
 include/asm-powerpc/cputable.h|2 +-
 include/asm-powerpc/mmu_context.h |6 +---
 15 files changed, 25 insertions(+), 42 deletions(-)

diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9155c93..624a896 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -118,7 +118,7 @@ endif
 
 cpu-as-$(CONFIG_4xx)   += -Wa,-m405
 cpu-as-$(CONFIG_6xx)   += -Wa,-maltivec
-cpu-as-$(CONFIG_POWER4)+= -Wa,-maltivec
+cpu-as-$(CONFIG_PPC64) += -Wa,-maltivec
 cpu-as-$(CONFIG_E500)  += -Wa,-me500
 cpu-as-$(CONFIG_E200)  += -Wa,-me200
 
diff --git a/arch/powerpc/configs/cell_defconfig 
b/arch/powerpc/configs/cell_defconfig
index 579e996..42290e8 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/celleb_defconfig 
b/arch/powerpc/configs/celleb_defconfig
index c2761a7..a405836 100644
--- a/arch/powerpc/configs/celleb_defconfig
+++ b/arch/powerpc/configs/celleb_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/g5_defconfig 
b/arch/powerpc/configs/g5_defconfig
index 0ccc6e4..747088a 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -9,7 +9,6 @@ CONFIG_PPC64=y
 # Processor support
 #
 CONFIG_POWER4_ONLY=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/iseries_defconfig 
b/arch/powerpc/configs/iseries_defconfig
index 5237a6b..1b46033 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 # CONFIG_ALTIVEC is not set
diff --git a/arch/powerpc/configs/maple_defconfig 
b/arch/powerpc/configs/maple_defconfig
index 7a166a3..4becb7b 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_defconfig
@@ -9,7 +9,6 @@ CONFIG_PPC64=y
 # Processor support
 #
 CONFIG_POWER4_ONLY=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 # CONFIG_ALTIVEC is not set
diff --git a/arch/powerpc/configs/pasemi_defconfig 
b/arch/powerpc/configs/pasemi_defconfig
index 199e5f5..d816a3a 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -9,7 +9,6 @@ CONFIG_PPC64=y
 # Processor support
 #
 CONFIG_POWER4_ONLY=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/ppc64_defconfig 
b/arch/powerpc/configs/ppc64_defconfig
index 953d840..22276d2 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/ps3_defconfig 
b/arch/powerpc/configs/ps3_defconfig
index 2015c69..52a0895 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/pseries_defconfig 
b/arch/powerpc/configs/pseries_defconfig
index e163059..e0194e7 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -10,7 +10,6 @@ CONFIG_PPC64=y
 #
 # CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
-CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c
index c53145f..c3509c8 100644
--- a/arch/powerpc/mm/ppc_mmu_32.c
+++ b/arch/powerpc/mm/pp

[2/5] replace all occurrences of CONFIG_POWER3 by CONFIG_BATS64

2008-07-21 Thread Marvin

This patch replaces all occurrences of CONFIG_POWER3 by CONFIG_BATS64. It 
should have no effect on the output kernel.

Subject: [PATCH] replace all occurrences of CONFIG_POWER3 by 
CONFIG_BATS64

---
 arch/powerpc/configs/cell_defconfig|2 +-
 arch/powerpc/configs/celleb_defconfig  |2 +-
 arch/powerpc/configs/iseries_defconfig |2 +-
 arch/powerpc/configs/ppc64_defconfig   |2 +-
 arch/powerpc/configs/ps3_defconfig |2 +-
 arch/powerpc/configs/pseries_defconfig |2 +-
 arch/powerpc/mm/pgtable_32.c   |2 +-
 arch/powerpc/platforms/Kconfig.cputype |2 +-
 include/asm-powerpc/cputable.h |3 +--
 9 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/configs/cell_defconfig 
b/arch/powerpc/configs/cell_defconfig
index c420e47..579e996 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/celleb_defconfig 
b/arch/powerpc/configs/celleb_defconfig
index 9ba3c6f..c2761a7 100644
--- a/arch/powerpc/configs/celleb_defconfig
+++ b/arch/powerpc/configs/celleb_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/iseries_defconfig 
b/arch/powerpc/configs/iseries_defconfig
index 63f0bdb..5237a6b 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/ppc64_defconfig 
b/arch/powerpc/configs/ppc64_defconfig
index ce250bc..953d840 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/ps3_defconfig 
b/arch/powerpc/configs/ps3_defconfig
index 71d79e4..2015c69 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/pseries_defconfig 
b/arch/powerpc/configs/pseries_defconfig
index fe6ffa6..e163059 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -9,7 +9,7 @@ CONFIG_PPC64=y
 # Processor support
 #
 # CONFIG_POWER4_ONLY is not set
-CONFIG_POWER3=y
+CONFIG_BATS64=y
 CONFIG_POWER4=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index c758407..c4e8d86 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -38,7 +38,7 @@ unsigned long ioremap_base;
 unsigned long ioremap_bot;
 EXPORT_SYMBOL(ioremap_bot);/* aka VMALLOC_END */
 
-#if defined(CONFIG_6xx) || defined(CONFIG_POWER3)
+#if defined(CONFIG_6xx) || defined(CONFIG_BATS64)
 #define HAVE_BATS  1
 #endif
 
diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 88e6ce2..b343fdb 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -115,7 +115,7 @@ config OPT_EXCLUSIVE
  
  If you are unsure, select no.
 
-config POWER3
+config BATS64
depends on PPC64
def_bool y if !POWER4_ONLY
 
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h
index 2a3e907..0ef9abc 100644
--- a/include/asm-powerpc/cputable.h
+++ b/include/asm-powerpc/cputable.h
@@ -257,8 +257,7 @@ extern void do_feature_fixups(unsigned long value, void 
*fixup_start,
 #endif
 
 #define CLASSIC_PPC (!defined(CONFIG_8xx) && !defined(CONFIG_4xx) && \
-!defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \
-!defined(CONFIG_BOOKE))
+!defined(CONFIG_POWER4) && !defined(CONFIG_BOOKE))
 
 #define CPU_FTRS_PPC601(CPU_FTR_COMMON | CPU_FTR_601 | 
CPU_FTR_HPTE_TABLE | 
\
CPU_FTR_COHERENT_ICACHE | CPU_FTR_UNIFIED_ID_CACHE)
-- 
1.5.6.2




___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[RFC] [0/5] tuning options for PPC64

2008-07-21 Thread Marvin

Hi,

the following five patches should lay a foundation to more fine-grained tuning 
on PPC64 cpus. They must be applied in order. The motivation are the 
discussions of serveral cpu specific optimizations in the past on this list, 
cleanup of the wired Makefile/CONFIG_POWERx constructs and at least the 
ownership of a PS3.

The patches intoduce CONFIG_TUNE_some_cpu and CONFIG_OPT_EXCLUSIVE, with the 
aim to cover two common cases:

- distributions want a common kernel, bootable on all ppc64 machines 
and tune 
for a certain cpu

- high end users don't care about older cpus and want to compile a 
kernel 
with their favorite mcpu option

I know there is also the possibility of mcpu=x and mtune=y, y>x but this can 
be tackled in the next step (hopefully).

I know this will bring up some conserns, but my initial findings grepping the 
defconfigs show:

- CONFIG_POWER3 enables BATS only
it is also used the enable some configs
it is used always in combination with CONFIG_POWER4

- CONFIG_POWER4 is always combined with CONFIG_PPC64 and vice versa
all POWER3 || POWER4 || PPC64 can be replaced by PPC64

- There seems to be no support for 32-bit kernels on ppc64 machines

I hope for some feedback, so this new scheme (or some other) can be included 
to mainstream kernel. 

Greetings

Marvin
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[4/5] replace CONFIG_POWER4_ONLY by new tuning mechanism

2008-07-21 Thread Marvin

This patch replaces CONFIG_POWER4_ONLY by (CONFIG_OPT_EXCLUSIVE && 
CONFIG_TUNE_POWER4). This gets overwritten in the next patch.

It also introduces integer values of CPU generations. This is useful to enable 
features available only since a certain CPU gen (see last hunk). 
Unfortunately, kbuild system can't (yet) compare int values, so MIN_POWERn is 
also defined (but not used yet).

Subject: [PATCH] replace CONFIG_POWER4_ONLY by new tuning mechanism

---
 arch/powerpc/Kconfig|2 +-
 arch/powerpc/Makefile   |5 -
 arch/powerpc/configs/cell_defconfig |1 -
 arch/powerpc/configs/celleb_defconfig   |1 -
 arch/powerpc/configs/g5_defconfig   |3 ++-
 arch/powerpc/configs/iseries_defconfig  |1 -
 arch/powerpc/configs/maple_defconfig|3 ++-
 arch/powerpc/configs/pasemi_defconfig   |3 ++-
 arch/powerpc/configs/ppc64_defconfig|1 -
 arch/powerpc/configs/ps3_defconfig  |1 -
 arch/powerpc/configs/pseries_defconfig  |1 -
 arch/powerpc/platforms/Kconfig.cputype  |   31 
---
 arch/powerpc/platforms/powermac/Kconfig |2 +-
 include/asm-powerpc/asm-compat.h|2 +-
 14 files changed, 37 insertions(+), 20 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index de88972..9b2aaf5 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -528,7 +528,7 @@ config ZONE_DMA
 
 config GENERIC_ISA_DMA
bool
-   depends on PPC64 || POWER4 || 6xx && !CPM2
+   depends on PPC64 || 6xx && !CPM2
default y
 
 config PPC_INDIRECT_PCI
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 624a896..9629c5e 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -77,7 +77,8 @@ CHECKFLAGS
+= -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)
 ifeq ($(CONFIG_PPC64),y)
 GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; 
fi)
 
-ifeq ($(CONFIG_POWER4_ONLY),y)
+ifeq ($(CONFIG_TUNE_POWER4),y)
+ifeq ($(CONFIG_OPT_EXCLUSIVE),y)
 ifeq ($(CONFIG_ALTIVEC),y)
 ifeq ($(GCC_BROKEN_VEC),y)
KBUILD_CFLAGS += $(call cc-option,-mcpu=970)
@@ -90,6 +91,8 @@ endif
 else
KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
 endif
+   KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
+endif
 else
 LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
 endif
diff --git a/arch/powerpc/configs/cell_defconfig 
b/arch/powerpc/configs/cell_defconfig
index 42290e8..7e8e581 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -8,7 +8,6 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-# CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/celleb_defconfig 
b/arch/powerpc/configs/celleb_defconfig
index a405836..e11e991 100644
--- a/arch/powerpc/configs/celleb_defconfig
+++ b/arch/powerpc/configs/celleb_defconfig
@@ -8,7 +8,6 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-# CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
 CONFIG_TUNE_CELL=y
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/g5_defconfig 
b/arch/powerpc/configs/g5_defconfig
index 747088a..e2c92ed 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -8,7 +8,8 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-CONFIG_POWER4_ONLY=y
+CONFIG_TUNE_POWER4=y
+CONFIG_OPT_EXCLUSIVE=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/iseries_defconfig 
b/arch/powerpc/configs/iseries_defconfig
index 1b46033..abe72fd 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -8,7 +8,6 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-# CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
diff --git a/arch/powerpc/configs/maple_defconfig 
b/arch/powerpc/configs/maple_defconfig
index 4becb7b..6dee9f2 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_defconfig
@@ -8,7 +8,8 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-CONFIG_POWER4_ONLY=y
+CONFIG_TUNE_POWER4=y
+CONFIG_OPT_EXCLUSIVE=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 # CONFIG_ALTIVEC is not set
diff --git a/arch/powerpc/configs/pasemi_defconfig 
b/arch/powerpc/configs/pasemi_defconfig
index d816a3a..adef0fe 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -8,7 +8,8 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-CONFIG_POWER4_ONLY=y
+CONFIG_TUNE_POWER4=y
+CONFIG_OPT_EXCLUSIVE=y
 # CONFIG_TUNE_CELL is not set
 CONFIG_PPC_FPU=y
 CONFIG_ALTIVEC=y
diff --git a/arch/powerpc/configs/ppc64_defconfig 
b/arch/powerpc/configs/ppc64_defconfig
index 22276d2..7f14276 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -8,7 +8,6 @@ CONFIG_PPC64=y
 #
 # Processor support
 #
-# CONFIG_POWER4_ONLY is not set
 CONFIG_BATS64=y
 # CONFIG

Re: [RFC] [0/5] tuning options for PPC64

2008-07-23 Thread Marvin

Hi,

and thanks for the feedback. To make it short, the conclusions I draw from 
that are:

- let the cpu type be choosen optionaly
- both target cpu and tuning cpu should be selectable
- if one cpu gets choosen, it should select some feature flag, mcpu and 
mtune 
option automatically in Kconfig.cputypes
- if none gets choosen, all features will be selected (is this save?)

I found these ppc64 cpu specific candidates for CONFIG_FEATURE-X:

Altivec (G4, G5, POWER6+7, PA6T)
BAT64 aka POWER3 (Power3)
FPU (all)
Std_MMU (all)
Virt_CPU_Accounting (all, except PA6T?)
VSX (power7)

There are probably some more features present, which are currently enabled by 
some ifdefs for PPC64 and POWER4 (e.g. powermac/feature.c). I will not touch 
them due to my little knowledge and just keep these symbols.

I guess this will become another long weekend ;-)

Marvin


On Monday 21 July 2008 09:02:47 Marvin wrote:
> Hi,
>
> the following five patches should lay a foundation to more fine-grained
> tuning on PPC64 cpus. They must be applied in order. The motivation are the
> discussions of serveral cpu specific optimizations in the past on this
> list, cleanup of the wired Makefile/CONFIG_POWERx constructs and at least
> the ownership of a PS3.
>
> The patches intoduce CONFIG_TUNE_some_cpu and CONFIG_OPT_EXCLUSIVE, with
> the aim to cover two common cases:
>
>   - distributions want a common kernel, bootable on all ppc64 machines and
> tune for a certain cpu
>
>   - high end users don't care about older cpus and want to compile a 
> kernel
> with their favorite mcpu option
>
> I know there is also the possibility of mcpu=x and mtune=y, y>x but this
> can be tackled in the next step (hopefully).
>
> I know this will bring up some conserns, but my initial findings grepping
> the defconfigs show:
>
>   - CONFIG_POWER3 enables BATS only
>   it is also used the enable some configs
>   it is used always in combination with CONFIG_POWER4
>
>   - CONFIG_POWER4 is always combined with CONFIG_PPC64 and vice versa
>   all POWER3 || POWER4 || PPC64 can be replaced by PPC64
>
>   - There seems to be no support for 32-bit kernels on ppc64 machines
>
> I hope for some feedback, so this new scheme (or some other) can be
> included to mainstream kernel.
>
> Greetings
>
> Marvin
> ___
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH 1/2] [PPC64] add tuning options to Kconfig.cputype

2008-07-26 Thread Marvin

This patch adds CPU selection to Kconfig.cputype. I did my best to make 
oldconfig
happy, but some things just don't work ;-) Maybe more CPUs and help texts can 
be 
added, but it should be enough for now.

Subject: [PATCH 1/2] [PPC64] add tuning options to Kconfig.cputype

---
 arch/powerpc/platforms/Kconfig.cputype |  133 ---
 1 files changed, 120 insertions(+), 13 deletions(-)

diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 7f65127..f528748 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -56,8 +56,127 @@ config E200
 
 endchoice
 
+config TUNE_OPT_CPU
+   depends on PPC64
+   def_bool n 
+   prompt "Tune/optimize for a specific CPU"
+   help
+   This option enables a sub-menu where you can choose a certain
+   CPU to tune (via -mtune) or optimize (via -mcpu) for.
+
+choice
+   depends on TUNE_OPT_CPU
+   prompt "Choose the CPU to tune for"
+   default TUNE_POWER4
+   help
+ Choosing this will make the code run faster on the selected CPU, 
+ but somehow slower on others.
+ 
+  This option only changes the scheduling of instructions, not the 
+  selection of instructions itself, so the resulting kernel will keep 
+  running on all other machines.
+  
+  The default is to tune for power4.
+
+config TUNE_RS64
+   bool "RS64"
+
+config TUNE_POWER3
+   bool "POWER3"
+
+config TUNE_POWER4
+   bool "POWER4/G5/970"
+   help
+ Cause the compiler to tune for the POWER4 and derivates CPUS, like
+ G5 and other PPC970 variants.
+ 
+config TUNE_POWER5
+   bool "POWER5"
+
+config TUNE_POWER6
+   bool "POWER6"
+
+config TUNE_CELL
+   bool "Cell Broadband Engine"
+   help
+ Cause the compiler to optimize for the PPE of the Cell Broadband
+ Engine. This will make the code run considerably faster on Cell
+ but somewhat slower on other machines. This option only changes
+ the scheduling of instructions, not the selection of instructions
+ itself, so the resulting kernel will keep running on all other
+ machines.
+ 
+endchoice
+
+choice
+   depends on TUNE_OPT_CPU
+   default OPT_NONE
+   prompt "Choose the CPU to optimize for"
+   help
+ Choosing this will make the code run significant faster on the 
+ selected CPU by selecting the scheduling and the instruction set
+ for the specific CPU. It will propably not run on earlier gernerations
+ but should run on newer ones.
+ 
+  The default is not to optimize for a specific CPU.
+
+config OPT_NONE
+   bool "none"
+
+config OPT_RS64
+   bool "RS64"
+
+config OPT_POWER3
+   bool "POWER3"
+   select POWER3
+
+config OPT_POWER4
+   bool "POWER4"
+   select POWER4_ONLY
+   ---help---
+ Cause the compiler to optimize for POWER4 processors. The resulting 
+ binary will not work on POWER3 or RS64 processors when compiled 
+ with binutils 2.15 or later.
+
+config OPT_PPC970
+   bool "G5/PPC970"
+   select POWER4_ONLY
+
+config OPT_POWER5
+   bool "POWER5"
+   select POWER4_ONLY
+
+config OPT_POWER6
+   bool "POWER6"   
+   select POWER4_ONLY
+
+endchoice
+
+config OPT_CPU
+   depends on PPC64
+   string
+   default "rs64"   if OPT_RS64
+   default "power3" if OPT_POWER3
+   default "power4" if OPT_POWER4
+   default "970"if OPT_PPC970
+   default "power5" if OPT_POWER5
+   default "power6" if OPT_POWER6
+   default "cell"   if OPT_CELL
+   default ""
+
+config TUNE_CPU
+   depends on PPC64
+   string
+   default "rs64"   if TUNE_RS64
+   default "power3" if TUNE_POWER3
+   default "power5" if TUNE_POWER5
+   default "power6" if TUNE_POWER6
+   default "cell"   if TUNE_CELL
+   default "power4"
+
 config POWER4_ONLY
-   bool "Optimize for POWER4"
+   bool 
+   prompt "Optimize for POWER4" if !TUNE_OPT_CPU
depends on PPC64
default n
---help---
@@ -74,18 +193,6 @@ config POWER4
depends on PPC64
def_bool y
 
-config TUNE_CELL
-   bool "Optimize for Cell Broadband Engine"
-   depends on PPC64
-   help
- Cause the compiler to optimize for the PPE of the Cell Broadband
- Engine. This will make the code run considerably faster on Cell
- but somewhat slower on other machines. This option only changes
- the scheduling of instructions, not the selection of instructions
- itself, so the resulting kernel will keep running on all other
- machines. When building a kernel that is supposed to run only
- on Cell, you should also select the POWER4_ONLY option.
-
 # this is temp to handle compat with arch=ppc
 config 8xx

[PATCH 0/2] tuning options for PPC64

2008-07-26 Thread Marvin
Hi,

this is my second attempt to introduce some tuning options for PPC64. These 
patches are much less invasive as the previous patchset. 

Because the power cpus seem to have various features I don't know/understand I 
didn't touch any feature flags/config options this time, but focused only on 
the compiler flags.

Nevertheless feature flags and cleanups can be added later based on the cpu 
selection as Milton suggested. I will try this if these patches receive 
a "GO!".

Also, as Arndt suggested, I used separate mcpu and mtune options but didn't 
force the user to use it.

As always, comments are welcome.

Greetings

Marvin
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH 2/2] [PPC64] change powerpc Makefile to use the new tuning options

2008-07-26 Thread Marvin

This patch modifies the Makefile to use the new tuning options. Most of the 
work
is done in Kconfig now, so this looks a little bit more clearly (except the
broken altivec hack).

Subject: [PATCH 2/2] [PPC64] change powerpc Makefile to use the new tuning 
options

---
 arch/powerpc/Makefile |   24 +---
 1 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9155c93..dc189e7 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -75,29 +75,15 @@ CPP = $(CC) -E $(KBUILD_CFLAGS)
 CHECKFLAGS 
+= -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
 
 ifeq ($(CONFIG_PPC64),y)
-GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; 
fi)
-
-ifeq ($(CONFIG_POWER4_ONLY),y)
-ifeq ($(CONFIG_ALTIVEC),y)
-ifeq ($(GCC_BROKEN_VEC),y)
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=970)
-else
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
-endif
-else
-   KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
-endif
-else
-   KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
-endif
+KBUILD_CFLAGS += $(call cc-option,  -mcpu=$(CONFIG_OPT_CPU)  )
+KBUILD_CFLAGS += $(call cc-option, -mtune=$(CONFIG_TUNE_CPU) )
+ifeq ($(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi),y)
+KBUILD_CFLAGS := $(subst mcpu=970,mcpu=power4,$(KBUILD_CFLAGS))
+endif
 else
 LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
 endif
 
-ifeq ($(CONFIG_TUNE_CELL),y)
-   KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
-endif
-
 # No AltiVec instruction when building kernel
 KBUILD_CFLAGS += $(call cc-option,-mno-altivec)
 
-- 
1.5.6.2

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: RTC problem in PS3

2008-11-17 Thread Marvin
forward to a better place...

On Sunday 16 November 2008 23:44:50 Fabiano Manoel de Andrade wrote:
>   Hi I've compiled the latest version of linux kernel (2.6.27.6) in my
> PS3 running debian and get a warning message listed here
>
>   Setting the system clock.
>   Cannot access the Hardware Clock via any known method.
>   Use the --debug option to see the details of our search for an access
> method. * Unable to set System Clock to: Sun Nov 16 20:33:06 UTC 2008
>
>
>   The problem can be reproduced with the commands
>
>   # hwclock --debug
>   hwclock from util-linux-ng 2.13.1.1
>   hwclock: Open of /dev/rtc failed, errno=2: No such file or directory.
>   No usable clock interface found.
>   Cannot access the Hardware Clock via any known method.
>   # ls -l /dev/rtc*
>   ls: cannot access /dev/rtc*: No such file or directory
>
>   Loading the rtc-ppc module solve the problem, but after restart
> the system I still have the problem. Looking at kernel config I change the
> rtc-ppc to be build into kernel and this solve totally the problem. So the
> ps3_defconfig must set the rtc-ppc to be build into kernel.
>
>   Thanks in advance.
>   Fabiano.

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev