aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/Makefile2
-rw-r--r--arch/powerpc/boot/Makefile18
-rw-r--r--arch/powerpc/boot/cuboot-bamboo.c1
-rw-r--r--arch/powerpc/boot/cuboot-ebony.c1
-rw-r--r--arch/powerpc/boot/cuboot-katmai.c1
-rw-r--r--arch/powerpc/boot/cuboot-taishan.c2
-rw-r--r--arch/powerpc/boot/cuboot-warp.c1
-rw-r--r--arch/powerpc/boot/dts/haleakala.dts2
-rw-r--r--arch/powerpc/boot/dts/katmai.dts58
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/sbc8548.dts16
-rwxr-xr-xarch/powerpc/boot/wrapper6
-rw-r--r--arch/powerpc/configs/adder875-uboot_defconfig798
-rw-r--r--arch/powerpc/configs/adder875_defconfig (renamed from arch/powerpc/configs/adder875-redboot_defconfig)61
-rw-r--r--arch/powerpc/kernel/head_8xx.S30
-rw-r--r--arch/powerpc/kernel/misc_32.S15
-rw-r--r--arch/powerpc/kernel/pci-common.c8
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c3
-rw-r--r--arch/powerpc/mm/hash_utils_64.c4
-rw-r--r--arch/powerpc/oprofile/op_model_cell.c2
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c1
-rw-r--r--arch/powerpc/platforms/83xx/mpc837x_mds.c8
-rw-r--r--arch/powerpc/platforms/Kconfig1
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype7
-rw-r--r--arch/powerpc/platforms/cell/iommu.c151
-rw-r--r--arch/powerpc/platforms/cell/setup.c7
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c16
-rw-r--r--arch/powerpc/platforms/cell/spufs/context.c10
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c12
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c3
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c6
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sputrace.c7
-rw-r--r--arch/powerpc/platforms/cell/spufs/switch.c6
-rw-r--r--arch/powerpc/platforms/celleb/beat.h3
-rw-r--r--arch/powerpc/platforms/powermac/pic.c2
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c7
40 files changed, 519 insertions, 969 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 5b8d8382b762..1189d8d6170d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -90,6 +90,7 @@ config PPC
90 select HAVE_IDE 90 select HAVE_IDE
91 select HAVE_OPROFILE 91 select HAVE_OPROFILE
92 select HAVE_KPROBES 92 select HAVE_KPROBES
93 select HAVE_KRETPROBES
93 94
94config EARLY_PRINTK 95config EARLY_PRINTK
95 bool 96 bool
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 1c6ce3536e4c..ab5cfe8ef988 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -155,7 +155,7 @@ all: zImage
155 155
156CPPFLAGS_vmlinux.lds := -Upowerpc 156CPPFLAGS_vmlinux.lds := -Upowerpc
157 157
158BOOT_TARGETS = zImage zImage.initrd uImage treeImage.% cuImage.% 158BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.%
159 159
160PHONY += $(BOOT_TARGETS) 160PHONY += $(BOOT_TARGETS)
161 161
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index e3993a607584..4974d9e56ead 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@
186image-$(CONFIG_PPC_PSERIES) += zImage.pseries 186image-$(CONFIG_PPC_PSERIES) += zImage.pseries
187image-$(CONFIG_PPC_MAPLE) += zImage.pseries 187image-$(CONFIG_PPC_MAPLE) += zImage.pseries
188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries 188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
189image-$(CONFIG_PPC_PS3) += zImage-dtb.ps3 189image-$(CONFIG_PPC_PS3) += dtbImage.ps3
190image-$(CONFIG_PPC_CELLEB) += zImage.pseries 190image-$(CONFIG_PPC_CELLEB) += zImage.pseries
191image-$(CONFIG_PPC_CHRP) += zImage.chrp 191image-$(CONFIG_PPC_CHRP) += zImage.chrp
192image-$(CONFIG_PPC_EFIKA) += zImage.chrp 192image-$(CONFIG_PPC_EFIKA) += zImage.chrp
@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage
205# 205#
206 206
207# Board ports in arch/powerpc/platform/40x/Kconfig 207# Board ports in arch/powerpc/platform/40x/Kconfig
208image-$(CONFIG_EP405) += zImage-dtb.ep405 208image-$(CONFIG_EP405) += dtbImage.ep405
209image-$(CONFIG_WALNUT) += treeImage.walnut 209image-$(CONFIG_WALNUT) += treeImage.walnut
210 210
211# Board ports in arch/powerpc/platform/44x/Kconfig 211# Board ports in arch/powerpc/platform/44x/Kconfig
@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp
220# Board ports in arch/powerpc/platform/8xx/Kconfig 220# Board ports in arch/powerpc/platform/8xx/Kconfig
221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads 221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads
222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads 222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads
223image-$(CONFIG_PPC_EP88XC) += zImage-dtb.ep88xc 223image-$(CONFIG_PPC_EP88XC) += dtbImage.ep88xc
224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ 224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
225 zImage-dtb.adder875-redboot 225 dtbImage.adder875-redboot
226 226
227# Board ports in arch/powerpc/platform/52xx/Kconfig 227# Board ports in arch/powerpc/platform/52xx/Kconfig
228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b 228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
230# Board ports in arch/powerpc/platform/82xx/Kconfig 230# Board ports in arch/powerpc/platform/82xx/Kconfig
231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads 231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads
232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads 232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads
233image-$(CONFIG_EP8248E) += zImage-dtb.ep8248e 233image-$(CONFIG_EP8248E) += dtbImage.ep8248e
234 234
235# Board ports in arch/powerpc/platform/83xx/Kconfig 235# Board ports in arch/powerpc/platform/83xx/Kconfig
236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds 236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds
@@ -268,7 +268,8 @@ endif
268 268
269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
270initrd-y := $(patsubst zImage%, zImage.initrd%, \ 270initrd-y := $(patsubst zImage%, zImage.initrd%, \
271 $(patsubst treeImage%, treeImage.initrd%, $(image-y))) 271 $(patsubst dtbImage%, dtbImage.initrd%, \
272 $(patsubst treeImage%, treeImage.initrd%, $(image-y))))
272initrd-y := $(filter-out $(image-y), $(initrd-y)) 273initrd-y := $(filter-out $(image-y), $(initrd-y))
273targets += $(image-y) $(initrd-y) 274targets += $(image-y) $(initrd-y)
274 275
@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
283$(obj)/zImage.%: vmlinux $(wrapperbits) 284$(obj)/zImage.%: vmlinux $(wrapperbits)
284 $(call if_changed,wrap,$*) 285 $(call if_changed,wrap,$*)
285 286
286$(obj)/zImage-dtb.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 287# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
288$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
287 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) 289 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz)
288 290
289$(obj)/zImage-dtb.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 291$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
290 $(call if_changed,wrap,$*,$(dtstree)/$*.dts) 292 $(call if_changed,wrap,$*,$(dtstree)/$*.dts)
291 293
292# This cannot be in the root of $(src) as the zImage rule always adds a $(obj) 294# This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
diff --git a/arch/powerpc/boot/cuboot-bamboo.c b/arch/powerpc/boot/cuboot-bamboo.c
index 900c7ff2b7e9..b5c30f766c40 100644
--- a/arch/powerpc/boot/cuboot-bamboo.c
+++ b/arch/powerpc/boot/cuboot-bamboo.c
@@ -17,6 +17,7 @@
17#include "44x.h" 17#include "44x.h"
18#include "cuboot.h" 18#include "cuboot.h"
19 19
20#define TARGET_4xx
20#define TARGET_44x 21#define TARGET_44x
21#include "ppcboot.h" 22#include "ppcboot.h"
22 23
diff --git a/arch/powerpc/boot/cuboot-ebony.c b/arch/powerpc/boot/cuboot-ebony.c
index c5f37ce172ea..56564ba37f62 100644
--- a/arch/powerpc/boot/cuboot-ebony.c
+++ b/arch/powerpc/boot/cuboot-ebony.c
@@ -17,6 +17,7 @@
17#include "44x.h" 17#include "44x.h"
18#include "cuboot.h" 18#include "cuboot.h"
19 19
20#define TARGET_4xx
20#define TARGET_44x 21#define TARGET_44x
21#include "ppcboot.h" 22#include "ppcboot.h"
22 23
diff --git a/arch/powerpc/boot/cuboot-katmai.c b/arch/powerpc/boot/cuboot-katmai.c
index c021167f9381..5434d70b5660 100644
--- a/arch/powerpc/boot/cuboot-katmai.c
+++ b/arch/powerpc/boot/cuboot-katmai.c
@@ -22,6 +22,7 @@
22#include "44x.h" 22#include "44x.h"
23#include "cuboot.h" 23#include "cuboot.h"
24 24
25#define TARGET_4xx
25#define TARGET_44x 26#define TARGET_44x
26#include "ppcboot.h" 27#include "ppcboot.h"
27 28
diff --git a/arch/powerpc/boot/cuboot-taishan.c b/arch/powerpc/boot/cuboot-taishan.c
index f66455a45ab1..b55b80467eed 100644
--- a/arch/powerpc/boot/cuboot-taishan.c
+++ b/arch/powerpc/boot/cuboot-taishan.c
@@ -21,7 +21,9 @@
21#include "dcr.h" 21#include "dcr.h"
22#include "4xx.h" 22#include "4xx.h"
23 23
24#define TARGET_4xx
24#define TARGET_44x 25#define TARGET_44x
26#define TARGET_440GX
25#include "ppcboot.h" 27#include "ppcboot.h"
26 28
27static bd_t bd; 29static bd_t bd;
diff --git a/arch/powerpc/boot/cuboot-warp.c b/arch/powerpc/boot/cuboot-warp.c
index bdedebe1bc14..3db93e85e9ea 100644
--- a/arch/powerpc/boot/cuboot-warp.c
+++ b/arch/powerpc/boot/cuboot-warp.c
@@ -11,6 +11,7 @@
11#include "4xx.h" 11#include "4xx.h"
12#include "cuboot.h" 12#include "cuboot.h"
13 13
14#define TARGET_4xx
14#define TARGET_44x 15#define TARGET_44x
15#include "ppcboot.h" 16#include "ppcboot.h"
16 17
diff --git a/arch/powerpc/boot/dts/haleakala.dts b/arch/powerpc/boot/dts/haleakala.dts
index 5dd3d15f0feb..ae68fefc01b6 100644
--- a/arch/powerpc/boot/dts/haleakala.dts
+++ b/arch/powerpc/boot/dts/haleakala.dts
@@ -235,7 +235,7 @@
235 #interrupt-cells = <1>; 235 #interrupt-cells = <1>;
236 #size-cells = <2>; 236 #size-cells = <2>;
237 #address-cells = <3>; 237 #address-cells = <3>;
238 compatible = "ibm,plb-pciex-405exr", "ibm,plb-pciex"; 238 compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
239 primary; 239 primary;
240 port = <0>; /* port number */ 240 port = <0>; /* port number */
241 reg = <a0000000 20000000 /* Config space access */ 241 reg = <a0000000 20000000 /* Config space access */
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts
index bc32ac7250ec..fc86e5a3afc4 100644
--- a/arch/powerpc/boot/dts/katmai.dts
+++ b/arch/powerpc/boot/dts/katmai.dts
@@ -38,8 +38,8 @@
38 timebase-frequency = <0>; /* Filled in by zImage */ 38 timebase-frequency = <0>; /* Filled in by zImage */
39 i-cache-line-size = <20>; 39 i-cache-line-size = <20>;
40 d-cache-line-size = <20>; 40 d-cache-line-size = <20>;
41 i-cache-size = <20000>; 41 i-cache-size = <8000>;
42 d-cache-size = <20000>; 42 d-cache-size = <8000>;
43 dcr-controller; 43 dcr-controller;
44 dcr-access-method = "native"; 44 dcr-access-method = "native";
45 }; 45 };
@@ -136,11 +136,11 @@
136 }; 136 };
137 137
138 POB0: opb { 138 POB0: opb {
139 compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb"; 139 compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
140 #address-cells = <1>; 140 #address-cells = <1>;
141 #size-cells = <1>; 141 #size-cells = <1>;
142 ranges = <00000000 4 e0000000 20000000>; 142 ranges = <00000000 4 e0000000 20000000>;
143 clock-frequency = <0>; /* Filled in by zImage */ 143 clock-frequency = <0>; /* Filled in by zImage */
144 144
145 EBC0: ebc { 145 EBC0: ebc {
146 compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc"; 146 compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc";
@@ -153,38 +153,38 @@
153 }; 153 };
154 154
155 UART0: serial@10000200 { 155 UART0: serial@10000200 {
156 device_type = "serial"; 156 device_type = "serial";
157 compatible = "ns16550"; 157 compatible = "ns16550";
158 reg = <10000200 8>; 158 reg = <10000200 8>;
159 virtual-reg = <a0000200>; 159 virtual-reg = <a0000200>;
160 clock-frequency = <0>; /* Filled in by zImage */ 160 clock-frequency = <0>; /* Filled in by zImage */
161 current-speed = <1c200>; 161 current-speed = <1c200>;
162 interrupt-parent = <&UIC0>; 162 interrupt-parent = <&UIC0>;
163 interrupts = <0 4>; 163 interrupts = <0 4>;
164 }; 164 };
165 165
166 UART1: serial@10000300 { 166 UART1: serial@10000300 {
167 device_type = "serial"; 167 device_type = "serial";
168 compatible = "ns16550"; 168 compatible = "ns16550";
169 reg = <10000300 8>; 169 reg = <10000300 8>;
170 virtual-reg = <a0000300>; 170 virtual-reg = <a0000300>;
171 clock-frequency = <0>; 171 clock-frequency = <0>;
172 current-speed = <0>; 172 current-speed = <0>;
173 interrupt-parent = <&UIC0>; 173 interrupt-parent = <&UIC0>;
174 interrupts = <1 4>; 174 interrupts = <1 4>;
175 }; 175 };
176 176
177 177
178 UART2: serial@10000600 { 178 UART2: serial@10000600 {
179 device_type = "serial"; 179 device_type = "serial";
180 compatible = "ns16550"; 180 compatible = "ns16550";
181 reg = <10000600 8>; 181 reg = <10000600 8>;
182 virtual-reg = <a0000600>; 182 virtual-reg = <a0000600>;
183 clock-frequency = <0>; 183 clock-frequency = <0>;
184 current-speed = <0>; 184 current-speed = <0>;
185 interrupt-parent = <&UIC1>; 185 interrupt-parent = <&UIC1>;
186 interrupts = <5 4>; 186 interrupts = <5 4>;
187 }; 187 };
188 188
189 IIC0: i2c@10000400 { 189 IIC0: i2c@10000400 {
190 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic"; 190 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index a3637fff73cc..49c05e97386c 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8377-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8377-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
index 533e9b06cc8f..1d6ea080ad73 100644
--- a/arch/powerpc/boot/dts/mpc8378_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8378-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8378-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
index c270685bbde4..fdb4a9255b24 100644
--- a/arch/powerpc/boot/dts/mpc8379_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8379-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8379-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
index 14be38ad5d4b..b86e65d926c1 100644
--- a/arch/powerpc/boot/dts/sbc8548.dts
+++ b/arch/powerpc/boot/dts/sbc8548.dts
@@ -184,11 +184,17 @@
184 cell-index = <0>; 184 cell-index = <0>;
185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
186 interrupt-map = < 186 interrupt-map = <
187 /* IDSEL 0x01 (PCI-X slot) */ 187 /* IDSEL 0x01 (PCI-X slot) @66MHz */
188 0x0800 0x0 0x0 0x1 &mpic 0x0 0x1 188 0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
189 0x0800 0x0 0x0 0x2 &mpic 0x1 0x1 189 0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
190 0x0800 0x0 0x0 0x3 &mpic 0x2 0x1 190 0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
191 0x0800 0x0 0x0 0x4 &mpic 0x3 0x1>; 191 0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
192
193 /* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
194 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
195 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
196 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
197 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
192 198
193 interrupt-parent = <&mpic>; 199 interrupt-parent = <&mpic>;
194 interrupts = <0x18 0x2>; 200 interrupts = <0x18 0x2>;
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index c3178155311b..d50e498a072b 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -191,10 +191,14 @@ ps3)
191 ksection=.kernel:vmlinux.bin 191 ksection=.kernel:vmlinux.bin
192 isection=.kernel:initrd 192 isection=.kernel:initrd
193 ;; 193 ;;
194ep88xc|ep405|redboot*|ep8248e) 194ep88xc|ep405|ep8248e)
195 platformo="$object/fixed-head.o $object/$platform.o" 195 platformo="$object/fixed-head.o $object/$platform.o"
196 binary=y 196 binary=y
197 ;; 197 ;;
198adder875-redboot)
199 platformo="$object/fixed-head.o $object/redboot-8xx.o"
200 binary=y
201 ;;
198esac 202esac
199 203
200vmz="$tmpdir/`basename \"$kernel\"`.$ext" 204vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875-uboot_defconfig
deleted file mode 100644
index 1faf7ef59a23..000000000000
--- a/arch/powerpc/configs/adder875-uboot_defconfig
+++ /dev/null
@@ -1,798 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Thu Jan 17 16:17:18 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13CONFIG_PPC_8xx=y
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_8xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y
32CONFIG_GENERIC_HWEIGHT=y
33CONFIG_GENERIC_CALIBRATE_DELAY=y
34CONFIG_GENERIC_FIND_NEXT_BIT=y
35# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
36CONFIG_PPC=y
37CONFIG_EARLY_PRINTK=y
38CONFIG_GENERIC_NVRAM=y
39CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
40CONFIG_ARCH_MAY_HAVE_PC_FDC=y
41CONFIG_PPC_OF=y
42CONFIG_OF=y
43# CONFIG_PPC_UDBG_16550 is not set
44# CONFIG_GENERIC_TBSYNC is not set
45CONFIG_AUDIT_ARCH=y
46CONFIG_GENERIC_BUG=y
47# CONFIG_DEFAULT_UIMAGE is not set
48CONFIG_REDBOOT=y
49# CONFIG_PPC_DCR_NATIVE is not set
50# CONFIG_PPC_DCR_MMIO is not set
51CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
52
53#
54# General setup
55#
56CONFIG_EXPERIMENTAL=y
57CONFIG_BROKEN_ON_SMP=y
58CONFIG_INIT_ENV_ARG_LIMIT=32
59CONFIG_LOCALVERSION=""
60CONFIG_LOCALVERSION_AUTO=y
61# CONFIG_SWAP is not set
62CONFIG_SYSVIPC=y
63CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set
73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y
75# CONFIG_FAIR_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set
78# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y
81CONFIG_EMBEDDED=y
82# CONFIG_SYSCTL_SYSCALL is not set
83CONFIG_KALLSYMS=y
84# CONFIG_KALLSYMS_ALL is not set
85# CONFIG_KALLSYMS_EXTRA_PASS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set
90# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set
105CONFIG_BLOCK=y
106# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110
111#
112# IO Schedulers
113#
114CONFIG_IOSCHED_NOOP=y
115# CONFIG_IOSCHED_AS is not set
116CONFIG_IOSCHED_DEADLINE=y
117# CONFIG_IOSCHED_CFQ is not set
118# CONFIG_DEFAULT_AS is not set
119CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline"
123
124#
125# Platform support
126#
127# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_MPC5200 is not set
129# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y
132# CONFIG_MPC8XXFADS is not set
133# CONFIG_MPC86XADS is not set
134# CONFIG_MPC885ADS is not set
135# CONFIG_PPC_EP88XC is not set
136CONFIG_PPC_ADDER875=y
137
138#
139# MPC8xx CPM Options
140#
141
142#
143# Generic MPC8xx Options
144#
145CONFIG_8xx_COPYBACK=y
146# CONFIG_8xx_CPU6 is not set
147CONFIG_8xx_CPU15=y
148CONFIG_NO_UCODE_PATCH=y
149# CONFIG_USB_SOF_UCODE_PATCH is not set
150# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set
153# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set
156# CONFIG_PPC_RTAS is not set
157# CONFIG_MMIO_NVRAM is not set
158# CONFIG_PPC_MPC106 is not set
159# CONFIG_PPC_970_NAP is not set
160# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y
167
168#
169# Kernel options
170#
171# CONFIG_HIGHMEM is not set
172# CONFIG_TICK_ONESHOT is not set
173# CONFIG_NO_HZ is not set
174# CONFIG_HIGH_RES_TIMERS is not set
175CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
176# CONFIG_HZ_100 is not set
177# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y
180CONFIG_HZ=1000
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y
192CONFIG_FLATMEM_MANUAL=y
193# CONFIG_DISCONTIGMEM_MANUAL is not set
194# CONFIG_SPARSEMEM_MANUAL is not set
195CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
199CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-uboot.dts"
212CONFIG_ISA_DMA_API=y
213
214#
215# Bus options
216#
217CONFIG_ZONE_DMA=y
218CONFIG_FSL_SOC=y
219# CONFIG_PCI is not set
220# CONFIG_PCI_DOMAINS is not set
221# CONFIG_PCI_SYSCALL is not set
222# CONFIG_PCI_QSPAN is not set
223# CONFIG_ARCH_SUPPORTS_MSI is not set
224# CONFIG_PCCARD is not set
225
226#
227# Advanced setup
228#
229# CONFIG_ADVANCED_OPTIONS is not set
230
231#
232# Default settings for advanced configuration options are used
233#
234CONFIG_HIGHMEM_START=0xfe000000
235CONFIG_LOWMEM_SIZE=0x30000000
236CONFIG_KERNEL_START=0xc0000000
237CONFIG_TASK_SIZE=0x80000000
238CONFIG_CONSISTENT_START=0xfd000000
239CONFIG_CONSISTENT_SIZE=0x00200000
240CONFIG_BOOT_LOAD=0x00400000
241
242#
243# Networking
244#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255CONFIG_IP_MULTICAST=y
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259# CONFIG_IP_PNP_DHCP is not set
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_IP_MROUTE is not set
265# CONFIG_ARPD is not set
266CONFIG_SYN_COOKIES=y
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
272# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
273# CONFIG_INET_XFRM_MODE_TUNNEL is not set
274# CONFIG_INET_XFRM_MODE_BEET is not set
275# CONFIG_INET_LRO is not set
276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y
278# CONFIG_TCP_CONG_ADVANCED is not set
279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
282# CONFIG_IPV6 is not set
283# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set
285# CONFIG_NETWORK_SECMARK is not set
286# CONFIG_NETFILTER is not set
287# CONFIG_IP_DCCP is not set
288# CONFIG_IP_SCTP is not set
289# CONFIG_TIPC is not set
290# CONFIG_ATM is not set
291# CONFIG_BRIDGE is not set
292# CONFIG_VLAN_8021Q is not set
293# CONFIG_DECNET is not set
294# CONFIG_LLC2 is not set
295# CONFIG_IPX is not set
296# CONFIG_ATALK is not set
297# CONFIG_X25 is not set
298# CONFIG_LAPB is not set
299# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set
301# CONFIG_NET_SCHED is not set
302
303#
304# Network testing
305#
306# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set
311
312#
313# Wireless
314#
315# CONFIG_CFG80211 is not set
316# CONFIG_WIRELESS_EXT is not set
317# CONFIG_MAC80211 is not set
318# CONFIG_IEEE80211 is not set
319# CONFIG_RFKILL is not set
320# CONFIG_NET_9P is not set
321
322#
323# Device Drivers
324#
325
326#
327# Generic Driver Options
328#
329CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
330CONFIG_STANDALONE=y
331CONFIG_PREVENT_FIRMWARE_BUILD=y
332# CONFIG_FW_LOADER is not set
333# CONFIG_DEBUG_DRIVER is not set
334# CONFIG_DEBUG_DEVRES is not set
335# CONFIG_SYS_HYPERVISOR is not set
336# CONFIG_CONNECTOR is not set
337CONFIG_MTD=y
338# CONFIG_MTD_DEBUG is not set
339# CONFIG_MTD_CONCAT is not set
340# CONFIG_MTD_PARTITIONS is not set
341
342#
343# User Modules And Translation Layers
344#
345CONFIG_MTD_CHAR=y
346CONFIG_MTD_BLKDEVS=y
347CONFIG_MTD_BLOCK=y
348# CONFIG_FTL is not set
349# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set
351# CONFIG_RFD_FTL is not set
352# CONFIG_SSFDC is not set
353# CONFIG_MTD_OOPS is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374# CONFIG_MTD_CFI_STAA is not set
375CONFIG_MTD_CFI_UTIL=y
376# CONFIG_MTD_RAM is not set
377# CONFIG_MTD_ROM is not set
378# CONFIG_MTD_ABSENT is not set
379
380#
381# Mapping drivers for chip access
382#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_OF=y
386# CONFIG_MTD_CFI_FLAGADM is not set
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_SLRAM is not set
393# CONFIG_MTD_PHRAM is not set
394# CONFIG_MTD_MTDRAM is not set
395# CONFIG_MTD_BLOCK2MTD is not set
396
397#
398# Disk-On-Chip Device Drivers
399#
400# CONFIG_MTD_DOC2000 is not set
401# CONFIG_MTD_DOC2001 is not set
402# CONFIG_MTD_DOC2001PLUS is not set
403# CONFIG_MTD_NAND is not set
404# CONFIG_MTD_ONENAND is not set
405
406#
407# UBI - Unsorted block images
408#
409# CONFIG_MTD_UBI is not set
410CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set
414# CONFIG_IDE is not set
415
416#
417# SCSI device support
418#
419# CONFIG_RAID_ATTRS is not set
420# CONFIG_SCSI is not set
421# CONFIG_SCSI_DMA is not set
422# CONFIG_SCSI_NETLINK is not set
423# CONFIG_ATA is not set
424# CONFIG_MD is not set
425# CONFIG_MACINTOSH_DRIVERS is not set
426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
428# CONFIG_DUMMY is not set
429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
431# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set
433# CONFIG_VETH is not set
434CONFIG_PHYLIB=y
435
436#
437# MII PHY device drivers
438#
439# CONFIG_MARVELL_PHY is not set
440CONFIG_DAVICOM_PHY=y
441# CONFIG_QSEMI_PHY is not set
442# CONFIG_LXT_PHY is not set
443# CONFIG_CICADA_PHY is not set
444# CONFIG_VITESSE_PHY is not set
445# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set
448# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452# CONFIG_IBM_NEW_EMAC_ZMII is not set
453# CONFIG_IBM_NEW_EMAC_RGMII is not set
454# CONFIG_IBM_NEW_EMAC_TAH is not set
455# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
456# CONFIG_B44 is not set
457CONFIG_FS_ENET=y
458# CONFIG_FS_ENET_HAS_SCC is not set
459CONFIG_FS_ENET_HAS_FEC=y
460CONFIG_FS_ENET_MDIO_FEC=y
461# CONFIG_NETDEV_1000 is not set
462# CONFIG_NETDEV_10000 is not set
463
464#
465# Wireless LAN
466#
467# CONFIG_WLAN_PRE80211 is not set
468# CONFIG_WLAN_80211 is not set
469# CONFIG_WAN is not set
470# CONFIG_PPP is not set
471# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set
476# CONFIG_ISDN is not set
477# CONFIG_PHONE is not set
478
479#
480# Input device support
481#
482CONFIG_INPUT=y
483# CONFIG_INPUT_FF_MEMLESS is not set
484# CONFIG_INPUT_POLLDEV is not set
485
486#
487# Userland interfaces
488#
489CONFIG_INPUT_MOUSEDEV=y
490CONFIG_INPUT_MOUSEDEV_PSAUX=y
491CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
492CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
493# CONFIG_INPUT_JOYDEV is not set
494# CONFIG_INPUT_EVDEV is not set
495# CONFIG_INPUT_EVBUG is not set
496
497#
498# Input Device Drivers
499#
500CONFIG_INPUT_KEYBOARD=y
501CONFIG_KEYBOARD_ATKBD=y
502# CONFIG_KEYBOARD_SUNKBD is not set
503# CONFIG_KEYBOARD_LKKBD is not set
504# CONFIG_KEYBOARD_XTKBD is not set
505# CONFIG_KEYBOARD_NEWTON is not set
506# CONFIG_KEYBOARD_STOWAWAY is not set
507CONFIG_INPUT_MOUSE=y
508CONFIG_MOUSE_PS2=y
509CONFIG_MOUSE_PS2_ALPS=y
510CONFIG_MOUSE_PS2_LOGIPS2PP=y
511CONFIG_MOUSE_PS2_SYNAPTICS=y
512CONFIG_MOUSE_PS2_LIFEBOOK=y
513CONFIG_MOUSE_PS2_TRACKPOINT=y
514# CONFIG_MOUSE_PS2_TOUCHKIT is not set
515# CONFIG_MOUSE_SERIAL is not set
516# CONFIG_MOUSE_VSXXXAA is not set
517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
519# CONFIG_INPUT_TOUCHSCREEN is not set
520# CONFIG_INPUT_MISC is not set
521
522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526CONFIG_SERIO_I8042=y
527CONFIG_SERIO_SERPORT=y
528CONFIG_SERIO_LIBPS2=y
529# CONFIG_SERIO_RAW is not set
530# CONFIG_GAMEPORT is not set
531
532#
533# Character devices
534#
535# CONFIG_VT is not set
536# CONFIG_SERIAL_NONSTANDARD is not set
537
538#
539# Serial drivers
540#
541# CONFIG_SERIAL_8250 is not set
542
543#
544# Non-8250 serial port support
545#
546# CONFIG_SERIAL_UARTLITE is not set
547CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y
549CONFIG_SERIAL_CPM=y
550CONFIG_SERIAL_CPM_CONSOLE=y
551# CONFIG_SERIAL_CPM_SCC1 is not set
552# CONFIG_SERIAL_CPM_SCC2 is not set
553# CONFIG_SERIAL_CPM_SCC3 is not set
554# CONFIG_SERIAL_CPM_SCC4 is not set
555CONFIG_SERIAL_CPM_SMC1=y
556CONFIG_SERIAL_CPM_SMC2=y
557CONFIG_UNIX98_PTYS=y
558# CONFIG_LEGACY_PTYS is not set
559# CONFIG_IPMI_HANDLER is not set
560CONFIG_HW_RANDOM=y
561# CONFIG_NVRAM is not set
562CONFIG_GEN_RTC=y
563# CONFIG_GEN_RTC_X is not set
564# CONFIG_R3964 is not set
565# CONFIG_RAW_DRIVER is not set
566# CONFIG_TCG_TPM is not set
567# CONFIG_I2C is not set
568
569#
570# SPI support
571#
572# CONFIG_SPI is not set
573# CONFIG_SPI_MASTER is not set
574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
577# CONFIG_WATCHDOG is not set
578
579#
580# Sonics Silicon Backplane
581#
582CONFIG_SSB_POSSIBLE=y
583# CONFIG_SSB is not set
584
585#
586# Multifunction device drivers
587#
588# CONFIG_MFD_SM501 is not set
589
590#
591# Multimedia devices
592#
593# CONFIG_VIDEO_DEV is not set
594# CONFIG_DVB_CORE is not set
595CONFIG_DAB=y
596
597#
598# Graphics support
599#
600# CONFIG_VGASTATE is not set
601CONFIG_VIDEO_OUTPUT_CONTROL=y
602# CONFIG_FB is not set
603# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
604
605#
606# Display device support
607#
608# CONFIG_DISPLAY_SUPPORT is not set
609
610#
611# Sound
612#
613# CONFIG_SOUND is not set
614# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set
617# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set
620
621#
622# Userspace I/O
623#
624# CONFIG_UIO is not set
625
626#
627# File systems
628#
629# CONFIG_EXT2_FS is not set
630# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set
632# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set
646
647#
648# CD-ROM/DVD Filesystems
649#
650# CONFIG_ISO9660_FS is not set
651# CONFIG_UDF_FS is not set
652
653#
654# DOS/FAT/NT Filesystems
655#
656# CONFIG_MSDOS_FS is not set
657# CONFIG_VFAT_FS is not set
658# CONFIG_NTFS_FS is not set
659
660#
661# Pseudo filesystems
662#
663CONFIG_PROC_FS=y
664# CONFIG_PROC_KCORE is not set
665CONFIG_PROC_SYSCTL=y
666CONFIG_SYSFS=y
667CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set
671
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set
678# CONFIG_HFSPLUS_FS is not set
679# CONFIG_BEFS_FS is not set
680# CONFIG_BFS_FS is not set
681# CONFIG_EFS_FS is not set
682# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set
685# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set
687# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y
690CONFIG_NFS_FS=y
691CONFIG_NFS_V3=y
692# CONFIG_NFS_V3_ACL is not set
693# CONFIG_NFS_V4 is not set
694# CONFIG_NFS_DIRECTIO is not set
695# CONFIG_NFSD is not set
696CONFIG_ROOT_NFS=y
697CONFIG_LOCKD=y
698CONFIG_LOCKD_V4=y
699CONFIG_NFS_COMMON=y
700CONFIG_SUNRPC=y
701# CONFIG_SUNRPC_BIND34 is not set
702# CONFIG_RPCSEC_GSS_KRB5 is not set
703# CONFIG_RPCSEC_GSS_SPKM3 is not set
704# CONFIG_SMB_FS is not set
705# CONFIG_CIFS is not set
706# CONFIG_NCP_FS is not set
707# CONFIG_CODA_FS is not set
708# CONFIG_AFS_FS is not set
709
710#
711# Partition Types
712#
713CONFIG_PARTITION_ADVANCED=y
714# CONFIG_ACORN_PARTITION is not set
715# CONFIG_OSF_PARTITION is not set
716# CONFIG_AMIGA_PARTITION is not set
717# CONFIG_ATARI_PARTITION is not set
718# CONFIG_MAC_PARTITION is not set
719CONFIG_MSDOS_PARTITION=y
720# CONFIG_BSD_DISKLABEL is not set
721# CONFIG_MINIX_SUBPARTITION is not set
722# CONFIG_SOLARIS_X86_PARTITION is not set
723# CONFIG_UNIXWARE_DISKLABEL is not set
724# CONFIG_LDM_PARTITION is not set
725# CONFIG_SGI_PARTITION is not set
726# CONFIG_ULTRIX_PARTITION is not set
727# CONFIG_SUN_PARTITION is not set
728# CONFIG_KARMA_PARTITION is not set
729# CONFIG_EFI_PARTITION is not set
730# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set
732# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734
735#
736# Library routines
737#
738# CONFIG_CRC_CCITT is not set
739# CONFIG_CRC16 is not set
740# CONFIG_CRC_ITU_T is not set
741# CONFIG_CRC32 is not set
742# CONFIG_CRC7 is not set
743# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751
752#
753# Kernel hacking
754#
755# CONFIG_PRINTK_TIME is not set
756CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set
761# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set
764CONFIG_DETECT_SOFTLOCKUP=y
765CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set
769# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
772# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
773# CONFIG_DEBUG_KOBJECT is not set
774CONFIG_DEBUG_BUGVERBOSE=y
775CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set
781# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set
787# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set
789
790#
791# Security options
792#
793# CONFIG_KEYS is not set
794# CONFIG_SECURITY is not set
795# CONFIG_SECURITY_FILE_CAPABILITIES is not set
796# CONFIG_CRYPTO is not set
797# CONFIG_PPC_CLOCK is not set
798CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875_defconfig
index cab5f9b64567..a3cc94a2ff06 100644
--- a/arch/powerpc/configs/adder875-redboot_defconfig
+++ b/arch/powerpc/configs/adder875_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6 3# Linux kernel version: 2.6.25-rc2
4# Thu Jan 17 16:17:38 2008 4# Wed Feb 20 12:26:07 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y 26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y 27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
29CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y 31CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y 32CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set 65# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set 66# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set 67# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set 68# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set 69# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14 70CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 71# CONFIG_CGROUPS is not set
72CONFIG_GROUP_SCHED=y
73CONFIG_FAIR_GROUP_SCHED=y 73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y 74# CONFIG_RT_GROUP_SCHED is not set
75# CONFIG_FAIR_CGROUP_SCHED is not set 75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y 77CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set 78# CONFIG_RELAY is not set
79# CONFIG_NAMESPACES is not set
78# CONFIG_BLK_DEV_INITRD is not set 80# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 81# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y 82CONFIG_SYSCTL=y
@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y 89CONFIG_PRINTK=y
88CONFIG_BUG=y 90CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set 91# CONFIG_ELF_CORE is not set
92CONFIG_COMPAT_BRK=y
90# CONFIG_BASE_FULL is not set 93# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set 94# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y 95CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y 96CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y 97CONFIG_SIGNALFD=y
98CONFIG_TIMERFD=y
95CONFIG_EVENTFD=y 99CONFIG_EVENTFD=y
96CONFIG_SHMEM=y 100CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set 101# CONFIG_VM_EVENT_COUNTERS is not set
@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set 103# CONFIG_SLAB is not set
100CONFIG_SLUB=y 104CONFIG_SLUB=y
101# CONFIG_SLOB is not set 105# CONFIG_SLOB is not set
106# CONFIG_PROFILING is not set
107# CONFIG_MARKERS is not set
108CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y
110CONFIG_PROC_PAGE_MONITOR=y
111CONFIG_SLABINFO=y
102# CONFIG_TINY_SHMEM is not set 112# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1 113CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set 114# CONFIG_MODULES is not set
@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline" 132CONFIG_DEFAULT_IOSCHED="deadline"
133CONFIG_CLASSIC_RCU=y
134# CONFIG_PREEMPT_RCU is not set
123 135
124# 136#
125# Platform support 137# Platform support
126# 138#
127# CONFIG_PPC_MPC52xx is not set 139# CONFIG_PPC_MPC512x is not set
128# CONFIG_PPC_MPC5200 is not set 140# CONFIG_PPC_MPC5121 is not set
129# CONFIG_PPC_CELL is not set 141# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 142# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y 143CONFIG_CPM1=y
@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y
150# CONFIG_I2C_SPI_UCODE_PATCH is not set 162# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set 163# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set 164# CONFIG_PQ2ADS is not set
165# CONFIG_IPIC is not set
153# CONFIG_MPIC is not set 166# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set 167# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set 168# CONFIG_PPC_I8259 is not set
@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y
160# CONFIG_PPC_INDIRECT_IO is not set 173# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set 174# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set 175# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y 176CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set 177# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y 178CONFIG_CPM=y
@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
178# CONFIG_HZ_300 is not set 190# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y 191CONFIG_HZ_1000=y
180CONFIG_HZ=1000 192CONFIG_HZ=1000
193# CONFIG_SCHED_HRTICK is not set
181CONFIG_PREEMPT_NONE=y 194CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set 195# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set 196# CONFIG_PREEMPT is not set
197CONFIG_RCU_TRACE=y
184CONFIG_BINFMT_ELF=y 198CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set 199# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set 200# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set 201# CONFIG_8XX_MINIMAL_FPEMU is not set
202# CONFIG_IOMMU_HELPER is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 203CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
204CONFIG_ARCH_HAS_WALK_MEMORY=y
205CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
189CONFIG_ARCH_FLATMEM_ENABLE=y 206CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y 207CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y 208CONFIG_SELECT_MEMORY_MODEL=y
@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set 221# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set 222# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set 223# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set 224# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-redboot.dts"
212CONFIG_ISA_DMA_API=y 225CONFIG_ISA_DMA_API=y
213 226
214# 227#
@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
305# 318#
306# CONFIG_NET_PKTGEN is not set 319# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set 320# CONFIG_HAMRADIO is not set
321# CONFIG_CAN is not set
308# CONFIG_IRDA is not set 322# CONFIG_IRDA is not set
309# CONFIG_BT is not set 323# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set 324# CONFIG_AF_RXRPC is not set
@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set 425# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set 426# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set 427# CONFIG_MISC_DEVICES is not set
428CONFIG_HAVE_IDE=y
414# CONFIG_IDE is not set 429# CONFIG_IDE is not set
415 430
416# 431#
@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y
445# CONFIG_SMSC_PHY is not set 460# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set 461# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set 462# CONFIG_ICPLUS_PHY is not set
463# CONFIG_REALTEK_PHY is not set
448# CONFIG_FIXED_PHY is not set 464# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set 465# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y 466CONFIG_NET_ETHERNET=y
@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y
469# CONFIG_WAN is not set 485# CONFIG_WAN is not set
470# CONFIG_PPP is not set 486# CONFIG_PPP is not set
471# CONFIG_SLIP is not set 487# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set 488# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set 489# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set 490# CONFIG_NET_POLL_CONTROLLER is not set
@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y
574# CONFIG_W1 is not set 589# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set 590# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set 591# CONFIG_HWMON is not set
592CONFIG_THERMAL=y
577# CONFIG_WATCHDOG is not set 593# CONFIG_WATCHDOG is not set
578 594
579# 595#
@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
614# CONFIG_HID_SUPPORT is not set 630# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set 631# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set 632# CONFIG_MMC is not set
633# CONFIG_MEMSTICK is not set
617# CONFIG_NEW_LEDS is not set 634# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set 635# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set 636# CONFIG_RTC_CLASS is not set
@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
635# CONFIG_XFS_FS is not set 652# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set 653# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set 654# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set 655# CONFIG_DNOTIFY is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set 656# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set 657# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set 658# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set 659# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set 660# CONFIG_FUSE_FS is not set
@@ -682,8 +697,10 @@ CONFIG_TMPFS=y
682# CONFIG_JFFS2_FS is not set 697# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y 698CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set 699# CONFIG_VXFS_FS is not set
700# CONFIG_MINIX_FS is not set
685# CONFIG_HPFS_FS is not set 701# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set 702# CONFIG_QNX4FS_FS is not set
703# CONFIG_ROMFS_FS is not set
687# CONFIG_SYSV_FS is not set 704# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set 705# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y 706CONFIG_NETWORK_FILESYSTEMS=y
@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y
730# CONFIG_SYSV68_PARTITION is not set 747# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set 748# CONFIG_NLS is not set
732# CONFIG_DLM is not set 749# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734 750
735# 751#
736# Library routines 752# Library routines
@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y 761CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y 762CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y 763CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751 764
752# 765#
753# Kernel hacking 766# Kernel hacking
@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y 770CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y 771CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set 772# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set 773CONFIG_DEBUG_FS=y
761# CONFIG_HEADERS_CHECK is not set 774# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y 775CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set 776# CONFIG_DEBUG_SHIRQ is not set
@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set 779# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set 780# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set 781# CONFIG_SLUB_DEBUG_ON is not set
782# CONFIG_SLUB_STATS is not set
769# CONFIG_DEBUG_SPINLOCK is not set 783# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set 784# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 785# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set 790# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set 791# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set 792# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set 793# CONFIG_BOOT_PRINTK_DELAY is not set
794# CONFIG_BACKTRACE_SELF_TEST is not set
781# CONFIG_FAULT_INJECTION is not set 795# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set 796# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set 797# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set 798# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set 799# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set 800# CONFIG_DEBUGGER is not set
801# CONFIG_VIRQ_DEBUG is not set
787# CONFIG_BDI_SWITCH is not set 802# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set 803# CONFIG_PPC_EARLY_DEBUG is not set
789 804
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index f7458396cd7c..3c9452d4308b 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -332,8 +332,18 @@ InstructionTLBMiss:
332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ 332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
333 lwz r10, 0(r11) /* Get the pte */ 333 lwz r10, 0(r11) /* Get the pte */
334 334
335#ifdef CONFIG_SWAP
336 /* do not set the _PAGE_ACCESSED bit of a non-present page */
337 andi. r11, r10, _PAGE_PRESENT
338 beq 4f
339 ori r10, r10, _PAGE_ACCESSED
340 mfspr r11, SPRN_MD_TWC /* get the pte address again */
341 stw r10, 0(r11)
3424:
343#else
335 ori r10, r10, _PAGE_ACCESSED 344 ori r10, r10, _PAGE_ACCESSED
336 stw r10, 0(r11) 345 stw r10, 0(r11)
346#endif
337 347
338 /* The Linux PTE won't go exactly into the MMU TLB. 348 /* The Linux PTE won't go exactly into the MMU TLB.
339 * Software indicator bits 21, 22 and 28 must be clear. 349 * Software indicator bits 21, 22 and 28 must be clear.
@@ -398,8 +408,17 @@ DataStoreTLBMiss:
398 DO_8xx_CPU6(0x3b80, r3) 408 DO_8xx_CPU6(0x3b80, r3)
399 mtspr SPRN_MD_TWC, r11 409 mtspr SPRN_MD_TWC, r11
400 410
401 mfspr r11, SPRN_MD_TWC /* get the pte address again */ 411#ifdef CONFIG_SWAP
412 /* do not set the _PAGE_ACCESSED bit of a non-present page */
413 andi. r11, r10, _PAGE_PRESENT
414 beq 4f
402 ori r10, r10, _PAGE_ACCESSED 415 ori r10, r10, _PAGE_ACCESSED
4164:
417 /* and update pte in table */
418#else
419 ori r10, r10, _PAGE_ACCESSED
420#endif
421 mfspr r11, SPRN_MD_TWC /* get the pte address again */
403 stw r10, 0(r11) 422 stw r10, 0(r11)
404 423
405 /* The Linux PTE won't go exactly into the MMU TLB. 424 /* The Linux PTE won't go exactly into the MMU TLB.
@@ -507,7 +526,16 @@ DataTLBError:
507 526
508 /* Update 'changed', among others. 527 /* Update 'changed', among others.
509 */ 528 */
529#ifdef CONFIG_SWAP
530 ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
531 /* do not set the _PAGE_ACCESSED bit of a non-present page */
532 andi. r11, r10, _PAGE_PRESENT
533 beq 4f
534 ori r10, r10, _PAGE_ACCESSED
5354:
536#else
510 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE 537 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
538#endif
511 mfspr r11, SPRN_MD_TWC /* Get pte address again */ 539 mfspr r11, SPRN_MD_TWC /* Get pte address again */
512 stw r10, 0(r11) /* and update pte in table */ 540 stw r10, 0(r11) /* and update pte in table */
513 541
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 5c2e253ddfb1..9d2c56621f1e 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3)
785 or r4,r4,r7 # LSW |= t2 785 or r4,r4,r7 # LSW |= t2
786 blr 786 blr
787 787
788/*
789 * 64-bit comparison: __ucmpdi2(u64 a, u64 b)
790 * Returns 0 if a < b, 1 if a == b, 2 if a > b.
791 */
792_GLOBAL(__ucmpdi2)
793 cmplw r3,r5
794 li r3,1
795 bne 1f
796 cmplw r4,r6
797 beqlr
7981: li r3,0
799 bltlr
800 li r3,2
801 blr
802
788_GLOBAL(abs) 803_GLOBAL(abs)
789 srawi r4,r3,31 804 srawi r4,r3,31
790 xor r3,r3,r4 805 xor r3,r3,r4
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 980fe32895c0..89c83ccb85c1 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
748 struct resource *res = dev->resource + i; 748 struct resource *res = dev->resource + i;
749 if (!res->flags) 749 if (!res->flags)
750 continue; 750 continue;
751 if (res->end == 0xffffffff) { 751 /* On platforms that have PPC_PCI_PROBE_ONLY set, we don't
752 * consider 0 as an unassigned BAR value. It's technically
753 * a valid value, but linux doesn't like it... so when we can
754 * re-assign things, we do so, but if we can't, we keep it
755 * around and hope for the best...
756 */
757 if (res->start == 0 && !(ppc_pci_flags & PPC_PCI_PROBE_ONLY)) {
752 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", 758 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n",
753 pci_name(dev), i, 759 pci_name(dev), i,
754 (unsigned long long)res->start, 760 (unsigned long long)res->start,
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index aa9ff35b0e63..9c98424277a8 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs);
58extern void single_step_exception(struct pt_regs *regs); 58extern void single_step_exception(struct pt_regs *regs);
59extern int sys_sigreturn(struct pt_regs *regs); 59extern int sys_sigreturn(struct pt_regs *regs);
60 60
61EXPORT_SYMBOL(empty_zero_page);
61EXPORT_SYMBOL(clear_pages); 62EXPORT_SYMBOL(clear_pages);
62EXPORT_SYMBOL(copy_page); 63EXPORT_SYMBOL(copy_page);
63EXPORT_SYMBOL(ISA_DMA_THRESHOLD); 64EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int);
149EXPORT_SYMBOL(__ashrdi3); 150EXPORT_SYMBOL(__ashrdi3);
150EXPORT_SYMBOL(__ashldi3); 151EXPORT_SYMBOL(__ashldi3);
151EXPORT_SYMBOL(__lshrdi3); 152EXPORT_SYMBOL(__lshrdi3);
153int __ucmpdi2(unsigned long long, unsigned long long);
154EXPORT_SYMBOL(__ucmpdi2);
152#endif 155#endif
153 156
154EXPORT_SYMBOL(memcpy); 157EXPORT_SYMBOL(memcpy);
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 32f416175db1..590f1f67c874 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -506,10 +506,10 @@ void __init htab_initialize(void)
506 } else { 506 } else {
507 /* Find storage for the HPT. Must be contiguous in 507 /* Find storage for the HPT. Must be contiguous in
508 * the absolute address space. On cell we want it to be 508 * the absolute address space. On cell we want it to be
509 * in the first 1 Gig. 509 * in the first 2 Gig so we can use it for IOMMU hacks.
510 */ 510 */
511 if (machine_is(cell)) 511 if (machine_is(cell))
512 limit = 0x40000000; 512 limit = 0x80000000;
513 else 513 else
514 limit = 0; 514 limit = 0;
515 515
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c
index 13929771bee7..9eed1f68fcab 100644
--- a/arch/powerpc/oprofile/op_model_cell.c
+++ b/arch/powerpc/oprofile/op_model_cell.c
@@ -1151,7 +1151,7 @@ static void cell_handle_interrupt(struct pt_regs *regs,
1151 for (i = 0; i < num_counters; ++i) { 1151 for (i = 0; i < num_counters; ++i) {
1152 if ((interrupt_mask & CBE_PM_CTR_OVERFLOW_INTR(i)) 1152 if ((interrupt_mask & CBE_PM_CTR_OVERFLOW_INTR(i))
1153 && ctr[i].enabled) { 1153 && ctr[i].enabled) {
1154 oprofile_add_pc(pc, is_kernel, i); 1154 oprofile_add_ext_sample(pc, regs, i, is_kernel);
1155 cbe_write_ctr(cpu, i, reset_value[i]); 1155 cbe_write_ctr(cpu, i, reset_value[i]);
1156 } 1156 }
1157 } 1157 }
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 9aa4425d80b2..4d5fd1dbd400 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -199,6 +199,7 @@ int mpc52xx_set_psc_clkdiv(int psc_id, int clkdiv)
199 199
200 return 0; 200 return 0;
201} 201}
202EXPORT_SYMBOL(mpc52xx_set_psc_clkdiv);
202 203
203/** 204/**
204 * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer 205 * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c
index 8a9c26973605..64d17b0d6455 100644
--- a/arch/powerpc/platforms/83xx/mpc837x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c
@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void)
39 if (ret) 39 if (ret)
40 return ret; 40 return ret;
41 /* Map BCSR area */ 41 /* Map BCSR area */
42 np = of_find_node_by_name(NULL, "bcsr"); 42 np = of_find_compatible_node(NULL, NULL, "fsl,mpc837xmds-bcsr");
43 if (np) { 43 if (np) {
44 struct resource res; 44 bcsr_regs = of_iomap(np, 0);
45
46 of_address_to_resource(np, 0, &res);
47 bcsr_regs = ioremap(res.start, res.end - res.start + 1);
48 of_node_put(np); 45 of_node_put(np);
49 } 46 }
50 if (!bcsr_regs) 47 if (!bcsr_regs)
@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void)
96static struct of_device_id mpc837x_ids[] = { 93static struct of_device_id mpc837x_ids[] = {
97 { .type = "soc", }, 94 { .type = "soc", },
98 { .compatible = "soc", }, 95 { .compatible = "soc", },
96 { .compatible = "simple-bus", },
99 {}, 97 {},
100}; 98};
101 99
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 0afd22595546..a578b966ecbc 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -22,7 +22,6 @@ config PPC_83xx
22 select FSL_SOC 22 select FSL_SOC
23 select MPC83xx 23 select MPC83xx
24 select IPIC 24 select IPIC
25 select FSL_EMB_PERFMON
26 25
27config PPC_86xx 26config PPC_86xx
28 bool "Freescale 86xx" 27 bool "Freescale 86xx"
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 73d81ce14b67..0c3face0ddbb 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -113,7 +113,12 @@ config FSL_BOOKE
113 default y 113 default y
114 114
115config FSL_EMB_PERFMON 115config FSL_EMB_PERFMON
116 bool 116 bool "Freescale Embedded Perfmon"
117 depends on E500 || PPC_83xx
118 help
119 This is the Performance Monitor support found on the e500 core
120 and some e300 cores (c3 and c4). Select this only if your
121 core supports the Embedded Performance Monitor APU
117 122
118config PTE_64BIT 123config PTE_64BIT
119 bool 124 bool
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index edab631a8dcb..20ea0e118f24 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -113,7 +113,7 @@
113 113
114/* IOMMU sizing */ 114/* IOMMU sizing */
115#define IO_SEGMENT_SHIFT 28 115#define IO_SEGMENT_SHIFT 28
116#define IO_PAGENO_BITS (IO_SEGMENT_SHIFT - IOMMU_PAGE_SHIFT) 116#define IO_PAGENO_BITS(shift) (IO_SEGMENT_SHIFT - (shift))
117 117
118/* The high bit needs to be set on every DMA address */ 118/* The high bit needs to be set on every DMA address */
119#define SPIDER_DMA_OFFSET 0x80000000ul 119#define SPIDER_DMA_OFFSET 0x80000000ul
@@ -123,7 +123,6 @@ struct iommu_window {
123 struct cbe_iommu *iommu; 123 struct cbe_iommu *iommu;
124 unsigned long offset; 124 unsigned long offset;
125 unsigned long size; 125 unsigned long size;
126 unsigned long pte_offset;
127 unsigned int ioid; 126 unsigned int ioid;
128 struct iommu_table table; 127 struct iommu_table table;
129}; 128};
@@ -200,7 +199,7 @@ static void tce_build_cell(struct iommu_table *tbl, long index, long npages,
200 (window->ioid & IOPTE_IOID_Mask); 199 (window->ioid & IOPTE_IOID_Mask);
201#endif 200#endif
202 201
203 io_pte = (unsigned long *)tbl->it_base + (index - window->pte_offset); 202 io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
204 203
205 for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE) 204 for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE)
206 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask); 205 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask);
@@ -232,7 +231,7 @@ static void tce_free_cell(struct iommu_table *tbl, long index, long npages)
232 | (window->ioid & IOPTE_IOID_Mask); 231 | (window->ioid & IOPTE_IOID_Mask);
233#endif 232#endif
234 233
235 io_pte = (unsigned long *)tbl->it_base + (index - window->pte_offset); 234 io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
236 235
237 for (i = 0; i < npages; i++) 236 for (i = 0; i < npages; i++)
238 io_pte[i] = pte; 237 io_pte[i] = pte;
@@ -307,76 +306,84 @@ static int cell_iommu_find_ioc(int nid, unsigned long *base)
307 return -ENODEV; 306 return -ENODEV;
308} 307}
309 308
310static void cell_iommu_setup_page_tables(struct cbe_iommu *iommu, 309static void cell_iommu_setup_stab(struct cbe_iommu *iommu,
311 unsigned long dbase, unsigned long dsize, 310 unsigned long dbase, unsigned long dsize,
312 unsigned long fbase, unsigned long fsize) 311 unsigned long fbase, unsigned long fsize)
313{ 312{
314 struct page *page; 313 struct page *page;
315 int i; 314 unsigned long segments, stab_size;
316 unsigned long reg, segments, pages_per_segment, ptab_size, stab_size,
317 n_pte_pages, base;
318
319 base = dbase;
320 if (fsize != 0)
321 base = min(fbase, dbase);
322 315
323 segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT; 316 segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT;
324 pages_per_segment = 1ull << IO_PAGENO_BITS;
325 317
326 pr_debug("%s: iommu[%d]: segments: %lu, pages per segment: %lu\n", 318 pr_debug("%s: iommu[%d]: segments: %lu\n",
327 __FUNCTION__, iommu->nid, segments, pages_per_segment); 319 __FUNCTION__, iommu->nid, segments);
328 320
329 /* set up the segment table */ 321 /* set up the segment table */
330 stab_size = segments * sizeof(unsigned long); 322 stab_size = segments * sizeof(unsigned long);
331 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size)); 323 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size));
332 BUG_ON(!page); 324 BUG_ON(!page);
333 iommu->stab = page_address(page); 325 iommu->stab = page_address(page);
334 clear_page(iommu->stab); 326 memset(iommu->stab, 0, stab_size);
327}
328
329static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu,
330 unsigned long base, unsigned long size, unsigned long gap_base,
331 unsigned long gap_size, unsigned long page_shift)
332{
333 struct page *page;
334 int i;
335 unsigned long reg, segments, pages_per_segment, ptab_size,
336 n_pte_pages, start_seg, *ptab;
337
338 start_seg = base >> IO_SEGMENT_SHIFT;
339 segments = size >> IO_SEGMENT_SHIFT;
340 pages_per_segment = 1ull << IO_PAGENO_BITS(page_shift);
341 /* PTEs for each segment must start on a 4K bounday */
342 pages_per_segment = max(pages_per_segment,
343 (1 << 12) / sizeof(unsigned long));
335 344
336 /* ... and the page tables. Since these are contiguous, we can treat
337 * the page tables as one array of ptes, like pSeries does.
338 */
339 ptab_size = segments * pages_per_segment * sizeof(unsigned long); 345 ptab_size = segments * pages_per_segment * sizeof(unsigned long);
340 pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __FUNCTION__, 346 pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __FUNCTION__,
341 iommu->nid, ptab_size, get_order(ptab_size)); 347 iommu->nid, ptab_size, get_order(ptab_size));
342 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size)); 348 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size));
343 BUG_ON(!page); 349 BUG_ON(!page);
344 350
345 iommu->ptab = page_address(page); 351 ptab = page_address(page);
346 memset(iommu->ptab, 0, ptab_size); 352 memset(ptab, 0, ptab_size);
347 353
348 /* allocate a bogus page for the end of each mapping */ 354 /* number of 4K pages needed for a page table */
349 page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0); 355 n_pte_pages = (pages_per_segment * sizeof(unsigned long)) >> 12;
350 BUG_ON(!page);
351 iommu->pad_page = page_address(page);
352 clear_page(iommu->pad_page);
353
354 /* number of pages needed for a page table */
355 n_pte_pages = (pages_per_segment *
356 sizeof(unsigned long)) >> IOMMU_PAGE_SHIFT;
357 356
358 pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", 357 pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n",
359 __FUNCTION__, iommu->nid, iommu->stab, iommu->ptab, 358 __FUNCTION__, iommu->nid, iommu->stab, ptab,
360 n_pte_pages); 359 n_pte_pages);
361 360
362 /* initialise the STEs */ 361 /* initialise the STEs */
363 reg = IOSTE_V | ((n_pte_pages - 1) << 5); 362 reg = IOSTE_V | ((n_pte_pages - 1) << 5);
364 363
365 if (IOMMU_PAGE_SIZE == 0x1000) 364 switch (page_shift) {
366 reg |= IOSTE_PS_4K; 365 case 12: reg |= IOSTE_PS_4K; break;
367 else if (IOMMU_PAGE_SIZE == 0x10000) 366 case 16: reg |= IOSTE_PS_64K; break;
368 reg |= IOSTE_PS_64K; 367 case 20: reg |= IOSTE_PS_1M; break;
369 else { 368 case 24: reg |= IOSTE_PS_16M; break;
370 extern void __unknown_page_size_error(void); 369 default: BUG();
371 __unknown_page_size_error();
372 } 370 }
373 371
372 gap_base = gap_base >> IO_SEGMENT_SHIFT;
373 gap_size = gap_size >> IO_SEGMENT_SHIFT;
374
374 pr_debug("Setting up IOMMU stab:\n"); 375 pr_debug("Setting up IOMMU stab:\n");
375 for (i = base >> IO_SEGMENT_SHIFT; i < segments; i++) { 376 for (i = start_seg; i < (start_seg + segments); i++) {
376 iommu->stab[i] = reg | 377 if (i >= gap_base && i < (gap_base + gap_size)) {
377 (__pa(iommu->ptab) + n_pte_pages * IOMMU_PAGE_SIZE * i); 378 pr_debug("\toverlap at %d, skipping\n", i);
379 continue;
380 }
381 iommu->stab[i] = reg | (__pa(ptab) + (n_pte_pages << 12) *
382 (i - start_seg));
378 pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]); 383 pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]);
379 } 384 }
385
386 return ptab;
380} 387}
381 388
382static void cell_iommu_enable_hardware(struct cbe_iommu *iommu) 389static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
@@ -423,7 +430,9 @@ static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
423static void cell_iommu_setup_hardware(struct cbe_iommu *iommu, 430static void cell_iommu_setup_hardware(struct cbe_iommu *iommu,
424 unsigned long base, unsigned long size) 431 unsigned long base, unsigned long size)
425{ 432{
426 cell_iommu_setup_page_tables(iommu, base, size, 0, 0); 433 cell_iommu_setup_stab(iommu, base, size, 0, 0);
434 iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0,
435 IOMMU_PAGE_SHIFT);
427 cell_iommu_enable_hardware(iommu); 436 cell_iommu_enable_hardware(iommu);
428} 437}
429 438
@@ -464,6 +473,7 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
464 unsigned long pte_offset) 473 unsigned long pte_offset)
465{ 474{
466 struct iommu_window *window; 475 struct iommu_window *window;
476 struct page *page;
467 u32 ioid; 477 u32 ioid;
468 478
469 ioid = cell_iommu_get_ioid(np); 479 ioid = cell_iommu_get_ioid(np);
@@ -475,13 +485,11 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
475 window->size = size; 485 window->size = size;
476 window->ioid = ioid; 486 window->ioid = ioid;
477 window->iommu = iommu; 487 window->iommu = iommu;
478 window->pte_offset = pte_offset;
479 488
480 window->table.it_blocksize = 16; 489 window->table.it_blocksize = 16;
481 window->table.it_base = (unsigned long)iommu->ptab; 490 window->table.it_base = (unsigned long)iommu->ptab;
482 window->table.it_index = iommu->nid; 491 window->table.it_index = iommu->nid;
483 window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + 492 window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + pte_offset;
484 window->pte_offset;
485 window->table.it_size = size >> IOMMU_PAGE_SHIFT; 493 window->table.it_size = size >> IOMMU_PAGE_SHIFT;
486 494
487 iommu_init_table(&window->table, iommu->nid); 495 iommu_init_table(&window->table, iommu->nid);
@@ -504,6 +512,11 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
504 * This code also assumes that we have a window that starts at 0, 512 * This code also assumes that we have a window that starts at 0,
505 * which is the case on all spider based blades. 513 * which is the case on all spider based blades.
506 */ 514 */
515 page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0);
516 BUG_ON(!page);
517 iommu->pad_page = page_address(page);
518 clear_page(iommu->pad_page);
519
507 __set_bit(0, window->table.it_map); 520 __set_bit(0, window->table.it_map);
508 tce_build_cell(&window->table, window->table.it_offset, 1, 521 tce_build_cell(&window->table, window->table.it_offset, 1,
509 (unsigned long)iommu->pad_page, DMA_TO_DEVICE); 522 (unsigned long)iommu->pad_page, DMA_TO_DEVICE);
@@ -549,7 +562,7 @@ static void cell_dma_dev_setup_iommu(struct device *dev)
549 archdata->dma_data = &window->table; 562 archdata->dma_data = &window->table;
550} 563}
551 564
552static void cell_dma_dev_setup_static(struct device *dev); 565static void cell_dma_dev_setup_fixed(struct device *dev);
553 566
554static void cell_dma_dev_setup(struct device *dev) 567static void cell_dma_dev_setup(struct device *dev)
555{ 568{
@@ -557,7 +570,7 @@ static void cell_dma_dev_setup(struct device *dev)
557 570
558 /* Order is important here, these are not mutually exclusive */ 571 /* Order is important here, these are not mutually exclusive */
559 if (get_dma_ops(dev) == &dma_iommu_fixed_ops) 572 if (get_dma_ops(dev) == &dma_iommu_fixed_ops)
560 cell_dma_dev_setup_static(dev); 573 cell_dma_dev_setup_fixed(dev);
561 else if (get_pci_dma_ops() == &dma_iommu_ops) 574 else if (get_pci_dma_ops() == &dma_iommu_ops)
562 cell_dma_dev_setup_iommu(dev); 575 cell_dma_dev_setup_iommu(dev);
563 else if (get_pci_dma_ops() == &dma_direct_ops) 576 else if (get_pci_dma_ops() == &dma_direct_ops)
@@ -858,7 +871,7 @@ static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask)
858 return 0; 871 return 0;
859} 872}
860 873
861static void cell_dma_dev_setup_static(struct device *dev) 874static void cell_dma_dev_setup_fixed(struct device *dev)
862{ 875{
863 struct dev_archdata *archdata = &dev->archdata; 876 struct dev_archdata *archdata = &dev->archdata;
864 u64 addr; 877 u64 addr;
@@ -869,35 +882,45 @@ static void cell_dma_dev_setup_static(struct device *dev)
869 dev_dbg(dev, "iommu: fixed addr = %lx\n", addr); 882 dev_dbg(dev, "iommu: fixed addr = %lx\n", addr);
870} 883}
871 884
885static void insert_16M_pte(unsigned long addr, unsigned long *ptab,
886 unsigned long base_pte)
887{
888 unsigned long segment, offset;
889
890 segment = addr >> IO_SEGMENT_SHIFT;
891 offset = (addr >> 24) - (segment << IO_PAGENO_BITS(24));
892 ptab = ptab + (segment * (1 << 12) / sizeof(unsigned long));
893
894 pr_debug("iommu: addr %lx ptab %p segment %lx offset %lx\n",
895 addr, ptab, segment, offset);
896
897 ptab[offset] = base_pte | (__pa(addr) & IOPTE_RPN_Mask);
898}
899
872static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu, 900static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu,
873 struct device_node *np, unsigned long dbase, unsigned long dsize, 901 struct device_node *np, unsigned long dbase, unsigned long dsize,
874 unsigned long fbase, unsigned long fsize) 902 unsigned long fbase, unsigned long fsize)
875{ 903{
876 unsigned long base_pte, uaddr, *io_pte; 904 unsigned long base_pte, uaddr, ioaddr, *ptab;
877 int i;
878 905
879 dma_iommu_fixed_base = fbase; 906 ptab = cell_iommu_alloc_ptab(iommu, fbase, fsize, dbase, dsize, 24);
880 907
881 /* convert from bytes into page table indices */ 908 dma_iommu_fixed_base = fbase;
882 dbase = dbase >> IOMMU_PAGE_SHIFT;
883 dsize = dsize >> IOMMU_PAGE_SHIFT;
884 fbase = fbase >> IOMMU_PAGE_SHIFT;
885 fsize = fsize >> IOMMU_PAGE_SHIFT;
886 909
887 pr_debug("iommu: mapping 0x%lx pages from 0x%lx\n", fsize, fbase); 910 pr_debug("iommu: mapping 0x%lx pages from 0x%lx\n", fsize, fbase);
888 911
889 io_pte = iommu->ptab;
890 base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW 912 base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW
891 | (cell_iommu_get_ioid(np) & IOPTE_IOID_Mask); 913 | (cell_iommu_get_ioid(np) & IOPTE_IOID_Mask);
892 914
893 uaddr = 0; 915 for (uaddr = 0; uaddr < fsize; uaddr += (1 << 24)) {
894 for (i = fbase; i < fbase + fsize; i++, uaddr += IOMMU_PAGE_SIZE) {
895 /* Don't touch the dynamic region */ 916 /* Don't touch the dynamic region */
896 if (i >= dbase && i < (dbase + dsize)) { 917 ioaddr = uaddr + fbase;
897 pr_debug("iommu: static/dynamic overlap, skipping\n"); 918 if (ioaddr >= dbase && ioaddr < (dbase + dsize)) {
919 pr_debug("iommu: fixed/dynamic overlap, skipping\n");
898 continue; 920 continue;
899 } 921 }
900 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask); 922
923 insert_16M_pte(uaddr, ptab, base_pte);
901 } 924 }
902 925
903 mb(); 926 mb();
@@ -995,7 +1018,9 @@ static int __init cell_iommu_fixed_mapping_init(void)
995 "fixed window 0x%lx-0x%lx\n", iommu->nid, dbase, 1018 "fixed window 0x%lx-0x%lx\n", iommu->nid, dbase,
996 dbase + dsize, fbase, fbase + fsize); 1019 dbase + dsize, fbase, fbase + fsize);
997 1020
998 cell_iommu_setup_page_tables(iommu, dbase, dsize, fbase, fsize); 1021 cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize);
1022 iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0,
1023 IOMMU_PAGE_SHIFT);
999 cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize, 1024 cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize,
1000 fbase, fsize); 1025 fbase, fsize);
1001 cell_iommu_enable_hardware(iommu); 1026 cell_iommu_enable_hardware(iommu);
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index a7f609b3b876..dda34650cb07 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -149,6 +149,11 @@ static void __init cell_init_irq(void)
149 mpic_init_IRQ(); 149 mpic_init_IRQ();
150} 150}
151 151
152static void __init cell_set_dabrx(void)
153{
154 mtspr(SPRN_DABRX, DABRX_KERNEL | DABRX_USER);
155}
156
152static void __init cell_setup_arch(void) 157static void __init cell_setup_arch(void)
153{ 158{
154#ifdef CONFIG_SPU_BASE 159#ifdef CONFIG_SPU_BASE
@@ -158,6 +163,8 @@ static void __init cell_setup_arch(void)
158 163
159 cbe_regs_init(); 164 cbe_regs_init();
160 165
166 cell_set_dabrx();
167
161#ifdef CONFIG_CBE_RAS 168#ifdef CONFIG_CBE_RAS
162 cbe_ras_init(); 169 cbe_ras_init();
163#endif 170#endif
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 87eb07f94c5f..712001f6b7da 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -81,9 +81,12 @@ struct spu_slb {
81void spu_invalidate_slbs(struct spu *spu) 81void spu_invalidate_slbs(struct spu *spu)
82{ 82{
83 struct spu_priv2 __iomem *priv2 = spu->priv2; 83 struct spu_priv2 __iomem *priv2 = spu->priv2;
84 unsigned long flags;
84 85
86 spin_lock_irqsave(&spu->register_lock, flags);
85 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) 87 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK)
86 out_be64(&priv2->slb_invalidate_all_W, 0UL); 88 out_be64(&priv2->slb_invalidate_all_W, 0UL);
89 spin_unlock_irqrestore(&spu->register_lock, flags);
87} 90}
88EXPORT_SYMBOL_GPL(spu_invalidate_slbs); 91EXPORT_SYMBOL_GPL(spu_invalidate_slbs);
89 92
@@ -148,7 +151,11 @@ static inline void spu_load_slb(struct spu *spu, int slbe, struct spu_slb *slb)
148 __func__, slbe, slb->vsid, slb->esid); 151 __func__, slbe, slb->vsid, slb->esid);
149 152
150 out_be64(&priv2->slb_index_W, slbe); 153 out_be64(&priv2->slb_index_W, slbe);
154 /* set invalid before writing vsid */
155 out_be64(&priv2->slb_esid_RW, 0);
156 /* now it's safe to write the vsid */
151 out_be64(&priv2->slb_vsid_RW, slb->vsid); 157 out_be64(&priv2->slb_vsid_RW, slb->vsid);
158 /* setting the new esid makes the entry valid again */
152 out_be64(&priv2->slb_esid_RW, slb->esid); 159 out_be64(&priv2->slb_esid_RW, slb->esid);
153} 160}
154 161
@@ -290,9 +297,11 @@ void spu_setup_kernel_slbs(struct spu *spu, struct spu_lscsa *lscsa,
290 nr_slbs++; 297 nr_slbs++;
291 } 298 }
292 299
300 spin_lock_irq(&spu->register_lock);
293 /* Add the set of SLBs */ 301 /* Add the set of SLBs */
294 for (i = 0; i < nr_slbs; i++) 302 for (i = 0; i < nr_slbs; i++)
295 spu_load_slb(spu, i, &slbs[i]); 303 spu_load_slb(spu, i, &slbs[i]);
304 spin_unlock_irq(&spu->register_lock);
296} 305}
297EXPORT_SYMBOL_GPL(spu_setup_kernel_slbs); 306EXPORT_SYMBOL_GPL(spu_setup_kernel_slbs);
298 307
@@ -337,13 +346,14 @@ spu_irq_class_1(int irq, void *data)
337 if (stat & CLASS1_STORAGE_FAULT_INTR) 346 if (stat & CLASS1_STORAGE_FAULT_INTR)
338 spu_mfc_dsisr_set(spu, 0ul); 347 spu_mfc_dsisr_set(spu, 0ul);
339 spu_int_stat_clear(spu, 1, stat); 348 spu_int_stat_clear(spu, 1, stat);
340 spin_unlock(&spu->register_lock);
341 pr_debug("%s: %lx %lx %lx %lx\n", __FUNCTION__, mask, stat,
342 dar, dsisr);
343 349
344 if (stat & CLASS1_SEGMENT_FAULT_INTR) 350 if (stat & CLASS1_SEGMENT_FAULT_INTR)
345 __spu_trap_data_seg(spu, dar); 351 __spu_trap_data_seg(spu, dar);
346 352
353 spin_unlock(&spu->register_lock);
354 pr_debug("%s: %lx %lx %lx %lx\n", __FUNCTION__, mask, stat,
355 dar, dsisr);
356
347 if (stat & CLASS1_STORAGE_FAULT_INTR) 357 if (stat & CLASS1_STORAGE_FAULT_INTR)
348 __spu_trap_data_map(spu, dar, dsisr); 358 __spu_trap_data_map(spu, dar, dsisr);
349 359
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c
index 133995ed5cc7..0ad83aeb70b1 100644
--- a/arch/powerpc/platforms/cell/spufs/context.c
+++ b/arch/powerpc/platforms/cell/spufs/context.c
@@ -109,13 +109,12 @@ void spu_forget(struct spu_context *ctx)
109 109
110 /* 110 /*
111 * This is basically an open-coded spu_acquire_saved, except that 111 * This is basically an open-coded spu_acquire_saved, except that
112 * we don't acquire the state mutex interruptible. 112 * we don't acquire the state mutex interruptible, and we don't
113 * want this context to be rescheduled on release.
113 */ 114 */
114 mutex_lock(&ctx->state_mutex); 115 mutex_lock(&ctx->state_mutex);
115 if (ctx->state != SPU_STATE_SAVED) { 116 if (ctx->state != SPU_STATE_SAVED)
116 set_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags);
117 spu_deactivate(ctx); 117 spu_deactivate(ctx);
118 }
119 118
120 mm = ctx->owner; 119 mm = ctx->owner;
121 ctx->owner = NULL; 120 ctx->owner = NULL;
@@ -171,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx)
171{ 170{
172 BUG_ON(ctx->state != SPU_STATE_SAVED); 171 BUG_ON(ctx->state != SPU_STATE_SAVED);
173 172
174 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags)) 173 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags) &&
174 test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
175 spu_activate(ctx, 0); 175 spu_activate(ctx, 0);
176 176
177 spu_release(ctx); 177 spu_release(ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index c66c3756970d..f7a7e8635fb6 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -367,6 +367,13 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
367 return NOPFN_SIGBUS; 367 return NOPFN_SIGBUS;
368 368
369 /* 369 /*
370 * Because we release the mmap_sem, the context may be destroyed while
371 * we're in spu_wait. Grab an extra reference so it isn't destroyed
372 * in the meantime.
373 */
374 get_spu_context(ctx);
375
376 /*
370 * We have to wait for context to be loaded before we have 377 * We have to wait for context to be loaded before we have
371 * pages to hand out to the user, but we don't want to wait 378 * pages to hand out to the user, but we don't want to wait
372 * with the mmap_sem held. 379 * with the mmap_sem held.
@@ -375,7 +382,7 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
375 * hanged. 382 * hanged.
376 */ 383 */
377 if (spu_acquire(ctx)) 384 if (spu_acquire(ctx))
378 return NOPFN_REFAULT; 385 goto refault;
379 386
380 if (ctx->state == SPU_STATE_SAVED) { 387 if (ctx->state == SPU_STATE_SAVED) {
381 up_read(&current->mm->mmap_sem); 388 up_read(&current->mm->mmap_sem);
@@ -391,6 +398,9 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
391 398
392 if (!ret) 399 if (!ret)
393 spu_release(ctx); 400 spu_release(ctx);
401
402refault:
403 put_spu_context(ctx);
394 return NOPFN_REFAULT; 404 return NOPFN_REFAULT;
395} 405}
396 406
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index 6221968c2a3c..cac69e116776 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
220 } 220 }
221 } 221 }
222 222
223 set_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
223 return 0; 224 return 0;
224} 225}
225 226
@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc,
234 *npc = ctx->ops->npc_read(ctx); 235 *npc = ctx->ops->npc_read(ctx);
235 236
236 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 237 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
237 ctx->policy = SCHED_IDLE; 238 clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
238 spu_release(ctx); 239 spu_release(ctx);
239 240
240 if (signal_pending(current)) 241 if (signal_pending(current))
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 3a5972117de7..00528ef84ad2 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -246,7 +246,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
246 spu_switch_notify(spu, ctx); 246 spu_switch_notify(spu, ctx);
247 ctx->state = SPU_STATE_RUNNABLE; 247 ctx->state = SPU_STATE_RUNNABLE;
248 248
249 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 249 spuctx_switch_state(ctx, SPU_UTIL_USER);
250} 250}
251 251
252/* 252/*
@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
867 if (ctx->policy == SCHED_FIFO) 867 if (ctx->policy == SCHED_FIFO)
868 goto out; 868 goto out;
869 869
870 if (--ctx->time_slice && ctx->policy != SCHED_IDLE) 870 if (--ctx->time_slice && test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
871 goto out; 871 goto out;
872 872
873 spu = ctx->spu; 873 spu = ctx->spu;
@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
877 new = grab_runnable_context(ctx->prio + 1, spu->node); 877 new = grab_runnable_context(ctx->prio + 1, spu->node);
878 if (new) { 878 if (new) {
879 spu_unschedule(spu, ctx); 879 spu_unschedule(spu, ctx);
880 if (ctx->policy != SCHED_IDLE) 880 if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
881 spu_add_to_rq(ctx); 881 spu_add_to_rq(ctx);
882 } else { 882 } else {
883 spu_context_nospu_trace(spusched_tick__newslice, ctx); 883 spu_context_nospu_trace(spusched_tick__newslice, ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 2c2fe3c07d72..cdc515182f82 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -44,6 +44,7 @@ struct spu_gang;
44enum { 44enum {
45 SPU_SCHED_NOTIFY_ACTIVE, 45 SPU_SCHED_NOTIFY_ACTIVE,
46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ 46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */
47 SPU_SCHED_SPU_RUN, /* context is within spu_run */
47}; 48};
48 49
49struct spu_context { 50struct spu_context {
diff --git a/arch/powerpc/platforms/cell/spufs/sputrace.c b/arch/powerpc/platforms/cell/spufs/sputrace.c
index 01974f7776e1..79aa773f3c99 100644
--- a/arch/powerpc/platforms/cell/spufs/sputrace.c
+++ b/arch/powerpc/platforms/cell/spufs/sputrace.c
@@ -58,12 +58,12 @@ static int sputrace_sprint(char *tbuf, int n)
58 ktime_to_timespec(ktime_sub(t->tstamp, sputrace_start)); 58 ktime_to_timespec(ktime_sub(t->tstamp, sputrace_start));
59 59
60 return snprintf(tbuf, n, 60 return snprintf(tbuf, n,
61 "[%lu.%09lu] %d: %s (thread = %d, spu = %d)\n", 61 "[%lu.%09lu] %d: %s (ctxthread = %d, spu = %d)\n",
62 (unsigned long) tv.tv_sec, 62 (unsigned long) tv.tv_sec,
63 (unsigned long) tv.tv_nsec, 63 (unsigned long) tv.tv_nsec,
64 t->owner_tid,
65 t->name,
66 t->curr_tid, 64 t->curr_tid,
65 t->name,
66 t->owner_tid,
67 t->number); 67 t->number);
68} 68}
69 69
@@ -188,6 +188,7 @@ struct spu_probe spu_probes[] = {
188 { "spufs_ps_nopfn__insert", "%p %p", spu_context_event }, 188 { "spufs_ps_nopfn__insert", "%p %p", spu_context_event },
189 { "spu_acquire_saved__enter", "%p", spu_context_nospu_event }, 189 { "spu_acquire_saved__enter", "%p", spu_context_nospu_event },
190 { "destroy_spu_context__enter", "%p", spu_context_nospu_event }, 190 { "destroy_spu_context__enter", "%p", spu_context_nospu_event },
191 { "spufs_stop_callback__enter", "%p %p", spu_context_event },
191}; 192};
192 193
193static int __init sputrace_init(void) 194static int __init sputrace_init(void)
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c
index 6f5886c7b1f9..e9dc7a55d1b9 100644
--- a/arch/powerpc/platforms/cell/spufs/switch.c
+++ b/arch/powerpc/platforms/cell/spufs/switch.c
@@ -34,6 +34,7 @@
34 34
35#include <linux/module.h> 35#include <linux/module.h>
36#include <linux/errno.h> 36#include <linux/errno.h>
37#include <linux/hardirq.h>
37#include <linux/sched.h> 38#include <linux/sched.h>
38#include <linux/kernel.h> 39#include <linux/kernel.h>
39#include <linux/mm.h> 40#include <linux/mm.h>
@@ -117,6 +118,8 @@ static inline void disable_interrupts(struct spu_state *csa, struct spu *spu)
117 * Write INT_MASK_class1 with value of 0. 118 * Write INT_MASK_class1 with value of 0.
118 * Save INT_Mask_class2 in CSA. 119 * Save INT_Mask_class2 in CSA.
119 * Write INT_MASK_class2 with value of 0. 120 * Write INT_MASK_class2 with value of 0.
121 * Synchronize all three interrupts to be sure
122 * we no longer execute a handler on another CPU.
120 */ 123 */
121 spin_lock_irq(&spu->register_lock); 124 spin_lock_irq(&spu->register_lock);
122 if (csa) { 125 if (csa) {
@@ -129,6 +132,9 @@ static inline void disable_interrupts(struct spu_state *csa, struct spu *spu)
129 spu_int_mask_set(spu, 2, 0ul); 132 spu_int_mask_set(spu, 2, 0ul);
130 eieio(); 133 eieio();
131 spin_unlock_irq(&spu->register_lock); 134 spin_unlock_irq(&spu->register_lock);
135 synchronize_irq(spu->irqs[0]);
136 synchronize_irq(spu->irqs[1]);
137 synchronize_irq(spu->irqs[2]);
132} 138}
133 139
134static inline void set_watchdog_timer(struct spu_state *csa, struct spu *spu) 140static inline void set_watchdog_timer(struct spu_state *csa, struct spu *spu)
diff --git a/arch/powerpc/platforms/celleb/beat.h b/arch/powerpc/platforms/celleb/beat.h
index b2e292df13ca..ac82ac35b991 100644
--- a/arch/powerpc/platforms/celleb/beat.h
+++ b/arch/powerpc/platforms/celleb/beat.h
@@ -21,9 +21,6 @@
21#ifndef _CELLEB_BEAT_H 21#ifndef _CELLEB_BEAT_H
22#define _CELLEB_BEAT_H 22#define _CELLEB_BEAT_H
23 23
24#define DABRX_KERNEL (1UL<<1)
25#define DABRX_USER (1UL<<0)
26
27int64_t beat_get_term_char(uint64_t,uint64_t*,uint64_t*,uint64_t*); 24int64_t beat_get_term_char(uint64_t,uint64_t*,uint64_t*,uint64_t*);
28int64_t beat_put_term_char(uint64_t,uint64_t,uint64_t,uint64_t); 25int64_t beat_put_term_char(uint64_t,uint64_t,uint64_t,uint64_t);
29int64_t beat_repository_encode(int, const char *, uint64_t[4]); 26int64_t beat_repository_encode(int, const char *, uint64_t[4]);
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 40736400ef80..829b8b02527b 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void)
618 if (np == NULL) 618 if (np == NULL)
619 goto not_found; 619 goto not_found;
620 viaint = irq_of_parse_and_map(np, 0);; 620 viaint = irq_of_parse_and_map(np, 0);;
621#endif /* CONFIG_ADB_PMU */
622 621
623not_found: 622not_found:
623#endif /* CONFIG_ADB_PMU */
624 return viaint; 624 return viaint;
625} 625}
626 626
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 6efbd5e5bb1b..cc81fd1141b0 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
509 } 509 }
510 510
511 /* Validate some of the fields */ 511 /* Validate some of the fields */
512 if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { 512 if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) {
513 printk(KERN_ERR "qe-firmware: invalid data\n"); 513 printk(KERN_ERR "qe-firmware: invalid data\n");
514 return -EINVAL; 514 return -EINVAL;
515 } 515 }
@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void)
609 * If we haven't checked yet, and a driver hasn't uploaded a firmware 609 * If we haven't checked yet, and a driver hasn't uploaded a firmware
610 * yet, then check the device tree for information. 610 * yet, then check the device tree for information.
611 */ 611 */
612 if (initialized || qe_firmware_uploaded) 612 if (qe_firmware_uploaded)
613 return &qe_firmware_info;
614
615 if (initialized)
613 return NULL; 616 return NULL;
614 617
615 initialized = 1; 618 initialized = 1;