diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-10-10 13:30:08 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-10-10 13:30:08 -0400 |
| commit | 3dd392a407d15250a501fa109cc1f93fee95ef85 (patch) | |
| tree | c1faca3fa8bd0f7c8790b3e0887229b4a5a90e8b /arch/powerpc | |
| parent | b27a43c1e90582facad44de67d02bc9e9f900289 (diff) | |
| parent | d403a6484f0341bf0624d17ece46f24f741b6a92 (diff) | |
Merge branch 'linus' into x86/pat2
Conflicts:
arch/x86/mm/init_64.c
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/boot/Makefile | 2 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/holly.dts | 106 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/mpc8610_hpcd.dts | 8 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/elf.h | 7 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/sections.h | 12 | ||||
| -rw-r--r-- | arch/powerpc/kernel/idle.c | 6 | ||||
| -rw-r--r-- | arch/powerpc/kernel/kgdb.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/kernel/module_64.c | 19 | ||||
| -rw-r--r-- | arch/powerpc/platforms/fsl_uli1575.c | 12 |
9 files changed, 90 insertions, 87 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 717a3bc1352e..65d1a8454d2c 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
| @@ -195,7 +195,7 @@ image-$(CONFIG_PPC_CELLEB) += zImage.pseries | |||
| 195 | image-$(CONFIG_PPC_CHRP) += zImage.chrp | 195 | image-$(CONFIG_PPC_CHRP) += zImage.chrp |
| 196 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp | 196 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp |
| 197 | image-$(CONFIG_PPC_PMAC) += zImage.pmac | 197 | image-$(CONFIG_PPC_PMAC) += zImage.pmac |
| 198 | image-$(CONFIG_PPC_HOLLY) += zImage.holly | 198 | image-$(CONFIG_PPC_HOLLY) += dtbImage.holly |
| 199 | image-$(CONFIG_PPC_PRPMC2800) += dtbImage.prpmc2800 | 199 | image-$(CONFIG_PPC_PRPMC2800) += dtbImage.prpmc2800 |
| 200 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries | 200 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries |
| 201 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage | 201 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage |
diff --git a/arch/powerpc/boot/dts/holly.dts b/arch/powerpc/boot/dts/holly.dts index f87fe7b9ced9..c6e11ebecebb 100644 --- a/arch/powerpc/boot/dts/holly.dts +++ b/arch/powerpc/boot/dts/holly.dts | |||
| @@ -133,61 +133,61 @@ | |||
| 133 | reg = <0x00007400 0x00000400>; | 133 | reg = <0x00007400 0x00000400>; |
| 134 | big-endian; | 134 | big-endian; |
| 135 | }; | 135 | }; |
| 136 | }; | ||
| 136 | 137 | ||
| 137 | pci@1000 { | 138 | pci@c0001000 { |
| 138 | device_type = "pci"; | 139 | device_type = "pci"; |
| 139 | compatible = "tsi109-pci", "tsi108-pci"; | 140 | compatible = "tsi109-pci", "tsi108-pci"; |
| 140 | #interrupt-cells = <1>; | 141 | #interrupt-cells = <1>; |
| 141 | #size-cells = <2>; | 142 | #size-cells = <2>; |
| 142 | #address-cells = <3>; | 143 | #address-cells = <3>; |
| 143 | reg = <0x00001000 0x00001000>; | 144 | reg = <0xc0001000 0x00001000>; |
| 144 | bus-range = <0x0 0x0>; | 145 | bus-range = <0x0 0x0>; |
| 145 | /*----------------------------------------------------+ | 146 | /*----------------------------------------------------+ |
| 146 | | PCI memory range. | 147 | | PCI memory range. |
| 147 | | 01 denotes I/O space | 148 | | 01 denotes I/O space |
| 148 | | 02 denotes 32-bit memory space | 149 | | 02 denotes 32-bit memory space |
| 149 | +----------------------------------------------------*/ | 150 | +----------------------------------------------------*/ |
| 150 | ranges = <0x02000000 0x00000000 0x40000000 0x40000000 0x00000000 0x10000000 | 151 | ranges = <0x02000000 0x00000000 0x40000000 0x40000000 0x00000000 0x10000000 |
| 151 | 0x01000000 0x00000000 0x00000000 0x7e000000 0x00000000 0x00010000>; | 152 | 0x01000000 0x00000000 0x00000000 0x7e000000 0x00000000 0x00010000>; |
| 152 | clock-frequency = <133333332>; | 153 | clock-frequency = <133333332>; |
| 153 | interrupt-parent = <&MPIC>; | 154 | interrupt-parent = <&MPIC>; |
| 155 | interrupts = <0x17 0x2>; | ||
| 156 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
| 157 | /*----------------------------------------------------+ | ||
| 158 | | The INTA, INTB, INTC, INTD are shared. | ||
| 159 | +----------------------------------------------------*/ | ||
| 160 | interrupt-map = < | ||
| 161 | 0x800 0x0 0x0 0x1 &RT0 0x24 0x0 | ||
| 162 | 0x800 0x0 0x0 0x2 &RT0 0x25 0x0 | ||
| 163 | 0x800 0x0 0x0 0x3 &RT0 0x26 0x0 | ||
| 164 | 0x800 0x0 0x0 0x4 &RT0 0x27 0x0 | ||
| 165 | |||
| 166 | 0x1000 0x0 0x0 0x1 &RT0 0x25 0x0 | ||
| 167 | 0x1000 0x0 0x0 0x2 &RT0 0x26 0x0 | ||
| 168 | 0x1000 0x0 0x0 0x3 &RT0 0x27 0x0 | ||
| 169 | 0x1000 0x0 0x0 0x4 &RT0 0x24 0x0 | ||
| 170 | |||
| 171 | 0x1800 0x0 0x0 0x1 &RT0 0x26 0x0 | ||
| 172 | 0x1800 0x0 0x0 0x2 &RT0 0x27 0x0 | ||
| 173 | 0x1800 0x0 0x0 0x3 &RT0 0x24 0x0 | ||
| 174 | 0x1800 0x0 0x0 0x4 &RT0 0x25 0x0 | ||
| 175 | |||
| 176 | 0x2000 0x0 0x0 0x1 &RT0 0x27 0x0 | ||
| 177 | 0x2000 0x0 0x0 0x2 &RT0 0x24 0x0 | ||
| 178 | 0x2000 0x0 0x0 0x3 &RT0 0x25 0x0 | ||
| 179 | 0x2000 0x0 0x0 0x4 &RT0 0x26 0x0 | ||
| 180 | >; | ||
| 181 | |||
| 182 | RT0: router@1180 { | ||
| 183 | device_type = "pic-router"; | ||
| 184 | interrupt-controller; | ||
| 185 | big-endian; | ||
| 186 | clock-frequency = <0>; | ||
| 187 | #address-cells = <0>; | ||
| 188 | #interrupt-cells = <2>; | ||
| 154 | interrupts = <0x17 0x2>; | 189 | interrupts = <0x17 0x2>; |
| 155 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | 190 | interrupt-parent = <&MPIC>; |
| 156 | /*----------------------------------------------------+ | ||
| 157 | | The INTA, INTB, INTC, INTD are shared. | ||
| 158 | +----------------------------------------------------*/ | ||
| 159 | interrupt-map = < | ||
| 160 | 0x800 0x0 0x0 0x1 &RT0 0x24 0x0 | ||
| 161 | 0x800 0x0 0x0 0x2 &RT0 0x25 0x0 | ||
| 162 | 0x800 0x0 0x0 0x3 &RT0 0x26 0x0 | ||
| 163 | 0x800 0x0 0x0 0x4 &RT0 0x27 0x0 | ||
| 164 | |||
| 165 | 0x1000 0x0 0x0 0x1 &RT0 0x25 0x0 | ||
| 166 | 0x1000 0x0 0x0 0x2 &RT0 0x26 0x0 | ||
| 167 | 0x1000 0x0 0x0 0x3 &RT0 0x27 0x0 | ||
| 168 | 0x1000 0x0 0x0 0x4 &RT0 0x24 0x0 | ||
| 169 | |||
| 170 | 0x1800 0x0 0x0 0x1 &RT0 0x26 0x0 | ||
| 171 | 0x1800 0x0 0x0 0x2 &RT0 0x27 0x0 | ||
| 172 | 0x1800 0x0 0x0 0x3 &RT0 0x24 0x0 | ||
| 173 | 0x1800 0x0 0x0 0x4 &RT0 0x25 0x0 | ||
| 174 | |||
| 175 | 0x2000 0x0 0x0 0x1 &RT0 0x27 0x0 | ||
| 176 | 0x2000 0x0 0x0 0x2 &RT0 0x24 0x0 | ||
| 177 | 0x2000 0x0 0x0 0x3 &RT0 0x25 0x0 | ||
| 178 | 0x2000 0x0 0x0 0x4 &RT0 0x26 0x0 | ||
| 179 | >; | ||
| 180 | |||
| 181 | RT0: router@1180 { | ||
| 182 | device_type = "pic-router"; | ||
| 183 | interrupt-controller; | ||
| 184 | big-endian; | ||
| 185 | clock-frequency = <0>; | ||
| 186 | #address-cells = <0>; | ||
| 187 | #interrupt-cells = <2>; | ||
| 188 | interrupts = <0x17 0x2>; | ||
| 189 | interrupt-parent = <&MPIC>; | ||
| 190 | }; | ||
| 191 | }; | 191 | }; |
| 192 | }; | 192 | }; |
| 193 | 193 | ||
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts index 3b3a1062cb25..584a4f184eb2 100644 --- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts +++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts | |||
| @@ -281,7 +281,7 @@ | |||
| 281 | cell-index = <0>; | 281 | cell-index = <0>; |
| 282 | reg = <0x0 0x80>; | 282 | reg = <0x0 0x80>; |
| 283 | interrupt-parent = <&mpic>; | 283 | interrupt-parent = <&mpic>; |
| 284 | interrupts = <60 2>; | 284 | interrupts = <76 2>; |
| 285 | }; | 285 | }; |
| 286 | dma-channel@1 { | 286 | dma-channel@1 { |
| 287 | compatible = "fsl,mpc8610-dma-channel", | 287 | compatible = "fsl,mpc8610-dma-channel", |
| @@ -289,7 +289,7 @@ | |||
| 289 | cell-index = <1>; | 289 | cell-index = <1>; |
| 290 | reg = <0x80 0x80>; | 290 | reg = <0x80 0x80>; |
| 291 | interrupt-parent = <&mpic>; | 291 | interrupt-parent = <&mpic>; |
| 292 | interrupts = <61 2>; | 292 | interrupts = <77 2>; |
| 293 | }; | 293 | }; |
| 294 | dma-channel@2 { | 294 | dma-channel@2 { |
| 295 | compatible = "fsl,mpc8610-dma-channel", | 295 | compatible = "fsl,mpc8610-dma-channel", |
| @@ -297,7 +297,7 @@ | |||
| 297 | cell-index = <2>; | 297 | cell-index = <2>; |
| 298 | reg = <0x100 0x80>; | 298 | reg = <0x100 0x80>; |
| 299 | interrupt-parent = <&mpic>; | 299 | interrupt-parent = <&mpic>; |
| 300 | interrupts = <62 2>; | 300 | interrupts = <78 2>; |
| 301 | }; | 301 | }; |
| 302 | dma-channel@3 { | 302 | dma-channel@3 { |
| 303 | compatible = "fsl,mpc8610-dma-channel", | 303 | compatible = "fsl,mpc8610-dma-channel", |
| @@ -305,7 +305,7 @@ | |||
| 305 | cell-index = <3>; | 305 | cell-index = <3>; |
| 306 | reg = <0x180 0x80>; | 306 | reg = <0x180 0x80>; |
| 307 | interrupt-parent = <&mpic>; | 307 | interrupt-parent = <&mpic>; |
| 308 | interrupts = <63 2>; | 308 | interrupts = <79 2>; |
| 309 | }; | 309 | }; |
| 310 | }; | 310 | }; |
| 311 | 311 | ||
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index 80d1f399ee51..64c6ee22eefd 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h | |||
| @@ -409,6 +409,13 @@ do { \ | |||
| 409 | /* Keep this the last entry. */ | 409 | /* Keep this the last entry. */ |
| 410 | #define R_PPC64_NUM 107 | 410 | #define R_PPC64_NUM 107 |
| 411 | 411 | ||
| 412 | /* There's actually a third entry here, but it's unused */ | ||
| 413 | struct ppc64_opd_entry | ||
| 414 | { | ||
| 415 | unsigned long funcaddr; | ||
| 416 | unsigned long r2; | ||
| 417 | }; | ||
| 418 | |||
| 412 | #ifdef __KERNEL__ | 419 | #ifdef __KERNEL__ |
| 413 | 420 | ||
| 414 | #ifdef CONFIG_SPU_BASE | 421 | #ifdef CONFIG_SPU_BASE |
diff --git a/arch/powerpc/include/asm/sections.h b/arch/powerpc/include/asm/sections.h index 7710e9e6660f..07956f3e7844 100644 --- a/arch/powerpc/include/asm/sections.h +++ b/arch/powerpc/include/asm/sections.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | #define _ASM_POWERPC_SECTIONS_H | 2 | #define _ASM_POWERPC_SECTIONS_H |
| 3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
| 4 | 4 | ||
| 5 | #include <linux/elf.h> | ||
| 6 | #include <linux/uaccess.h> | ||
| 5 | #include <asm-generic/sections.h> | 7 | #include <asm-generic/sections.h> |
| 6 | 8 | ||
| 7 | #ifdef __powerpc64__ | 9 | #ifdef __powerpc64__ |
| @@ -17,7 +19,15 @@ static inline int in_kernel_text(unsigned long addr) | |||
| 17 | } | 19 | } |
| 18 | 20 | ||
| 19 | #undef dereference_function_descriptor | 21 | #undef dereference_function_descriptor |
| 20 | void *dereference_function_descriptor(void *); | 22 | static inline void *dereference_function_descriptor(void *ptr) |
| 23 | { | ||
| 24 | struct ppc64_opd_entry *desc = ptr; | ||
| 25 | void *p; | ||
| 26 | |||
| 27 | if (!probe_kernel_address(&desc->funcaddr, p)) | ||
| 28 | ptr = p; | ||
| 29 | return ptr; | ||
| 30 | } | ||
| 21 | 31 | ||
| 22 | #endif | 32 | #endif |
| 23 | 33 | ||
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index d308a9f70f1b..31982d05d81a 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c | |||
| @@ -34,11 +34,7 @@ | |||
| 34 | #include <asm/smp.h> | 34 | #include <asm/smp.h> |
| 35 | 35 | ||
| 36 | #ifdef CONFIG_HOTPLUG_CPU | 36 | #ifdef CONFIG_HOTPLUG_CPU |
| 37 | /* this is used for software suspend, and that shuts down | 37 | #define cpu_should_die() cpu_is_offline(smp_processor_id()) |
| 38 | * CPUs even while the system is still booting... */ | ||
| 39 | #define cpu_should_die() (cpu_is_offline(smp_processor_id()) && \ | ||
| 40 | (system_state == SYSTEM_RUNNING \ | ||
| 41 | || system_state == SYSTEM_BOOTING)) | ||
| 42 | #else | 38 | #else |
| 43 | #define cpu_should_die() 0 | 39 | #define cpu_should_die() 0 |
| 44 | #endif | 40 | #endif |
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index b4fdf2f2743c..fe8f71dd0b3f 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c | |||
| @@ -347,9 +347,8 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code, | |||
| 347 | linux_regs->msr |= MSR_SE; | 347 | linux_regs->msr |= MSR_SE; |
| 348 | #endif | 348 | #endif |
| 349 | kgdb_single_step = 1; | 349 | kgdb_single_step = 1; |
| 350 | if (kgdb_contthread) | 350 | atomic_set(&kgdb_cpu_doing_single_step, |
| 351 | atomic_set(&kgdb_cpu_doing_single_step, | 351 | raw_smp_processor_id()); |
| 352 | raw_smp_processor_id()); | ||
| 353 | } | 352 | } |
| 354 | return 0; | 353 | return 0; |
| 355 | } | 354 | } |
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c index ad79de272ff3..1af2377e4992 100644 --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c | |||
| @@ -21,9 +21,7 @@ | |||
| 21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
| 22 | #include <linux/vmalloc.h> | 22 | #include <linux/vmalloc.h> |
| 23 | #include <linux/bug.h> | 23 | #include <linux/bug.h> |
| 24 | #include <linux/uaccess.h> | ||
| 25 | #include <asm/module.h> | 24 | #include <asm/module.h> |
| 26 | #include <asm/sections.h> | ||
| 27 | #include <asm/firmware.h> | 25 | #include <asm/firmware.h> |
| 28 | #include <asm/code-patching.h> | 26 | #include <asm/code-patching.h> |
| 29 | #include <linux/sort.h> | 27 | #include <linux/sort.h> |
| @@ -43,13 +41,6 @@ | |||
| 43 | #define DEBUGP(fmt , ...) | 41 | #define DEBUGP(fmt , ...) |
| 44 | #endif | 42 | #endif |
| 45 | 43 | ||
| 46 | /* There's actually a third entry here, but it's unused */ | ||
| 47 | struct ppc64_opd_entry | ||
| 48 | { | ||
| 49 | unsigned long funcaddr; | ||
| 50 | unsigned long r2; | ||
| 51 | }; | ||
| 52 | |||
| 53 | /* Like PPC32, we need little trampolines to do > 24-bit jumps (into | 44 | /* Like PPC32, we need little trampolines to do > 24-bit jumps (into |
| 54 | the kernel itself). But on PPC64, these need to be used for every | 45 | the kernel itself). But on PPC64, these need to be used for every |
| 55 | jump, actually, to reset r2 (TOC+0x8000). */ | 46 | jump, actually, to reset r2 (TOC+0x8000). */ |
| @@ -452,13 +443,3 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, | |||
| 452 | 443 | ||
| 453 | return 0; | 444 | return 0; |
| 454 | } | 445 | } |
| 455 | |||
| 456 | void *dereference_function_descriptor(void *ptr) | ||
| 457 | { | ||
| 458 | struct ppc64_opd_entry *desc = ptr; | ||
| 459 | void *p; | ||
| 460 | |||
| 461 | if (!probe_kernel_address(&desc->funcaddr, p)) | ||
| 462 | ptr = p; | ||
| 463 | return ptr; | ||
| 464 | } | ||
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c index ef74a0763ec1..8c619963becc 100644 --- a/arch/powerpc/platforms/fsl_uli1575.c +++ b/arch/powerpc/platforms/fsl_uli1575.c | |||
| @@ -219,11 +219,21 @@ static void __devinit quirk_final_uli5249(struct pci_dev *dev) | |||
| 219 | int i; | 219 | int i; |
| 220 | u8 *dummy; | 220 | u8 *dummy; |
| 221 | struct pci_bus *bus = dev->bus; | 221 | struct pci_bus *bus = dev->bus; |
| 222 | resource_size_t end = 0; | ||
| 223 | |||
| 224 | for (i = PCI_BRIDGE_RESOURCES; i < PCI_BRIDGE_RESOURCES+3; i++) { | ||
| 225 | unsigned long flags = pci_resource_flags(dev, i); | ||
| 226 | if ((flags & (IORESOURCE_MEM|IORESOURCE_PREFETCH)) == IORESOURCE_MEM) | ||
| 227 | end = pci_resource_end(dev, i); | ||
| 228 | } | ||
| 222 | 229 | ||
| 223 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | 230 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { |
| 224 | if ((bus->resource[i]) && | 231 | if ((bus->resource[i]) && |
| 225 | (bus->resource[i]->flags & IORESOURCE_MEM)) { | 232 | (bus->resource[i]->flags & IORESOURCE_MEM)) { |
| 226 | dummy = ioremap(bus->resource[i]->end - 3, 0x4); | 233 | if (bus->resource[i]->end == end) |
| 234 | dummy = ioremap(bus->resource[i]->start, 0x4); | ||
| 235 | else | ||
| 236 | dummy = ioremap(bus->resource[i]->end - 3, 0x4); | ||
| 227 | if (dummy) { | 237 | if (dummy) { |
| 228 | in_8(dummy); | 238 | in_8(dummy); |
| 229 | iounmap(dummy); | 239 | iounmap(dummy); |
