diff options
| -rw-r--r-- | arch/powerpc/Kconfig | 4 | ||||
| -rw-r--r-- | arch/powerpc/Makefile | 4 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/ptrace.h | 32 | ||||
| -rw-r--r-- | arch/powerpc/kernel/crash.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/irq.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/kernel/perf_event.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/kernel/prom_init.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/prom_init_check.sh | 6 | ||||
| -rw-r--r-- | arch/powerpc/lib/Makefile | 4 | ||||
| -rw-r--r-- | arch/powerpc/lib/crtsavres.S | 129 | ||||
| -rw-r--r-- | arch/powerpc/lib/feature-fixups.c | 17 | ||||
| -rw-r--r-- | arch/powerpc/platforms/iseries/pci.c | 6 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 5 |
13 files changed, 184 insertions, 37 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 328774bd41ee..6506bf4fbff1 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
| @@ -400,7 +400,7 @@ config IRQ_ALL_CPUS | |||
| 400 | 400 | ||
| 401 | config SPARSE_IRQ | 401 | config SPARSE_IRQ |
| 402 | bool "Support sparse irq numbering" | 402 | bool "Support sparse irq numbering" |
| 403 | default y | 403 | default n |
| 404 | help | 404 | help |
| 405 | This enables support for sparse irqs. This is useful for distro | 405 | This enables support for sparse irqs. This is useful for distro |
| 406 | kernels that want to define a high CONFIG_NR_CPUS value but still | 406 | kernels that want to define a high CONFIG_NR_CPUS value but still |
| @@ -409,7 +409,7 @@ config SPARSE_IRQ | |||
| 409 | ( Sparse IRQs can also be beneficial on NUMA boxes, as they spread | 409 | ( Sparse IRQs can also be beneficial on NUMA boxes, as they spread |
| 410 | out the irq_desc[] array in a more NUMA-friendly way. ) | 410 | out the irq_desc[] array in a more NUMA-friendly way. ) |
| 411 | 411 | ||
| 412 | If you don't know what to do here, say Y. | 412 | If you don't know what to do here, say N. |
| 413 | 413 | ||
| 414 | config NUMA | 414 | config NUMA |
| 415 | bool "NUMA support" | 415 | bool "NUMA support" |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 42dcd3f4ad7b..77cfe7a29e25 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
| @@ -92,10 +92,10 @@ endif | |||
| 92 | else | 92 | else |
| 93 | KBUILD_CFLAGS += $(call cc-option,-mtune=power4) | 93 | KBUILD_CFLAGS += $(call cc-option,-mtune=power4) |
| 94 | endif | 94 | endif |
| 95 | else | ||
| 96 | LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o | ||
| 97 | endif | 95 | endif |
| 98 | 96 | ||
| 97 | LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o | ||
| 98 | |||
| 99 | ifeq ($(CONFIG_TUNE_CELL),y) | 99 | ifeq ($(CONFIG_TUNE_CELL),y) |
| 100 | KBUILD_CFLAGS += $(call cc-option,-mtune=cell) | 100 | KBUILD_CFLAGS += $(call cc-option,-mtune=cell) |
| 101 | endif | 101 | endif |
diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h index 5d8be0416227..0175a676b34b 100644 --- a/arch/powerpc/include/asm/ptrace.h +++ b/arch/powerpc/include/asm/ptrace.h | |||
| @@ -24,11 +24,7 @@ | |||
| 24 | * 2 of the License, or (at your option) any later version. | 24 | * 2 of the License, or (at your option) any later version. |
| 25 | */ | 25 | */ |
| 26 | 26 | ||
| 27 | #ifdef __KERNEL__ | ||
| 28 | #include <linux/types.h> | 27 | #include <linux/types.h> |
| 29 | #else | ||
| 30 | #include <stdint.h> | ||
| 31 | #endif | ||
| 32 | 28 | ||
| 33 | #ifndef __ASSEMBLY__ | 29 | #ifndef __ASSEMBLY__ |
| 34 | 30 | ||
| @@ -364,13 +360,13 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, | |||
| 364 | #ifndef __ASSEMBLY__ | 360 | #ifndef __ASSEMBLY__ |
| 365 | 361 | ||
| 366 | struct ppc_debug_info { | 362 | struct ppc_debug_info { |
| 367 | uint32_t version; /* Only version 1 exists to date */ | 363 | __u32 version; /* Only version 1 exists to date */ |
| 368 | uint32_t num_instruction_bps; | 364 | __u32 num_instruction_bps; |
| 369 | uint32_t num_data_bps; | 365 | __u32 num_data_bps; |
| 370 | uint32_t num_condition_regs; | 366 | __u32 num_condition_regs; |
| 371 | uint32_t data_bp_alignment; | 367 | __u32 data_bp_alignment; |
| 372 | uint32_t sizeof_condition; /* size of the DVC register */ | 368 | __u32 sizeof_condition; /* size of the DVC register */ |
| 373 | uint64_t features; | 369 | __u64 features; |
| 374 | }; | 370 | }; |
| 375 | 371 | ||
| 376 | #endif /* __ASSEMBLY__ */ | 372 | #endif /* __ASSEMBLY__ */ |
| @@ -386,13 +382,13 @@ struct ppc_debug_info { | |||
| 386 | #ifndef __ASSEMBLY__ | 382 | #ifndef __ASSEMBLY__ |
| 387 | 383 | ||
| 388 | struct ppc_hw_breakpoint { | 384 | struct ppc_hw_breakpoint { |
| 389 | uint32_t version; /* currently, version must be 1 */ | 385 | __u32 version; /* currently, version must be 1 */ |
| 390 | uint32_t trigger_type; /* only some combinations allowed */ | 386 | __u32 trigger_type; /* only some combinations allowed */ |
| 391 | uint32_t addr_mode; /* address match mode */ | 387 | __u32 addr_mode; /* address match mode */ |
| 392 | uint32_t condition_mode; /* break/watchpoint condition flags */ | 388 | __u32 condition_mode; /* break/watchpoint condition flags */ |
| 393 | uint64_t addr; /* break/watchpoint address */ | 389 | __u64 addr; /* break/watchpoint address */ |
| 394 | uint64_t addr2; /* range end or mask */ | 390 | __u64 addr2; /* range end or mask */ |
| 395 | uint64_t condition_value; /* contents of the DVC register */ | 391 | __u64 condition_value; /* contents of the DVC register */ |
| 396 | }; | 392 | }; |
| 397 | 393 | ||
| 398 | #endif /* __ASSEMBLY__ */ | 394 | #endif /* __ASSEMBLY__ */ |
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index b46f2e09bd81..29df48f2b61a 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c | |||
| @@ -447,7 +447,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs) | |||
| 447 | crash_kexec_prepare_cpus(crashing_cpu); | 447 | crash_kexec_prepare_cpus(crashing_cpu); |
| 448 | cpu_set(crashing_cpu, cpus_in_crash); | 448 | cpu_set(crashing_cpu, cpus_in_crash); |
| 449 | crash_kexec_stop_spus(); | 449 | crash_kexec_stop_spus(); |
| 450 | #ifdef CONFIG_PPC_STD_MMU_64 | 450 | #if defined(CONFIG_PPC_STD_MMU_64) && defined(CONFIG_SMP) |
| 451 | crash_kexec_wait_realmode(crashing_cpu); | 451 | crash_kexec_wait_realmode(crashing_cpu); |
| 452 | #endif | 452 | #endif |
| 453 | if (ppc_md.kexec_cpu_down) | 453 | if (ppc_md.kexec_cpu_down) |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 3333bbdd23ef..77be3d058a65 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
| @@ -295,7 +295,10 @@ void fixup_irqs(const struct cpumask *map) | |||
| 295 | 295 | ||
| 296 | for_each_irq(irq) { | 296 | for_each_irq(irq) { |
| 297 | desc = irq_to_desc(irq); | 297 | desc = irq_to_desc(irq); |
| 298 | if (desc && desc->status & IRQ_PER_CPU) | 298 | if (!desc) |
| 299 | continue; | ||
| 300 | |||
| 301 | if (desc->status & IRQ_PER_CPU) | ||
| 299 | continue; | 302 | continue; |
| 300 | 303 | ||
| 301 | cpumask_and(mask, desc->affinity, map); | 304 | cpumask_and(mask, desc->affinity, map); |
diff --git a/arch/powerpc/kernel/perf_event.c b/arch/powerpc/kernel/perf_event.c index 43b83c35cf54..5c14ffe51258 100644 --- a/arch/powerpc/kernel/perf_event.c +++ b/arch/powerpc/kernel/perf_event.c | |||
| @@ -791,8 +791,11 @@ static void power_pmu_disable(struct perf_event *event) | |||
| 791 | cpuhw = &__get_cpu_var(cpu_hw_events); | 791 | cpuhw = &__get_cpu_var(cpu_hw_events); |
| 792 | for (i = 0; i < cpuhw->n_events; ++i) { | 792 | for (i = 0; i < cpuhw->n_events; ++i) { |
| 793 | if (event == cpuhw->event[i]) { | 793 | if (event == cpuhw->event[i]) { |
| 794 | while (++i < cpuhw->n_events) | 794 | while (++i < cpuhw->n_events) { |
| 795 | cpuhw->event[i-1] = cpuhw->event[i]; | 795 | cpuhw->event[i-1] = cpuhw->event[i]; |
| 796 | cpuhw->events[i-1] = cpuhw->events[i]; | ||
| 797 | cpuhw->flags[i-1] = cpuhw->flags[i]; | ||
| 798 | } | ||
| 796 | --cpuhw->n_events; | 799 | --cpuhw->n_events; |
| 797 | ppmu->disable_pmc(event->hw.idx - 1, cpuhw->mmcr); | 800 | ppmu->disable_pmc(event->hw.idx - 1, cpuhw->mmcr); |
| 798 | if (event->hw.idx) { | 801 | if (event->hw.idx) { |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 97d4bd9442d3..3b6f8ae9b8cc 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
| @@ -872,7 +872,7 @@ static void __init prom_send_capabilities(void) | |||
| 872 | "ibm_architecture_vec structure inconsistent: 0x%x !\n", | 872 | "ibm_architecture_vec structure inconsistent: 0x%x !\n", |
| 873 | *cores); | 873 | *cores); |
| 874 | } else { | 874 | } else { |
| 875 | *cores = NR_CPUS / prom_count_smt_threads(); | 875 | *cores = DIV_ROUND_UP(NR_CPUS, prom_count_smt_threads()); |
| 876 | prom_printf("Max number of cores passed to firmware: 0x%x\n", | 876 | prom_printf("Max number of cores passed to firmware: 0x%x\n", |
| 877 | (unsigned long)*cores); | 877 | (unsigned long)*cores); |
| 878 | } | 878 | } |
diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh index 1ac136b128f0..9f82f4937892 100644 --- a/arch/powerpc/kernel/prom_init_check.sh +++ b/arch/powerpc/kernel/prom_init_check.sh | |||
| @@ -52,12 +52,18 @@ do | |||
| 52 | if [ "${UNDEF:0:9}" = "_restgpr_" ]; then | 52 | if [ "${UNDEF:0:9}" = "_restgpr_" ]; then |
| 53 | OK=1 | 53 | OK=1 |
| 54 | fi | 54 | fi |
| 55 | if [ "${UNDEF:0:10}" = "_restgpr0_" ]; then | ||
| 56 | OK=1 | ||
| 57 | fi | ||
| 55 | if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then | 58 | if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then |
| 56 | OK=1 | 59 | OK=1 |
| 57 | fi | 60 | fi |
| 58 | if [ "${UNDEF:0:9}" = "_savegpr_" ]; then | 61 | if [ "${UNDEF:0:9}" = "_savegpr_" ]; then |
| 59 | OK=1 | 62 | OK=1 |
| 60 | fi | 63 | fi |
| 64 | if [ "${UNDEF:0:10}" = "_savegpr0_" ]; then | ||
| 65 | OK=1 | ||
| 66 | fi | ||
