Re: RTC problem in PS3
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
[PATCH 1/2] [PPC64] add tuning options to Kconfig.cputype
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 970if 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 bool -- 1.5.6.2
[PATCH 0/2] tuning options for PPC64
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
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: [RFC] [0/5] tuning options for PPC64
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, yx 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
[5/5] include tuning options into Makefile
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
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
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 +++
[2/5] replace all occurrences of CONFIG_POWER3 by CONFIG_BATS64
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
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, yx 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
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 #
Re: 32-bit kernel on PPC64 supported?
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
32-bit kernel on PPC64 supported?
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
[RFC] reorganize cputypes for PPC64
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: [patch 5/5] PS3: Update ps3_defconfig
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
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
Re: [patch 5/5] PS3: Update ps3_defconfig
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: removal of arch/ppc in 2.6.27?
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?
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