diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-07 10:40:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-07 10:40:55 -0400 |
commit | 44d84afa834b799560d7dbe47250ad7557f5ca2f (patch) | |
tree | d18b90078503c956d32f9f0c6524bc43ece96b25 /arch | |
parent | f8201abcb2badce7eaa6a3715f9a228cfd88a453 (diff) | |
parent | 11b55da700eb77905f1c2dde3a0cbeedc665a753 (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (28 commits)
powerpc: Fix oops when loading modules
powerpc: Wire up preadv and pwritev
powerpc/ftrace: Fix printf format warning
powerpc/ftrace: Fix #if that should be #ifdef
powerpc: Fix ptrace compat wrapper for FPU register access
powerpc: Print information about mapping hw irqs to virtual irqs
powerpc: Correct dependency of KEXEC
powerpc: Disable VSX or current process in giveup_fpu/altivec
powerpc/pseries: Enable relay in pseries_defconfig
powerpc/pseries: Fix ibm,client-architecture comment
powerpc/pseries: Scan for all events in rtasd
powerpc/pseries: Add dispatch dispersion statistics
powerpc: Clean up some prom printouts
powerpc: Print progress of ibm,client-architecture method
powerpc: Remove duplicated #include's
powerpc/pmac: Fix internal modem IRQ on Wallstreet PowerBook
powerpc/wdrtas: Update wdrtas_get_interval to use rtas_data_buf
fsl-diu-fb: Pass the proper device for dma mapping routines
powerpc/pq2fads: Update device tree for use with device-tree-aware u-boot.
cpm_uart: Disable CPM udbg when re-initing CPM uart, even if not the console.
...
Diffstat (limited to 'arch')
31 files changed, 181 insertions, 79 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 9e08d8a69fd..5b50e1ac617 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -316,7 +316,7 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE | |||
316 | 316 | ||
317 | config KEXEC | 317 | config KEXEC |
318 | bool "kexec system call (EXPERIMENTAL)" | 318 | bool "kexec system call (EXPERIMENTAL)" |
319 | depends on BOOK3S && EXPERIMENTAL | 319 | depends on PPC_BOOK3S && EXPERIMENTAL |
320 | help | 320 | help |
321 | kexec is a system call that implements the ability to shutdown your | 321 | kexec is a system call that implements the ability to shutdown your |
322 | current kernel, and to start another kernel. It is like a reboot | 322 | current kernel, and to start another kernel. It is like a reboot |
@@ -775,6 +775,7 @@ config LOWMEM_CAM_NUM_BOOL | |||
775 | Say N here unless you know what you are doing. | 775 | Say N here unless you know what you are doing. |
776 | 776 | ||
777 | config LOWMEM_CAM_NUM | 777 | config LOWMEM_CAM_NUM |
778 | depends on FSL_BOOKE | ||
778 | int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL | 779 | int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL |
779 | default 3 | 780 | default 3 |
780 | 781 | ||
diff --git a/arch/powerpc/boot/dts/ksi8560.dts b/arch/powerpc/boot/dts/ksi8560.dts index 308fe7c29de..c9cfd374bff 100644 --- a/arch/powerpc/boot/dts/ksi8560.dts +++ b/arch/powerpc/boot/dts/ksi8560.dts | |||
@@ -57,14 +57,14 @@ | |||
57 | bus-frequency = <0>; /* Fixed by bootwrapper */ | 57 | bus-frequency = <0>; /* Fixed by bootwrapper */ |
58 | 58 | ||
59 | memory-controller@2000 { | 59 | memory-controller@2000 { |
60 | compatible = "fsl,8540-memory-controller"; | 60 | compatible = "fsl,mpc8540-memory-controller"; |
61 | reg = <0x2000 0x1000>; | 61 | reg = <0x2000 0x1000>; |
62 | interrupt-parent = <&mpic>; | 62 | interrupt-parent = <&mpic>; |
63 | interrupts = <0x12 0x2>; | 63 | interrupts = <0x12 0x2>; |
64 | }; | 64 | }; |
65 | 65 | ||
66 | L2: l2-cache-controller@20000 { | 66 | L2: l2-cache-controller@20000 { |
67 | compatible = "fsl,8540-l2-cache-controller"; | 67 | compatible = "fsl,mpc8540-l2-cache-controller"; |
68 | reg = <0x20000 0x1000>; | 68 | reg = <0x20000 0x1000>; |
69 | cache-line-size = <0x20>; /* 32 bytes */ | 69 | cache-line-size = <0x20>; /* 32 bytes */ |
70 | cache-size = <0x40000>; /* L2, 256K */ | 70 | cache-size = <0x40000>; /* L2, 256K */ |
diff --git a/arch/powerpc/boot/dts/pq2fads.dts b/arch/powerpc/boot/dts/pq2fads.dts index b2d61091b36..0bb66937674 100644 --- a/arch/powerpc/boot/dts/pq2fads.dts +++ b/arch/powerpc/boot/dts/pq2fads.dts | |||
@@ -17,6 +17,14 @@ | |||
17 | #address-cells = <1>; | 17 | #address-cells = <1>; |
18 | #size-cells = <1>; | 18 | #size-cells = <1>; |
19 | 19 | ||
20 | aliases { | ||
21 | ethernet0 = &enet0; | ||
22 | ethernet1 = &enet1; | ||
23 | serial0 = &serial0; | ||
24 | serial1 = &serial1; | ||
25 | pci0 = &pci0; | ||
26 | }; | ||
27 | |||
20 | cpus { | 28 | cpus { |
21 | #address-cells = <1>; | 29 | #address-cells = <1>; |
22 | #size-cells = <0>; | 30 | #size-cells = <0>; |
@@ -45,7 +53,7 @@ | |||
45 | #size-cells = <1>; | 53 | #size-cells = <1>; |
46 | reg = <0xf0010100 0x60>; | 54 | reg = <0xf0010100 0x60>; |
47 | 55 | ||
48 | ranges = <0x0 0x0 0xfe000000 0x800000 | 56 | ranges = <0x0 0x0 0xff800000 0x800000 |
49 | 0x1 0x0 0xf4500000 0x8000 | 57 | 0x1 0x0 0xf4500000 0x8000 |
50 | 0x8 0x0 0xf8200000 0x8000>; | 58 | 0x8 0x0 0xf8200000 0x8000>; |
51 | 59 | ||
@@ -71,7 +79,7 @@ | |||
71 | }; | 79 | }; |
72 | }; | 80 | }; |
73 | 81 | ||
74 | pci@f0010800 { | 82 | pci0: pci@f0010800 { |
75 | device_type = "pci"; | 83 | device_type = "pci"; |
76 | reg = <0xf0010800 0x10c 0xf00101ac 0x8 0xf00101c4 0x8>; | 84 | reg = <0xf0010800 0x10c 0xf00101ac 0x8 0xf00101c4 0x8>; |
77 | compatible = "fsl,mpc8280-pci", "fsl,pq2-pci"; | 85 | compatible = "fsl,mpc8280-pci", "fsl,pq2-pci"; |
@@ -142,7 +150,7 @@ | |||
142 | reg = <0x119f0 0x10 0x115f0 0x10>; | 150 | reg = <0x119f0 0x10 0x115f0 0x10>; |
143 | }; | 151 | }; |
144 | 152 | ||
145 | serial@11a00 { | 153 | serial0: serial@11a00 { |
146 | device_type = "serial"; | 154 | device_type = "serial"; |
147 | compatible = "fsl,mpc8280-scc-uart", | 155 | compatible = "fsl,mpc8280-scc-uart", |
148 | "fsl,cpm2-scc-uart"; | 156 | "fsl,cpm2-scc-uart"; |
@@ -153,7 +161,7 @@ | |||
153 | fsl,cpm-command = <0x800000>; | 161 | fsl,cpm-command = <0x800000>; |
154 | }; | 162 | }; |
155 | 163 | ||
156 | serial@11a20 { | 164 | serial1: serial@11a20 { |
157 | device_type = "serial"; | 165 | device_type = "serial"; |
158 | compatible = "fsl,mpc8280-scc-uart", | 166 | compatible = "fsl,mpc8280-scc-uart", |
159 | "fsl,cpm2-scc-uart"; | 167 | "fsl,cpm2-scc-uart"; |
@@ -164,7 +172,7 @@ | |||
164 | fsl,cpm-command = <0x4a00000>; | 172 | fsl,cpm-command = <0x4a00000>; |
165 | }; | 173 | }; |
166 | 174 | ||
167 | ethernet@11320 { | 175 | enet0: ethernet@11320 { |
168 | device_type = "network"; | 176 | device_type = "network"; |
169 | compatible = "fsl,mpc8280-fcc-enet", | 177 | compatible = "fsl,mpc8280-fcc-enet", |
170 | "fsl,cpm2-fcc-enet"; | 178 | "fsl,cpm2-fcc-enet"; |
@@ -176,7 +184,7 @@ | |||
176 | fsl,cpm-command = <0x16200300>; | 184 | fsl,cpm-command = <0x16200300>; |
177 | }; | 185 | }; |
178 | 186 | ||
179 | ethernet@11340 { | 187 | enet1: ethernet@11340 { |
180 | device_type = "network"; | 188 | device_type = "network"; |
181 | compatible = "fsl,mpc8280-fcc-enet", | 189 | compatible = "fsl,mpc8280-fcc-enet", |
182 | "fsl,cpm2-fcc-enet"; | 190 | "fsl,cpm2-fcc-enet"; |
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts index 9c5079fec4f..b1f1416ac99 100644 --- a/arch/powerpc/boot/dts/sbc8548.dts +++ b/arch/powerpc/boot/dts/sbc8548.dts | |||
@@ -156,14 +156,14 @@ | |||
156 | compatible = "simple-bus"; | 156 | compatible = "simple-bus"; |
157 | 157 | ||
158 | memory-controller@2000 { | 158 | memory-controller@2000 { |
159 | compatible = "fsl,8548-memory-controller"; | 159 | compatible = "fsl,mpc8548-memory-controller"; |
160 | reg = <0x2000 0x1000>; | 160 | reg = <0x2000 0x1000>; |
161 | interrupt-parent = <&mpic>; | 161 | interrupt-parent = <&mpic>; |
162 | interrupts = <0x12 0x2>; | 162 | interrupts = <0x12 0x2>; |
163 | }; | 163 | }; |
164 | 164 | ||
165 | L2: l2-cache-controller@20000 { | 165 | L2: l2-cache-controller@20000 { |
166 | compatible = "fsl,8548-l2-cache-controller"; | 166 | compatible = "fsl,mpc8548-l2-cache-controller"; |
167 | reg = <0x20000 0x1000>; | 167 | reg = <0x20000 0x1000>; |
168 | cache-line-size = <0x20>; // 32 bytes | 168 | cache-line-size = <0x20>; // 32 bytes |
169 | cache-size = <0x80000>; // L2, 512K | 169 | cache-size = <0x80000>; // L2, 512K |
diff --git a/arch/powerpc/boot/dts/sbc8560.dts b/arch/powerpc/boot/dts/sbc8560.dts index b772405a9a0..c4564b81e47 100644 --- a/arch/powerpc/boot/dts/sbc8560.dts +++ b/arch/powerpc/boot/dts/sbc8560.dts | |||
@@ -61,14 +61,14 @@ | |||
61 | clock-frequency = <0>; | 61 | clock-frequency = <0>; |
62 | 62 | ||
63 | memory-controller@2000 { | 63 | memory-controller@2000 { |
64 | compatible = "fsl,8560-memory-controller"; | 64 | compatible = "fsl,mpc8560-memory-controller"; |
65 | reg = <0x2000 0x1000>; | 65 | reg = <0x2000 0x1000>; |
66 | interrupt-parent = <&mpic>; | 66 | interrupt-parent = <&mpic>; |
67 | interrupts = <0x12 0x2>; | 67 | interrupts = <0x12 0x2>; |
68 | }; | 68 | }; |
69 | 69 | ||
70 | L2: l2-cache-controller@20000 { | 70 | L2: l2-cache-controller@20000 { |
71 | compatible = "fsl,8560-l2-cache-controller"; | 71 | compatible = "fsl,mpc8560-l2-cache-controller"; |
72 | reg = <0x20000 0x1000>; | 72 | reg = <0x20000 0x1000>; |
73 | cache-line-size = <0x20>; // 32 bytes | 73 | cache-line-size = <0x20>; // 32 bytes |
74 | cache-size = <0x40000>; // L2, 256K | 74 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/boot/dts/socrates.dts b/arch/powerpc/boot/dts/socrates.dts index b8d0fc6f004..04c398862e0 100644 --- a/arch/powerpc/boot/dts/socrates.dts +++ b/arch/powerpc/boot/dts/socrates.dts | |||
@@ -52,6 +52,7 @@ | |||
52 | soc8544@e0000000 { | 52 | soc8544@e0000000 { |
53 | #address-cells = <1>; | 53 | #address-cells = <1>; |
54 | #size-cells = <1>; | 54 | #size-cells = <1>; |
55 | device_type = "soc"; | ||
55 | 56 | ||
56 | ranges = <0x00000000 0xe0000000 0x00100000>; | 57 | ranges = <0x00000000 0xe0000000 0x00100000>; |
57 | reg = <0xe0000000 0x00001000>; // CCSRBAR 1M | 58 | reg = <0xe0000000 0x00001000>; // CCSRBAR 1M |
diff --git a/arch/powerpc/boot/dts/stx_gp3_8560.dts b/arch/powerpc/boot/dts/stx_gp3_8560.dts index 8b173957fb5..ea6b15152de 100644 --- a/arch/powerpc/boot/dts/stx_gp3_8560.dts +++ b/arch/powerpc/boot/dts/stx_gp3_8560.dts | |||
@@ -57,14 +57,14 @@ | |||
57 | compatible = "fsl,mpc8560-immr", "simple-bus"; | 57 | compatible = "fsl,mpc8560-immr", "simple-bus"; |
58 | 58 | ||
59 | memory-controller@2000 { | 59 | memory-controller@2000 { |
60 | compatible = "fsl,8540-memory-controller"; | 60 | compatible = "fsl,mpc8540-memory-controller"; |
61 | reg = <0x2000 0x1000>; | 61 | reg = <0x2000 0x1000>; |
62 | interrupt-parent = <&mpic>; | 62 | interrupt-parent = <&mpic>; |
63 | interrupts = <18 2>; | 63 | interrupts = <18 2>; |
64 | }; | 64 | }; |
65 | 65 | ||
66 | L2: l2-cache-controller@20000 { | 66 | L2: l2-cache-controller@20000 { |
67 | compatible = "fsl,8540-l2-cache-controller"; | 67 | compatible = "fsl,mpc8540-l2-cache-controller"; |
68 | reg = <0x20000 0x1000>; | 68 | reg = <0x20000 0x1000>; |
69 | cache-line-size = <32>; | 69 | cache-line-size = <32>; |
70 | cache-size = <0x40000>; // L2, 256K | 70 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts index ac9413a29f9..231bae75663 100644 --- a/arch/powerpc/boot/dts/tqm8540.dts +++ b/arch/powerpc/boot/dts/tqm8540.dts | |||
@@ -59,14 +59,14 @@ | |||
59 | compatible = "fsl,mpc8540-immr", "simple-bus"; | 59 | compatible = "fsl,mpc8540-immr", "simple-bus"; |
60 | 60 | ||
61 | memory-controller@2000 { | 61 | memory-controller@2000 { |
62 | compatible = "fsl,8540-memory-controller"; | 62 | compatible = "fsl,mpc8540-memory-controller"; |
63 | reg = <0x2000 0x1000>; | 63 | reg = <0x2000 0x1000>; |
64 | interrupt-parent = <&mpic>; | 64 | interrupt-parent = <&mpic>; |
65 | interrupts = <18 2>; | 65 | interrupts = <18 2>; |
66 | }; | 66 | }; |
67 | 67 | ||
68 | L2: l2-cache-controller@20000 { | 68 | L2: l2-cache-controller@20000 { |
69 | compatible = "fsl,8540-l2-cache-controller"; | 69 | compatible = "fsl,mpc8540-l2-cache-controller"; |
70 | reg = <0x20000 0x1000>; | 70 | reg = <0x20000 0x1000>; |
71 | cache-line-size = <32>; | 71 | cache-line-size = <32>; |
72 | cache-size = <0x40000>; // L2, 256K | 72 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts index c71bb5dd5e5..4356a1f0829 100644 --- a/arch/powerpc/boot/dts/tqm8541.dts +++ b/arch/powerpc/boot/dts/tqm8541.dts | |||
@@ -58,14 +58,14 @@ | |||
58 | compatible = "fsl,mpc8541-immr", "simple-bus"; | 58 | compatible = "fsl,mpc8541-immr", "simple-bus"; |
59 | 59 | ||
60 | memory-controller@2000 { | 60 | memory-controller@2000 { |
61 | compatible = "fsl,8540-memory-controller"; | 61 | compatible = "fsl,mpc8540-memory-controller"; |
62 | reg = <0x2000 0x1000>; | 62 | reg = <0x2000 0x1000>; |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <18 2>; | 64 | interrupts = <18 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | L2: l2-cache-controller@20000 { | 67 | L2: l2-cache-controller@20000 { |
68 | compatible = "fsl,8540-l2-cache-controller"; | 68 | compatible = "fsl,mpc8540-l2-cache-controller"; |
69 | reg = <0x20000 0x1000>; | 69 | reg = <0x20000 0x1000>; |
70 | cache-line-size = <32>; | 70 | cache-line-size = <32>; |
71 | cache-size = <0x40000>; // L2, 256K | 71 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts index a133ded6ddd..06d366ebbda 100644 --- a/arch/powerpc/boot/dts/tqm8555.dts +++ b/arch/powerpc/boot/dts/tqm8555.dts | |||
@@ -58,14 +58,14 @@ | |||
58 | compatible = "fsl,mpc8555-immr", "simple-bus"; | 58 | compatible = "fsl,mpc8555-immr", "simple-bus"; |
59 | 59 | ||
60 | memory-controller@2000 { | 60 | memory-controller@2000 { |
61 | compatible = "fsl,8540-memory-controller"; | 61 | compatible = "fsl,mpc8540-memory-controller"; |
62 | reg = <0x2000 0x1000>; | 62 | reg = <0x2000 0x1000>; |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <18 2>; | 64 | interrupts = <18 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | L2: l2-cache-controller@20000 { | 67 | L2: l2-cache-controller@20000 { |
68 | compatible = "fsl,8540-l2-cache-controller"; | 68 | compatible = "fsl,mpc8540-l2-cache-controller"; |
69 | reg = <0x20000 0x1000>; | 69 | reg = <0x20000 0x1000>; |
70 | cache-line-size = <32>; | 70 | cache-line-size = <32>; |
71 | cache-size = <0x40000>; // L2, 256K | 71 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/boot/dts/tqm8560.dts b/arch/powerpc/boot/dts/tqm8560.dts index 649e2e57626..feff915e049 100644 --- a/arch/powerpc/boot/dts/tqm8560.dts +++ b/arch/powerpc/boot/dts/tqm8560.dts | |||
@@ -60,14 +60,14 @@ | |||
60 | compatible = "fsl,mpc8560-immr", "simple-bus"; | 60 | compatible = "fsl,mpc8560-immr", "simple-bus"; |
61 | 61 | ||
62 | memory-controller@2000 { | 62 | memory-controller@2000 { |
63 | compatible = "fsl,8540-memory-controller"; | 63 | compatible = "fsl,mpc8540-memory-controller"; |
64 | reg = <0x2000 0x1000>; | 64 | reg = <0x2000 0x1000>; |
65 | interrupt-parent = <&mpic>; | 65 | interrupt-parent = <&mpic>; |
66 | interrupts = <18 2>; | 66 | interrupts = <18 2>; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | L2: l2-cache-controller@20000 { | 69 | L2: l2-cache-controller@20000 { |
70 | compatible = "fsl,8540-l2-cache-controller"; | 70 | compatible = "fsl,mpc8540-l2-cache-controller"; |
71 | reg = <0x20000 0x1000>; | 71 | reg = <0x20000 0x1000>; |
72 | cache-line-size = <32>; | 72 | cache-line-size = <32>; |
73 | cache-size = <0x40000>; // L2, 256K | 73 | cache-size = <0x40000>; // L2, 256K |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 61b10084971..f1889abb89b 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -95,7 +95,7 @@ CONFIG_CGROUP_CPUACCT=y | |||
95 | CONFIG_SYSFS_DEPRECATED=y | 95 | CONFIG_SYSFS_DEPRECATED=y |
96 | CONFIG_SYSFS_DEPRECATED_V2=y | 96 | CONFIG_SYSFS_DEPRECATED_V2=y |
97 | CONFIG_PROC_PID_CPUSET=y | 97 | CONFIG_PROC_PID_CPUSET=y |
98 | # CONFIG_RELAY is not set | 98 | CONFIG_RELAY=y |
99 | CONFIG_NAMESPACES=y | 99 | CONFIG_NAMESPACES=y |
100 | # CONFIG_UTS_NS is not set | 100 | # CONFIG_UTS_NS is not set |
101 | # CONFIG_IPC_NS is not set | 101 | # CONFIG_IPC_NS is not set |
diff --git a/arch/powerpc/include/asm/lppaca.h b/arch/powerpc/include/asm/lppaca.h index 68235f7e4a8..d2a65e8ca6a 100644 --- a/arch/powerpc/include/asm/lppaca.h +++ b/arch/powerpc/include/asm/lppaca.h | |||
@@ -125,7 +125,7 @@ struct lppaca { | |||
125 | // NOTE: This value will ALWAYS be zero for dedicated processors and | 125 | // NOTE: This value will ALWAYS be zero for dedicated processors and |
126 | // will NEVER be zero for shared processors (ie, initialized to a 1). | 126 | // will NEVER be zero for shared processors (ie, initialized to a 1). |
127 | volatile u32 yield_count; // PLIC increments each dispatchx00-x03 | 127 | volatile u32 yield_count; // PLIC increments each dispatchx00-x03 |
128 | u32 reserved6; | 128 | volatile u32 dispersion_count; // dispatch changed phys cpu x04-x07 |
129 | volatile u64 cmo_faults; // CMO page fault count x08-x0F | 129 | volatile u64 cmo_faults; // CMO page fault count x08-x0F |
130 | volatile u64 cmo_fault_time; // CMO page fault time x10-x17 | 130 | volatile u64 cmo_fault_time; // CMO page fault time x10-x17 |
131 | u8 reserved7[104]; // Reserved x18-x7F | 131 | u8 reserved7[104]; // Reserved x18-x7F |
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h index c2ccca53b99..a002682f3a6 100644 --- a/arch/powerpc/include/asm/mpic.h +++ b/arch/powerpc/include/asm/mpic.h | |||
@@ -22,6 +22,14 @@ | |||
22 | #define MPIC_GREG_FEATURE_1 0x00010 | 22 | #define MPIC_GREG_FEATURE_1 0x00010 |
23 | #define MPIC_GREG_GLOBAL_CONF_0 0x00020 | 23 | #define MPIC_GREG_GLOBAL_CONF_0 0x00020 |
24 | #define MPIC_GREG_GCONF_RESET 0x80000000 | 24 | #define MPIC_GREG_GCONF_RESET 0x80000000 |
25 | /* On the FSL mpic implementations the Mode field is expand to be | ||
26 | * 2 bits wide: | ||
27 | * 0b00 = pass through (interrupts routed to IRQ0) | ||
28 | * 0b01 = Mixed mode | ||
29 | * 0b10 = reserved | ||
30 | * 0b11 = External proxy / coreint | ||
31 | */ | ||
32 | #define MPIC_GREG_GCONF_COREINT 0x60000000 | ||
25 | #define MPIC_GREG_GCONF_8259_PTHROU_DIS 0x20000000 | 33 | #define MPIC_GREG_GCONF_8259_PTHROU_DIS 0x20000000 |
26 | #define MPIC_GREG_GCONF_NO_BIAS 0x10000000 | 34 | #define MPIC_GREG_GCONF_NO_BIAS 0x10000000 |
27 | #define MPIC_GREG_GCONF_BASE_MASK 0x000fffff | 35 | #define MPIC_GREG_GCONF_BASE_MASK 0x000fffff |
@@ -357,6 +365,8 @@ struct mpic | |||
357 | #define MPIC_BROKEN_FRR_NIRQS 0x00000800 | 365 | #define MPIC_BROKEN_FRR_NIRQS 0x00000800 |
358 | /* Destination only supports a single CPU at a time */ | 366 | /* Destination only supports a single CPU at a time */ |
359 | #define MPIC_SINGLE_DEST_CPU 0x00001000 | 367 | #define MPIC_SINGLE_DEST_CPU 0x00001000 |
368 | /* Enable CoreInt delivery of interrupts */ | ||
369 | #define MPIC_ENABLE_COREINT 0x00002000 | ||
360 | 370 | ||
361 | /* MPIC HW modification ID */ | 371 | /* MPIC HW modification ID */ |
362 | #define MPIC_REGSET_MASK 0xf0000000 | 372 | #define MPIC_REGSET_MASK 0xf0000000 |
@@ -470,6 +480,8 @@ extern void mpic_end_irq(unsigned int irq); | |||
470 | extern unsigned int mpic_get_one_irq(struct mpic *mpic); | 480 | extern unsigned int mpic_get_one_irq(struct mpic *mpic); |
471 | /* This one gets from the primary mpic */ | 481 | /* This one gets from the primary mpic */ |
472 | extern unsigned int mpic_get_irq(void); | 482 | extern unsigned int mpic_get_irq(void); |
483 | /* This one gets from the primary mpic via CoreInt*/ | ||
484 | extern unsigned int mpic_get_coreint_irq(void); | ||
473 | /* Fetch Machine Check interrupt from primary mpic */ | 485 | /* Fetch Machine Check interrupt from primary mpic */ |
474 | extern unsigned int mpic_get_mcirq(void); | 486 | extern unsigned int mpic_get_mcirq(void); |
475 | 487 | ||
diff --git a/arch/powerpc/include/asm/ps3fb.h b/arch/powerpc/include/asm/ps3fb.h index 90dbefb8cfc..e7233a84968 100644 --- a/arch/powerpc/include/asm/ps3fb.h +++ b/arch/powerpc/include/asm/ps3fb.h | |||
@@ -21,7 +21,6 @@ | |||
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/ioctl.h> | 23 | #include <linux/ioctl.h> |
24 | #include <linux/types.h> | ||
25 | 24 | ||
26 | /* ioctl */ | 25 | /* ioctl */ |
27 | #define PS3FB_IOCTL_SETMODE _IOW('r', 1, int) /* set video mode */ | 26 | #define PS3FB_IOCTL_SETMODE _IOW('r', 1, int) /* set video mode */ |
diff --git a/arch/powerpc/include/asm/pte-common.h b/arch/powerpc/include/asm/pte-common.h index d9740e88680..a7e210b6b48 100644 --- a/arch/powerpc/include/asm/pte-common.h +++ b/arch/powerpc/include/asm/pte-common.h | |||
@@ -151,9 +151,11 @@ extern unsigned long bad_call_to_PMD_PAGE_SIZE(void); | |||
151 | _PAGE_NO_CACHE) | 151 | _PAGE_NO_CACHE) |
152 | #define PAGE_KERNEL_NCG __pgprot(_PAGE_BASE_NC | _PAGE_KERNEL_RW | \ | 152 | #define PAGE_KERNEL_NCG __pgprot(_PAGE_BASE_NC | _PAGE_KERNEL_RW | \ |
153 | _PAGE_NO_CACHE | _PAGE_GUARDED) | 153 | _PAGE_NO_CACHE | _PAGE_GUARDED) |
154 | #define PAGE_KERNEL_X __pgprot(_PAGE_BASE | _PAGE_KERNEL_RW | _PAGE_EXEC) | 154 | #define PAGE_KERNEL_X __pgprot(_PAGE_BASE | _PAGE_KERNEL_RW | _PAGE_EXEC | \ |
155 | _PAGE_HWEXEC) | ||
155 | #define PAGE_KERNEL_RO __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO) | 156 | #define PAGE_KERNEL_RO __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO) |
156 | #define PAGE_KERNEL_ROX __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO | _PAGE_EXEC) | 157 | #define PAGE_KERNEL_ROX __pgprot(_PAGE_BASE | _PAGE_KERNEL_RO | _PAGE_EXEC | \ |
158 | _PAGE_HWEXEC) | ||
157 | 159 | ||
158 | /* Protection used for kernel text. We want the debuggers to be able to | 160 | /* Protection used for kernel text. We want the debuggers to be able to |
159 | * set breakpoints anywhere, so don't write protect the kernel text | 161 | * set breakpoints anywhere, so don't write protect the kernel text |
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h index c9ff1ec9747..e8018d540e8 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h | |||
@@ -143,6 +143,36 @@ | |||
143 | #define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */ | 143 | #define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */ |
144 | #define FPSCR_RN 0x00000003 /* FPU rounding control */ | 144 | #define FPSCR_RN 0x00000003 /* FPU rounding control */ |
145 | 145 | ||
146 | /* Bit definitions for SPEFSCR. */ | ||
147 | #define SPEFSCR_SOVH 0x80000000 /* Summary integer overflow high */ | ||
148 | #define SPEFSCR_OVH 0x40000000 /* Integer overflow high */ | ||
149 | #define SPEFSCR_FGH 0x20000000 /* Embedded FP guard bit high */ | ||
150 | #define SPEFSCR_FXH 0x10000000 /* Embedded FP sticky bit high */ | ||
151 | #define SPEFSCR_FINVH 0x08000000 /* Embedded FP invalid operation high */ | ||
152 | #define SPEFSCR_FDBZH 0x04000000 /* Embedded FP div by zero high */ | ||
153 | #define SPEFSCR_FUNFH 0x02000000 /* Embedded FP underflow high */ | ||
154 | #define SPEFSCR_FOVFH 0x01000000 /* Embedded FP overflow high */ | ||
155 | #define SPEFSCR_FINXS 0x00200000 /* Embedded FP inexact sticky */ | ||
156 | #define SPEFSCR_FINVS 0x00100000 /* Embedded FP invalid op. sticky */ | ||
157 | #define SPEFSCR_FDBZS 0x00080000 /* Embedded FP div by zero sticky */ | ||
158 | #define SPEFSCR_FUNFS 0x00040000 /* Embedded FP underflow sticky */ | ||
159 | #define SPEFSCR_FOVFS 0x00020000 /* Embedded FP overflow sticky */ | ||
160 | #define SPEFSCR_MODE 0x00010000 /* Embedded FP mode */ | ||
161 | #define SPEFSCR_SOV 0x00008000 /* Integer summary overflow */ | ||
162 | #define SPEFSCR_OV 0x00004000 /* Integer overflow */ | ||
163 | #define SPEFSCR_FG 0x00002000 /* Embedded FP guard bit */ | ||
164 | #define SPEFSCR_FX 0x00001000 /* Embedded FP sticky bit */ | ||
165 | #define SPEFSCR_FINV 0x00000800 /* Embedded FP invalid operation */ | ||
166 | #define SPEFSCR_FDBZ 0x00000400 /* Embedded FP div by zero */ | ||
167 | #define SPEFSCR_FUNF 0x00000200 /* Embedded FP underflow */ | ||
168 | #define SPEFSCR_FOVF 0x00000100 /* Embedded FP overflow */ | ||
169 | #define SPEFSCR_FINXE 0x00000040 /* Embedded FP inexact enable */ | ||
170 | #define SPEFSCR_FINVE 0x00000020 /* Embedded FP invalid op. enable */ | ||
171 | #define SPEFSCR_FDBZE 0x00000010 /* Embedded FP div by zero enable */ | ||
172 | #define SPEFSCR_FUNFE 0x00000008 /* Embedded FP underflow enable */ | ||
173 | #define SPEFSCR_FOVFE 0x00000004 /* Embedded FP overflow enable */ | ||
174 | #define SPEFSCR_FRMC 0x00000003 /* Embedded FP rounding mode control */ | ||
175 | |||
146 | /* Special Purpose Registers (SPRNs)*/ | 176 | /* Special Purpose Registers (SPRNs)*/ |
147 | #define SPRN_CTR 0x009 /* Count Register */ | 177 | #define SPRN_CTR 0x009 /* Count Register */ |
148 | #define SPRN_DSCR 0x11 | 178 | #define SPRN_DSCR 0x11 |
diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h index a56f4d61aa7..601ddbc4600 100644 --- a/arch/powerpc/include/asm/reg_booke.h +++ b/arch/powerpc/include/asm/reg_booke.h | |||
@@ -423,36 +423,6 @@ | |||
423 | #define SGR_NORMAL 0 /* Speculative fetching allowed. */ | 423 | #define SGR_NORMAL 0 /* Speculative fetching allowed. */ |
424 | #define SGR_GUARDED 1 /* Speculative fetching disallowed. */ | 424 | #define SGR_GUARDED 1 /* Speculative fetching disallowed. */ |
425 | 425 | ||
426 | /* Bit definitions for SPEFSCR. */ | ||
427 | #define SPEFSCR_SOVH 0x80000000 /* Summary integer overflow high */ | ||
428 | #define SPEFSCR_OVH 0x40000000 /* Integer overflow high */ | ||
429 | #define SPEFSCR_FGH 0x20000000 /* Embedded FP guard bit high */ | ||
430 | #define SPEFSCR_FXH 0x10000000 /* Embedded FP sticky bit high */ | ||
431 | #define SPEFSCR_FINVH 0x08000000 /* Embedded FP invalid operation high */ | ||
432 | #define SPEFSCR_FDBZH 0x04000000 /* Embedded FP div by zero high */ | ||
433 | #define SPEFSCR_FUNFH 0x02000000 /* Embedded FP underflow high */ | ||
434 | #define SPEFSCR_FOVFH 0x01000000 /* Embedded FP overflow high */ | ||
435 | #define SPEFSCR_FINXS 0x00200000 /* Embedded FP inexact sticky */ | ||
436 | #define SPEFSCR_FINVS 0x00100000 /* Embedded FP invalid op. sticky */ | ||
437 | #define SPEFSCR_FDBZS 0x00080000 /* Embedded FP div by zero sticky */ | ||
438 | #define SPEFSCR_FUNFS 0x00040000 /* Embedded FP underflow sticky */ | ||
439 | #define SPEFSCR_FOVFS 0x00020000 /* Embedded FP overflow sticky */ | ||
440 | #define SPEFSCR_MODE 0x00010000 /* Embedded FP mode */ | ||
441 | #define SPEFSCR_SOV 0x00008000 /* Integer summary overflow */ | ||
442 | #define SPEFSCR_OV 0x00004000 /* Integer overflow */ | ||
443 | #define SPEFSCR_FG 0x00002000 /* Embedded FP guard bit */ | ||
444 | #define SPEFSCR_FX 0x00001000 /* Embedded FP sticky bit */ | ||
445 | #define SPEFSCR_FINV 0x00000800 /* Embedded FP invalid operation */ | ||
446 | #define SPEFSCR_FDBZ 0x00000400 /* Embedded FP div by zero */ | ||
447 | #define SPEFSCR_FUNF 0x00000200 /* Embedded FP underflow */ | ||
448 | #define SPEFSCR_FOVF 0x00000100 /* Embedded FP overflow */ | ||
449 | #define SPEFSCR_FINXE 0x00000040 /* Embedded FP inexact enable */ | ||
450 | #define SPEFSCR_FINVE 0x00000020 /* Embedded FP invalid op. enable */ | ||
451 | #define SPEFSCR_FDBZE 0x00000010 /* Embedded FP div by zero enable */ | ||
452 | #define SPEFSCR_FUNFE 0x00000008 /* Embedded FP underflow enable */ | ||
453 | #define SPEFSCR_FOVFE 0x00000004 /* Embedded FP overflow enable */ | ||
454 | #define SPEFSCR_FRMC 0x00000003 /* Embedded FP rounding mode control */ | ||
455 | |||
456 | /* | 426 | /* |
457 | * The IBM-403 is an even more odd special case, as it is much | 427 | * The IBM-403 is an even more odd special case, as it is much |
458 | * older than the IBM-405 series. We put these down here incase someone | 428 | * older than the IBM-405 series. We put these down here incase someone |
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h index 0aa0315fb7e..01c12339b30 100644 --- a/arch/powerpc/include/asm/rtas.h +++ b/arch/powerpc/include/asm/rtas.h | |||
@@ -68,7 +68,8 @@ struct rtas_t { | |||
68 | #define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */ | 68 | #define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */ |
69 | #define RTAS_POWERMGM_EVENTS 0x20000000 /* set bit 2 */ | 69 | #define RTAS_POWERMGM_EVENTS 0x20000000 /* set bit 2 */ |
70 | #define RTAS_HOTPLUG_EVENTS 0x10000000 /* set bit 3 */ | 70 | #define RTAS_HOTPLUG_EVENTS 0x10000000 /* set bit 3 */ |
71 | #define RTAS_EVENT_SCAN_ALL_EVENTS 0xf0000000 | 71 | #define RTAS_IO_EVENTS 0x08000000 /* set bit 4 */ |
72 | #define RTAS_EVENT_SCAN_ALL_EVENTS 0xffffffff | ||
72 | 73 | ||
73 | /* RTAS event severity */ | 74 | /* RTAS event severity */ |
74 | #define RTAS_SEVERITY_FATAL 0x5 | 75 | #define RTAS_SEVERITY_FATAL 0x5 |
diff --git a/arch/powerpc/include/asm/sfp-machine.h b/arch/powerpc/include/asm/sfp-machine.h index 3d9f831c3c5..3a7a67a0d00 100644 --- a/arch/powerpc/include/asm/sfp-machine.h +++ b/arch/powerpc/include/asm/sfp-machine.h | |||
@@ -29,9 +29,9 @@ | |||
29 | 29 | ||
30 | /* basic word size definitions */ | 30 | /* basic word size definitions */ |
31 | #define _FP_W_TYPE_SIZE 32 | 31 | #define _FP_W_TYPE_SIZE 32 |
32 | #define _FP_W_TYPE unsigned long | 32 | #define _FP_W_TYPE unsigned int |
33 | #define _FP_WS_TYPE signed long | 33 | #define _FP_WS_TYPE signed int |
34 | #define _FP_I_TYPE long | 34 | #define _FP_I_TYPE int |
35 | 35 | ||
36 | #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) | 36 | #define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) |
37 | #define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) | 37 | #define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) |
diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h index fe166491e9d..d98a30dfd41 100644 --- a/arch/powerpc/include/asm/systbl.h +++ b/arch/powerpc/include/asm/systbl.h | |||
@@ -322,3 +322,6 @@ SYSCALL_SPU(epoll_create1) | |||
322 | SYSCALL_SPU(dup3) | 322 | SYSCALL_SPU(dup3) |
323 | SYSCALL_SPU(pipe2) | 323 | SYSCALL_SPU(pipe2) |
324 | SYSCALL(inotify_init1) | 324 | SYSCALL(inotify_init1) |
325 | SYSCALL(ni_syscall) | ||
326 | COMPAT_SYS_SPU(preadv) | ||
327 | COMPAT_SYS_SPU(pwritev) | ||
diff --git a/arch/powerpc/include/asm/unistd.h b/arch/powerpc/include/asm/unistd.h index e07d0c76ed7..3f06f8ec81c 100644 --- a/arch/powerpc/include/asm/unistd.h +++ b/arch/powerpc/include/asm/unistd.h | |||
@@ -341,10 +341,12 @@ | |||
341 | #define __NR_dup3 316 | 341 | #define __NR_dup3 316 |
342 | #define __NR_pipe2 317 | 342 | #define __NR_pipe2 317 |
343 | #define __NR_inotify_init1 318 | 343 | #define __NR_inotify_init1 318 |
344 | #define __NR_preadv 320 | ||
345 | #define __NR_pwritev 321 | ||
344 | 346 | ||
345 | #ifdef __KERNEL__ | 347 | #ifdef __KERNEL__ |
346 | 348 | ||
347 | #define __NR_syscalls 319 | 349 | #define __NR_syscalls 322 |
348 | 350 | ||
349 | #define __NR__exit __NR_exit | 351 | #define __NR__exit __NR_exit |
350 | #define NR_syscalls __NR_syscalls | 352 | #define NR_syscalls __NR_syscalls |
diff --git a/arch/powerpc/kernel/fpu.S b/arch/powerpc/kernel/fpu.S index a088c064ae4..2436df33c6f 100644 --- a/arch/powerpc/kernel/fpu.S +++ b/arch/powerpc/kernel/fpu.S | |||
@@ -145,6 +145,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX) | |||
145 | beq 1f | 145 | beq 1f |
146 | PPC_LL r4,_MSR-STACK_FRAME_OVERHEAD(r5) | 146 | PPC_LL r4,_MSR-STACK_FRAME_OVERHEAD(r5) |
147 | li r3,MSR_FP|MSR_FE0|MSR_FE1 | 147 | li r3,MSR_FP|MSR_FE0|MSR_FE1 |
148 | #ifdef CONFIG_VSX | ||
149 | BEGIN_FTR_SECTION | ||
150 | oris r3,r3,MSR_VSX@h | ||
151 | END_FTR_SECTION_IFSET(CPU_FTR_VSX) | ||
152 | #endif | ||
148 | andc r4,r4,r3 /* disable FP for previous task */ | 153 | andc r4,r4,r3 /* disable FP for previous task */ |
149 | PPC_STL r4,_MSR-STACK_FRAME_OVERHEAD(r5) | 154 | PPC_STL r4,_MSR-STACK_FRAME_OVERHEAD(r5) |
150 | 1: | 155 | 1: |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 5455943f16a..70e2a736be1 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
@@ -293,7 +293,7 @@ __ftrace_make_nop(struct module *mod, | |||
293 | if (tramp & 0x8000) | 293 | if (tramp & 0x8000) |
294 | tramp -= 0x10000; | 294 | tramp -= 0x10000; |
295 | 295 | ||
296 | pr_debug(" %x ", tramp); | 296 | pr_debug(" %lx ", tramp); |
297 | 297 | ||
298 | if (tramp != addr) { | 298 | if (tramp != addr) { |
299 | printk(KERN_ERR | 299 | printk(KERN_ERR |
@@ -564,7 +564,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
564 | if (unlikely(atomic_read(¤t->tracing_graph_pause))) | 564 | if (unlikely(atomic_read(¤t->tracing_graph_pause))) |
565 | return; | 565 | return; |
566 | 566 | ||
567 | #if CONFIG_PPC64 | 567 | #ifdef CONFIG_PPC64 |
568 | /* non core kernel code needs to save and restore the TOC */ | 568 | /* non core kernel code needs to save and restore the TOC */ |
569 | if (REGION_ID(self_addr) != KERNEL_REGION_ID) | 569 | if (REGION_ID(self_addr) != KERNEL_REGION_ID) |
570 | return_hooker = (unsigned long)&mod_return_to_handler; | 570 | return_hooker = (unsigned long)&mod_return_to_handler; |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 5576147e57b..8c1a4966867 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -672,11 +672,13 @@ unsigned int irq_create_mapping(struct irq_host *host, | |||
672 | return NO_IRQ; | 672 | return NO_IRQ; |
673 | } | 673 | } |
674 | } | 674 | } |
675 | pr_debug("irq: -> obtained virq %d\n", virq); | ||
676 | 675 | ||
677 | if (irq_setup_virq(host, virq, hwirq)) | 676 | if (irq_setup_virq(host, virq, hwirq)) |
678 | return NO_IRQ; | 677 | return NO_IRQ; |
679 | 678 | ||
679 | printk(KERN_DEBUG "irq: irq %lu on host %s mapped to virtual irq %u\n", | ||
680 | hwirq, host->of_node ? host->of_node->full_name : "null", virq); | ||
681 | |||
680 | return virq; | 682 | return virq; |
681 | } | 683 | } |
682 | EXPORT_SYMBOL_GPL(irq_create_mapping); | 684 | EXPORT_SYMBOL_GPL(irq_create_mapping); |
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index 182e0f642f3..78b3f7840ad 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -434,6 +434,21 @@ static void pseries_cmo_data(struct seq_file *m) | |||
434 | seq_printf(m, "cmo_page_size=%lu\n", cmo_get_page_size()); | 434 | seq_printf(m, "cmo_page_size=%lu\n", cmo_get_page_size()); |
435 | } | 435 | } |
436 | 436 | ||
437 | static void splpar_dispatch_data(struct seq_file *m) | ||
438 | { | ||
439 | int cpu; | ||
440 | unsigned long dispatches = 0; | ||
441 | unsigned long dispatch_dispersions = 0; | ||
442 | |||
443 | for_each_possible_cpu(cpu) { | ||
444 | dispatches += lppaca[cpu].yield_count; | ||
445 | dispatch_dispersions += lppaca[cpu].dispersion_count; | ||
446 | } | ||
447 | |||
448 | seq_printf(m, "dispatches=%lu\n", dispatches); | ||
449 | seq_printf(m, "dispatch_dispersions=%lu\n", dispatch_dispersions); | ||
450 | } | ||
451 | |||
437 | static int pseries_lparcfg_data(struct seq_file *m, void *v) | 452 | static int pseries_lparcfg_data(struct seq_file *m, void *v) |
438 | { | 453 | { |
439 | int partition_potential_processors; | 454 | int partition_potential_processors; |
@@ -460,6 +475,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) | |||
460 | parse_ppp_data(m); | 475 | parse_ppp_data(m); |
461 | parse_mpp_data(m); | 476 | parse_mpp_data(m); |
462 | pseries_cmo_data(m); | 477 | pseries_cmo_data(m); |
478 | splpar_dispatch_data(m); | ||
463 | 479 | ||
464 | seq_printf(m, "purr=%ld\n", get_purr()); | 480 | seq_printf(m, "purr=%ld\n", get_purr()); |
465 | } else { /* non SPLPAR case */ | 481 | } else { /* non SPLPAR case */ |
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 3053fe5c62f..b9530b2395a 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S | |||
@@ -495,7 +495,15 @@ _GLOBAL(giveup_altivec) | |||
495 | stvx vr0,r4,r3 | 495 | stvx vr0,r4,r3 |
496 | beq 1f | 496 | beq 1f |
497 | ld r4,_MSR-STACK_FRAME_OVERHEAD(r5) | 497 | ld r4,_MSR-STACK_FRAME_OVERHEAD(r5) |
498 | #ifdef CONFIG_VSX | ||
499 | BEGIN_FTR_SECTION | ||
500 | lis r3,(MSR_VEC|MSR_VSX)@h | ||
501 | FTR_SECTION_ELSE | ||
502 | lis r3,MSR_VEC@h | ||
503 | ALT_FTR_SECTION_END_IFSET(CPU_FTR_VSX) | ||
504 | #else | ||
498 | lis r3,MSR_VEC@h | 505 | lis r3,MSR_VEC@h |
506 | #endif | ||
499 | andc r4,r4,r3 /* disable FP for previous task */ | 507 | andc r4,r4,r3 /* disable FP for previous task */ |
500 | std r4,_MSR-STACK_FRAME_OVERHEAD(r5) | 508 | std r4,_MSR-STACK_FRAME_OVERHEAD(r5) |
501 | 1: | 509 | 1: |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 2e026c0407d..2f0e64b5364 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -614,7 +614,7 @@ static unsigned char ibm_architecture_vec[] = { | |||
614 | W(0xffffffff), /* virt_base */ | 614 | W(0xffffffff), /* virt_base */ |
615 | W(0xffffffff), /* virt_size */ | 615 | W(0xffffffff), /* virt_size */ |
616 | W(0xffffffff), /* load_base */ | 616 | W(0xffffffff), /* load_base */ |
617 | W(64), /* 128MB min RMA */ | 617 | W(64), /* 64MB min RMA */ |
618 | W(0xffffffff), /* full client load */ | 618 | W(0xffffffff), /* full client load */ |
619 | 0, /* min RMA percentage of total RAM */ | 619 | 0, /* min RMA percentage of total RAM */ |
620 | 48, /* max log_2(hash table size) */ | 620 | 48, /* max log_2(hash table size) */ |
@@ -732,15 +732,17 @@ static void __init prom_send_capabilities(void) | |||
732 | root = call_prom("open", 1, 1, ADDR("/")); | 732 | root = call_prom("open", 1, 1, ADDR("/")); |
733 | if (root != 0) { | 733 | if (root != 0) { |
734 | /* try calling the ibm,client-architecture-support method */ | 734 | /* try calling the ibm,client-architecture-support method */ |
735 | prom_printf("Calling ibm,client-architecture..."); | ||
735 | if (call_prom_ret("call-method", 3, 2, &ret, | 736 | if (call_prom_ret("call-method", 3, 2, &ret, |
736 | ADDR("ibm,client-architecture-support"), | 737 | ADDR("ibm,client-architecture-support"), |
737 | root, | 738 | root, |
738 | ADDR(ibm_architecture_vec)) == 0) { | 739 | ADDR(ibm_architecture_vec)) == 0) { |
739 | /* the call exists... */ | 740 | /* the call exists... */ |
740 | if (ret) | 741 | if (ret) |
741 | prom_printf("WARNING: ibm,client-architecture" | 742 | prom_printf("\nWARNING: ibm,client-architecture" |
742 | "-support call FAILED!\n"); | 743 | "-support call FAILED!\n"); |
743 | call_prom("close", 1, 0, root); | 744 | call_prom("close", 1, 0, root); |
745 | prom_printf(" done\n"); | ||
744 | return; | 746 | return; |
745 | } | 747 | } |
746 | call_prom("close", 1, 0, root); | 748 | call_prom("close", 1, 0, root); |
@@ -1083,7 +1085,7 @@ static void __init prom_instantiate_rtas(void) | |||
1083 | return; | 1085 | return; |
1084 | } | 1086 | } |
1085 | 1087 | ||
1086 | prom_printf("instantiating rtas at 0x%x ...", base); | 1088 | prom_printf("instantiating rtas at 0x%x...", base); |
1087 | 1089 | ||
1088 | if (call_prom_ret("call-method", 3, 2, &entry, | 1090 | if (call_prom_ret("call-method", 3, 2, &entry, |
1089 | ADDR("instantiate-rtas"), | 1091 | ADDR("instantiate-rtas"), |
@@ -1495,7 +1497,7 @@ static int __init prom_find_machine_type(void) | |||
1495 | return PLATFORM_GENERIC; | 1497 | return PLATFORM_GENERIC; |
1496 | x = prom_getproplen(rtas, "ibm,hypertas-functions"); | 1498 | x = prom_getproplen(rtas, "ibm,hypertas-functions"); |
1497 | if (x != PROM_ERROR) { | 1499 | if (x != PROM_ERROR) { |
1498 | prom_printf("Hypertas detected, assuming LPAR !\n"); | 1500 | prom_debug("Hypertas detected, assuming LPAR !\n"); |
1499 | return PLATFORM_PSERIES_LPAR; | 1501 | return PLATFORM_PSERIES_LPAR; |
1500 | } | 1502 | } |
1501 | return PLATFORM_PSERIES; | 1503 | return PLATFORM_PSERIES; |
@@ -1544,7 +1546,7 @@ static void __init prom_check_displays(void) | |||
1544 | }; | 1546 | }; |
1545 | const unsigned char *clut; | 1547 | const unsigned char *clut; |
1546 | 1548 | ||
1547 | prom_printf("Looking for displays\n"); | 1549 | prom_debug("Looking for displays\n"); |
1548 | for (node = 0; prom_next_node(&node); ) { | 1550 | for (node = 0; prom_next_node(&node); ) { |
1549 | memset(type, 0, sizeof(type)); | 1551 | memset(type, 0, sizeof(type)); |
1550 | prom_getprop(node, "device_type", type, sizeof(type)); | 1552 | prom_getprop(node, "device_type", type, sizeof(type)); |
@@ -1562,7 +1564,7 @@ static void __init prom_check_displays(void) | |||
1562 | if (call_prom("package-to-path", 3, 1, node, path, | 1564 | if (call_prom("package-to-path", 3, 1, node, path, |
1563 | PROM_SCRATCH_SIZE-10) == PROM_ERROR) | 1565 | PROM_SCRATCH_SIZE-10) == PROM_ERROR) |
1564 | continue; | 1566 | continue; |
1565 | prom_printf("found display : %s, opening ... ", path); | 1567 | prom_printf("found display : %s, opening... ", path); |
1566 | 1568 | ||
1567 | ih = call_prom("open", 1, 1, path); | 1569 | ih = call_prom("open", 1, 1, path); |
1568 | if (ih == 0) { | 1570 | if (ih == 0) { |
@@ -2387,7 +2389,7 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, | |||
2387 | /* | 2389 | /* |
2388 | * Now finally create the flattened device-tree | 2390 | * Now finally create the flattened device-tree |
2389 | */ | 2391 | */ |
2390 | prom_printf("copying OF device tree ...\n"); | 2392 | prom_printf("copying OF device tree...\n"); |
2391 | flatten_device_tree(); | 2393 | flatten_device_tree(); |
2392 | 2394 | ||
2393 | /* | 2395 | /* |
@@ -2402,7 +2404,7 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, | |||
2402 | * Call OF "quiesce" method to shut down pending DMA's from | 2404 | * Call OF "quiesce" method to shut down pending DMA's from |
2403 | * devices etc... | 2405 | * devices etc... |
2404 | */ | 2406 | */ |
2405 | prom_printf("Calling quiesce ...\n"); | 2407 | prom_printf("Calling quiesce...\n"); |
2406 | call_prom("quiesce", 0, 0); | 2408 | call_prom("quiesce", 0, 0); |
2407 | 2409 | ||
2408 | /* | 2410 | /* |
diff --git a/arch/powerpc/kernel/ptrace32.c b/arch/powerpc/kernel/ptrace32.c index 197d49c790a..297632cba04 100644 --- a/arch/powerpc/kernel/ptrace32.c +++ b/arch/powerpc/kernel/ptrace32.c | |||
@@ -67,7 +67,8 @@ static long compat_ptrace_old(struct task_struct *child, long request, | |||
67 | /* Macros to workout the correct index for the FPR in the thread struct */ | 67 | /* Macros to workout the correct index for the FPR in the thread struct */ |
68 | #define FPRNUMBER(i) (((i) - PT_FPR0) >> 1) | 68 | #define FPRNUMBER(i) (((i) - PT_FPR0) >> 1) |
69 | #define FPRHALF(i) (((i) - PT_FPR0) & 1) | 69 | #define FPRHALF(i) (((i) - PT_FPR0) & 1) |
70 | #define FPRINDEX(i) TS_FPRWIDTH * FPRNUMBER(i) + FPRHALF(i) | 70 | #define FPRINDEX(i) TS_FPRWIDTH * FPRNUMBER(i) * 2 + FPRHALF(i) |
71 | #define FPRINDEX_3264(i) (TS_FPRWIDTH * ((i) - PT_FPR0)) | ||
71 | 72 | ||
72 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | 73 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
73 | compat_ulong_t caddr, compat_ulong_t cdata) | 74 | compat_ulong_t caddr, compat_ulong_t cdata) |
@@ -168,8 +169,9 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | |||
168 | CHECK_FULL_REGS(child->thread.regs); | 169 | CHECK_FULL_REGS(child->thread.regs); |
169 | if (numReg >= PT_FPR0) { | 170 | if (numReg >= PT_FPR0) { |
170 | flush_fp_to_thread(child); | 171 | flush_fp_to_thread(child); |
171 | tmp = ((unsigned long int *)child->thread.fpr) | 172 | /* get 64 bit FPR */ |
172 | [FPRINDEX(numReg)]; | 173 | tmp = ((u64 *)child->thread.fpr) |
174 | [FPRINDEX_3264(numReg)]; | ||
173 | } else { /* register within PT_REGS struct */ | 175 | } else { /* register within PT_REGS struct */ |
174 | tmp = ptrace_get_reg(child, numReg); | 176 | tmp = ptrace_get_reg(child, numReg); |
175 | } | 177 | } |
@@ -262,8 +264,13 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | |||
262 | freg = (freg & 0xfffffffful) | (data << 32); | 264 | freg = (freg & 0xfffffffful) | (data << 32); |
263 | ret = ptrace_put_reg(child, numReg, freg); | 265 | ret = ptrace_put_reg(child, numReg, freg); |
264 | } else { | 266 | } else { |
267 | u64 *tmp; | ||
265 | flush_fp_to_thread(child); | 268 | flush_fp_to_thread(child); |
266 | ((unsigned int *)child->thread.regs)[index] = data; | 269 | /* get 64 bit FPR ... */ |
270 | tmp = &(((u64 *)child->thread.fpr) | ||
271 | [FPRINDEX_3264(numReg)]); | ||
272 | /* ... write the 32 bit part we want */ | ||
273 | ((u32 *)tmp)[index % 2] = data; | ||
267 | ret = 0; | 274 | ret = 0; |
268 | } | 275 | } |
269 | break; | 276 | break; |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 9774f9fed96..02fed27af7f 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/percpu.h> | 36 | #include <linux/percpu.h> |
37 | #include <linux/lmb.h> | 37 | #include <linux/lmb.h> |
38 | #include <linux/of_platform.h> | 38 | #include <linux/of_platform.h> |
39 | #include <linux/platform_device.h> | ||
40 | #include <asm/io.h> | 39 | #include <asm/io.h> |
41 | #include <asm/prom.h> | 40 | #include <asm/prom.h> |
42 | #include <asm/processor.h> | 41 | #include <asm/processor.h> |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 532e205303a..21b95670159 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -1170,6 +1170,12 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1170 | mb(); | 1170 | mb(); |
1171 | } | 1171 | } |
1172 | 1172 | ||
1173 | /* CoreInt */ | ||
1174 | if (flags & MPIC_ENABLE_COREINT) | ||
1175 | mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0), | ||
1176 | mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0)) | ||
1177 | | MPIC_GREG_GCONF_COREINT); | ||
1178 | |||
1173 | if (flags & MPIC_ENABLE_MCK) | 1179 | if (flags & MPIC_ENABLE_MCK) |
1174 | mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0), | 1180 | mpic_write(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0), |
1175 | mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0)) | 1181 | mpic_read(mpic->gregs, MPIC_INFO(GREG_GLOBAL_CONF_0)) |
@@ -1525,6 +1531,34 @@ unsigned int mpic_get_irq(void) | |||
1525 | return mpic_get_one_irq(mpic); | 1531 | return mpic_get_one_irq(mpic); |
1526 | } | 1532 | } |
1527 | 1533 | ||
1534 | unsigned int mpic_get_coreint_irq(void) | ||
1535 | { | ||
1536 | #ifdef CONFIG_BOOKE | ||
1537 | struct mpic *mpic = mpic_primary; | ||
1538 | u32 src; | ||
1539 | |||
1540 | BUG_ON(mpic == NULL); | ||
1541 | |||
1542 | src = mfspr(SPRN_EPR); | ||
1543 | |||
1544 | if (unlikely(src == mpic->spurious_vec)) { | ||
1545 | if (mpic->flags & MPIC_SPV_EOI) | ||
1546 | mpic_eoi(mpic); | ||
1547 | return NO_IRQ; | ||
1548 | } | ||
1549 | if (unlikely(mpic->protected && test_bit(src, mpic->protected))) { | ||
1550 | if (printk_ratelimit()) | ||
1551 | printk(KERN_WARNING "%s: Got protected source %d !\n", | ||
1552 | mpic->name, (int)src); | ||
1553 | return NO_IRQ; | ||
1554 | } | ||
1555 | |||
1556 | return irq_linear_revmap(mpic->irqhost, src); | ||
1557 | #else | ||
1558 | return NO_IRQ; | ||
1559 | #endif | ||
1560 | } | ||
1561 | |||
1528 | unsigned int mpic_get_mcirq(void) | 1562 | unsigned int mpic_get_mcirq(void) |
1529 | { | 1563 | { |
1530 | struct mpic *mpic = mpic_primary; | 1564 | struct mpic *mpic = mpic_primary; |