diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-15 18:15:03 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-15 18:15:03 -0400 |
| commit | 37a08b13eba6ce3b42df30b2a5ca3a9845f429ec (patch) | |
| tree | 663ceaca23d3ca508994bf9e1e80873a5e091898 /arch | |
| parent | bd72f85b9ad6cf41bc771de0cd27d892c41b4396 (diff) | |
| parent | b734dd5b5753c88c64bf56d4002d8ade7e88edec (diff) | |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/pci: Fix MODPOST warning
powerpc/oprofile: Add ppc750 CL as supported by oprofile
powerpc: warning: allocated section `.data_nosave' not in segment
powerpc/kgdb: Fix build failure caused by "kgdb.c: unused variable 'acc'"
powerpc: Fix hypervisor TLB batching
powerpc/mm: Fix hang accessing top of vmalloc space
powerpc: Fix memory leak in axon_msi.c
powerpc/pmac: Fix issues with sleep on some powerbooks
powerpc64/ftrace: use PACA to retrieve TOC in mod_return_to_handler
powerpc/ftrace: show real return addresses in modules
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/powerpc/include/asm/firmware.h | 10 | ||||
| -rw-r--r-- | arch/powerpc/kernel/cputable.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/entry_64.S | 3 | ||||
| -rw-r--r-- | arch/powerpc/kernel/kgdb.c | 6 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci-common.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/process.c | 10 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 1 | ||||
| -rw-r--r-- | arch/powerpc/mm/slb_low.S | 10 | ||||
| -rw-r--r-- | arch/powerpc/platforms/cell/axon_msi.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powermac/low_i2c.c | 7 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/firmware.c | 3 |
11 files changed, 28 insertions, 28 deletions
diff --git a/arch/powerpc/include/asm/firmware.h b/arch/powerpc/include/asm/firmware.h index 3a179827528d..20778a405d7a 100644 --- a/arch/powerpc/include/asm/firmware.h +++ b/arch/powerpc/include/asm/firmware.h | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) | 37 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) |
| 38 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) | 38 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) |
| 39 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) | 39 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) |
| 40 | #define FW_FEATURE_BULK ASM_CONST(0x0000000000020000) | 40 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000000020000) |
| 41 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) | 41 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) |
| 42 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) | 42 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) |
| 43 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) | 43 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) |
| @@ -45,8 +45,7 @@ | |||
| 45 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) | 45 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) |
| 46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) | 46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) |
| 47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) | 47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) |
| 48 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) | 48 | #define FW_FEATURE_CMO ASM_CONST(0x0000000002000000) |
| 49 | #define FW_FEATURE_CMO ASM_CONST(0x0000000004000000) | ||
| 50 | 49 | ||
| 51 | #ifndef __ASSEMBLY__ | 50 | #ifndef __ASSEMBLY__ |
| 52 | 51 | ||
| @@ -58,8 +57,9 @@ enum { | |||
| 58 | FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | | 57 | FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | |
| 59 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | | 58 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | |
| 60 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | | 59 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | |
| 61 | FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | | 60 | FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR | |
| 62 | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_CMO, | 61 | FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | |
| 62 | FW_FEATURE_CMO, | ||
| 63 | FW_FEATURE_PSERIES_ALWAYS = 0, | 63 | FW_FEATURE_PSERIES_ALWAYS = 0, |
| 64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
| 65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 0b9c9135922e..03c862b6a9c4 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
| @@ -711,6 +711,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
| 711 | .cpu_setup = __setup_cpu_750, | 711 | .cpu_setup = __setup_cpu_750, |
| 712 | .machine_check = machine_check_generic, | 712 | .machine_check = machine_check_generic, |
| 713 | .platform = "ppc750", | 713 | .platform = "ppc750", |
| 714 | .oprofile_cpu_type = "ppc/750", | ||
| 715 | .oprofile_type = PPC_OPROFILE_G4, | ||
| 714 | }, | 716 | }, |
| 715 | { /* 745/755 */ | 717 | { /* 745/755 */ |
| 716 | .pvr_mask = 0xfffff000, | 718 | .pvr_mask = 0xfffff000, |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 900e0eea0099..f9fd54bfcc84 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
| @@ -1038,8 +1038,7 @@ _GLOBAL(mod_return_to_handler) | |||
| 1038 | * We are in a module using the module's TOC. | 1038 | * We are in a module using the module's TOC. |
| 1039 | * Switch to our TOC to run inside the core kernel. | 1039 | * Switch to our TOC to run inside the core kernel. |
| 1040 | */ | 1040 | */ |
| 1041 | LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler) | 1041 | ld r2, PACATOC(r13) |
| 1042 | ld r2, 8(r4) | ||
| 1043 | 1042 | ||
| 1044 | bl .ftrace_return_to_handler | 1043 | bl .ftrace_return_to_handler |
| 1045 | nop | 1044 | nop |
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index fe8f71dd0b3f..641c74bb8e27 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c | |||
| @@ -282,12 +282,6 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs) | |||
| 282 | { | 282 | { |
| 283 | unsigned long *ptr = gdb_regs; | 283 | unsigned long *ptr = gdb_regs; |
| 284 | int reg; | 284 | int reg; |
| 285 | #ifdef CONFIG_SPE | ||
| 286 | union { | ||
| 287 | u32 v32[2]; | ||
| 288 | u64 v64; | ||
| 289 | } acc; | ||
| 290 | #endif | ||
| 291 | 285 | ||
| 292 | for (reg = 0; reg < 32; reg++) | 286 | for (reg = 0; reg < 32; reg++) |
| 293 | UNPACK64(regs->gpr[reg], ptr); | 287 | UNPACK64(regs->gpr[reg], ptr); |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index bb8209e34931..e8dfdbd9327a 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
| @@ -1190,7 +1190,7 @@ EXPORT_SYMBOL(pcibios_align_resource); | |||
| 1190 | * Reparent resource children of pr that conflict with res | 1190 | * Reparent resource children of pr that conflict with res |
| 1191 | * under res, and make res replace those children. | 1191 | * under res, and make res replace those children. |
| 1192 | */ | 1192 | */ |
| 1193 | static int __init reparent_resources(struct resource *parent, | 1193 | static int reparent_resources(struct resource *parent, |
| 1194 | struct resource *res) | 1194 | struct resource *res) |
| 1195 | { | 1195 | { |
| 1196 | struct resource *p, **pp; | 1196 | struct resource *p, **pp; |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 1168c5f440ab..2ec1eaed19ca 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
| @@ -1016,9 +1016,13 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
| 1016 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 1016 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
| 1017 | int curr_frame = current->curr_ret_stack; | 1017 | int curr_frame = current->curr_ret_stack; |
| 1018 | extern void return_to_handler(void); | 1018 | extern void return_to_handler(void); |
| 1019 | unsigned long addr = (unsigned long)return_to_handler; | 1019 | unsigned long rth = (unsigned long)return_to_handler; |
| 1020 | unsigned long mrth = -1; | ||
| 1020 | #ifdef CONFIG_PPC64 | 1021 | #ifdef CONFIG_PPC64 |
| 1021 | addr = *(unsigned long*)addr; | 1022 | extern void mod_return_to_handler(void); |
| 1023 | rth = *(unsigned long *)rth; | ||
| 1024 | mrth = (unsigned long)mod_return_to_handler; | ||
| 1025 | mrth = *(unsigned long *)mrth; | ||
| 1022 | #endif | 1026 | #endif |
| 1023 | #endif | 1027 | #endif |
| 1024 | 1028 | ||
| @@ -1044,7 +1048,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
| 1044 | if (!firstframe || ip != lr) { | 1048 | if (!firstframe || ip != lr) { |
| 1045 | printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip); | 1049 | printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip); |
| 1046 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 1050 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
| 1047 | if (ip == addr && curr_frame >= 0) { | 1051 | if ((ip == rth || ip == mrth) && curr_frame >= 0) { |
| 1048 | printk(" (%pS)", | 1052 | printk(" (%pS)", |
| 1049 | (void *)current->ret_stack[curr_frame].ret); | 1053 | (void *)current->ret_stack[curr_frame].ret); |
| 1050 | curr_frame--; | 1054 | curr_frame--; |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index f56429362a12..27735a7ac12b 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
| @@ -236,6 +236,7 @@ SECTIONS | |||
| 236 | READ_MOSTLY_DATA(L1_CACHE_BYTES) | 236 | READ_MOSTLY_DATA(L1_CACHE_BYTES) |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | . = ALIGN(PAGE_SIZE); | ||
| 239 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { | 240 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { |
| 240 | NOSAVE_DATA | 241 | NOSAVE_DATA |
| 241 | } | 242 | } |
diff --git a/arch/powerpc/mm/slb_low.S b/arch/powerpc/mm/slb_low.S index bc44dc4b5c67..95ce35581696 100644 --- a/arch/powerpc/mm/slb_low.S +++ b/arch/powerpc/mm/slb_low.S | |||
| @@ -72,19 +72,17 @@ _GLOBAL(slb_miss_kernel_load_vmemmap) | |||
| 72 | 1: | 72 | 1: |
| 73 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ | 73 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ |
| 74 | 74 | ||
| 75 | /* vmalloc/ioremap mapping encoding bits, the "li" instructions below | 75 | /* vmalloc mapping gets the encoding from the PACA as the mapping |
| 76 | * will be patched by the kernel at boot | 76 | * can be demoted from 64K -> 4K dynamically on some machines |
| 77 | */ | 77 | */ |
| 78 | BEGIN_FTR_SECTION | ||
| 79 | /* check whether this is in vmalloc or ioremap space */ | ||
| 80 | clrldi r11,r10,48 | 78 | clrldi r11,r10,48 |
| 81 | cmpldi r11,(VMALLOC_SIZE >> 28) - 1 | 79 | cmpldi r11,(VMALLOC_SIZE >> 28) - 1 |
| 82 | bgt 5f | 80 | bgt 5f |
| 83 | lhz r11,PACAVMALLOCSLLP(r13) | 81 | lhz r11,PACAVMALLOCSLLP(r13) |
| 84 | b 6f | 82 | b 6f |
| 85 | 5: | 83 | 5: |
| 86 | END_FTR_SECTION_IFCLR(CPU_FTR_CI_LARGE_PAGE) | 84 | /* IO mapping */ |
| 87 | _GLOBAL(slb_miss_kernel_load_io) | 85 | _GLOBAL(slb_miss_kernel_load_io) |
| 88 | li r11,0 | 86 | li r11,0 |
| 89 | 6: | 87 | 6: |
| 90 | BEGIN_FTR_SECTION | 88 | BEGIN_FTR_SECTION |
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c index aca5741ddc67..a86c34b3bb84 100644 --- a/arch/powerpc/platforms/cell/axon_msi.c +++ b/arch/powerpc/platforms/cell/axon_msi.c | |||
| @@ -365,7 +365,7 @@ static int axon_msi_probe(struct of_device *device, | |||
| 365 | printk(KERN_ERR | 365 | printk(KERN_ERR |
| 366 | "axon_msi: couldn't parse dcr properties on %s\n", | 366 | "axon_msi: couldn't parse dcr properties on %s\n", |
| 367 | dn->full_name); | 367 | dn->full_name); |
| 368 | goto out; | 368 | goto out_free_msic; |
| 369 | } | 369 | } |
| 370 | 370 | ||
| 371 | msic->dcr_host = dcr_map(dn, dcr_base, dcr_len); | 371 | msic->dcr_host = dcr_map(dn, dcr_base, dcr_len); |
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c index 21226b74c9b2..414ca9849f23 100644 --- a/arch/powerpc/platforms/powermac/low_i2c.c +++ b/arch/powerpc/platforms/powermac/low_i2c.c | |||
| @@ -540,8 +540,11 @@ static struct pmac_i2c_host_kw *__init kw_i2c_host_init(struct device_node *np) | |||
| 540 | /* Make sure IRQ is disabled */ | 540 | /* Make sure IRQ is disabled */ |
| 541 | kw_write_reg(reg_ier, 0); | 541 | kw_write_reg(reg_ier, 0); |
| 542 | 542 | ||
| 543 | /* Request chip interrupt */ | 543 | /* Request chip interrupt. We set IRQF_TIMER because we don't |
| 544 | if (request_irq(host->irq, kw_i2c_irq, 0, "keywest i2c", host)) | 544 | * want that interrupt disabled between the 2 passes of driver |
| 545 | * suspend or we'll have issues running the pfuncs | ||
| 546 | */ | ||
| 547 | if (request_irq(host->irq, kw_i2c_irq, IRQF_TIMER, "keywest i2c", host)) | ||
| 545 | host->irq = NO_IRQ; | 548 | host->irq = NO_IRQ; |
| 546 | 549 | ||
| 547 | printk(KERN_INFO "KeyWest i2c @0x%08x irq %d %s\n", | 550 | printk(KERN_INFO "KeyWest i2c @0x%08x irq %d %s\n", |
diff --git a/arch/powerpc/platforms/pseries/firmware.c b/arch/powerpc/platforms/pseries/firmware.c index 5a707da3f5c2..0a14d8cd314f 100644 --- a/arch/powerpc/platforms/pseries/firmware.c +++ b/arch/powerpc/platforms/pseries/firmware.c | |||
| @@ -51,11 +51,10 @@ firmware_features_table[FIRMWARE_MAX_FEATURES] = { | |||
| 51 | {FW_FEATURE_VIO, "hcall-vio"}, | 51 | {FW_FEATURE_VIO, "hcall-vio"}, |
| 52 | {FW_FEATURE_RDMA, "hcall-rdma"}, | 52 | {FW_FEATURE_RDMA, "hcall-rdma"}, |
| 53 | {FW_FEATURE_LLAN, "hcall-lLAN"}, | 53 | {FW_FEATURE_LLAN, "hcall-lLAN"}, |
| 54 | {FW_FEATURE_BULK, "hcall-bulk"}, | 54 | {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, |
| 55 | {FW_FEATURE_XDABR, "hcall-xdabr"}, | 55 | {FW_FEATURE_XDABR, "hcall-xdabr"}, |
| 56 | {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, | 56 | {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, |
| 57 | {FW_FEATURE_SPLPAR, "hcall-splpar"}, | 57 | {FW_FEATURE_SPLPAR, "hcall-splpar"}, |
| 58 | {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, | ||
| 59 | }; | 58 | }; |
| 60 | 59 | ||
| 61 | /* Build up the firmware features bitmask using the contents of | 60 | /* Build up the firmware features bitmask using the contents of |
