Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+51 -45
+5 -5
arch/powerpc/include/asm/firmware.h
··· 37 37 #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) 38 38 #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) 39 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 41 #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) 42 42 #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) 43 43 #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) ··· 45 45 #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) 46 46 #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) 47 47 #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) 48 - #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) 49 - #define FW_FEATURE_CMO ASM_CONST(0x0000000004000000) 48 + #define FW_FEATURE_CMO ASM_CONST(0x0000000002000000) 50 49 51 50 #ifndef __ASSEMBLY__ 52 51 ··· 57 58 FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | 58 59 FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | 59 60 FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | 60 - FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | 61 - FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_CMO, 61 + FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR | 62 + FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | 63 + FW_FEATURE_CMO, 62 64 FW_FEATURE_PSERIES_ALWAYS = 0, 63 65 FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, 64 66 FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR,
+2
arch/powerpc/kernel/cputable.c
··· 711 711 .cpu_setup = __setup_cpu_750, 712 712 .machine_check = machine_check_generic, 713 713 .platform = "ppc750", 714 + .oprofile_cpu_type = "ppc/750", 715 + .oprofile_type = PPC_OPROFILE_G4, 714 716 }, 715 717 { /* 745/755 */ 716 718 .pvr_mask = 0xfffff000,
+1 -2
arch/powerpc/kernel/entry_64.S
··· 1038 1038 * We are in a module using the module's TOC. 1039 1039 * Switch to our TOC to run inside the core kernel. 1040 1040 */ 1041 - LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler) 1042 - ld r2, 8(r4) 1041 + ld r2, PACATOC(r13) 1043 1042 1044 1043 bl .ftrace_return_to_handler 1045 1044 nop
-6
arch/powerpc/kernel/kgdb.c
··· 282 282 { 283 283 unsigned long *ptr = gdb_regs; 284 284 int reg; 285 - #ifdef CONFIG_SPE 286 - union { 287 - u32 v32[2]; 288 - u64 v64; 289 - } acc; 290 - #endif 291 285 292 286 for (reg = 0; reg < 32; reg++) 293 287 UNPACK64(regs->gpr[reg], ptr);
+1 -1
arch/powerpc/kernel/pci-common.c
··· 1190 1190 * Reparent resource children of pr that conflict with res 1191 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 1194 struct resource *res) 1195 1195 { 1196 1196 struct resource *p, **pp;
+7 -3
arch/powerpc/kernel/process.c
··· 1016 1016 #ifdef CONFIG_FUNCTION_GRAPH_TRACER 1017 1017 int curr_frame = current->curr_ret_stack; 1018 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 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 1026 #endif 1023 1027 #endif 1024 1028 ··· 1048 1044 if (!firstframe || ip != lr) { 1049 1045 printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip); 1050 1046 #ifdef CONFIG_FUNCTION_GRAPH_TRACER 1051 - if (ip == addr && curr_frame >= 0) { 1047 + if ((ip == rth || ip == mrth) && curr_frame >= 0) { 1052 1048 printk(" (%pS)", 1053 1049 (void *)current->ret_stack[curr_frame].ret); 1054 1050 curr_frame--;
+1
arch/powerpc/kernel/vmlinux.lds.S
··· 236 236 READ_MOSTLY_DATA(L1_CACHE_BYTES) 237 237 } 238 238 239 + . = ALIGN(PAGE_SIZE); 239 240 .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 240 241 NOSAVE_DATA 241 242 }
+4 -6
arch/powerpc/mm/slb_low.S
··· 72 72 1: 73 73 #endif /* CONFIG_SPARSEMEM_VMEMMAP */ 74 74 75 - /* vmalloc/ioremap mapping encoding bits, the "li" instructions below 76 - * will be patched by the kernel at boot 75 + /* vmalloc mapping gets the encoding from the PACA as the mapping 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 78 clrldi r11,r10,48 81 79 cmpldi r11,(VMALLOC_SIZE >> 28) - 1 82 80 bgt 5f 83 81 lhz r11,PACAVMALLOCSLLP(r13) 84 82 b 6f 85 83 5: 86 - END_FTR_SECTION_IFCLR(CPU_FTR_CI_LARGE_PAGE) 87 - _GLOBAL(slb_miss_kernel_load_io) 84 + /* IO mapping */ 85 + _GLOBAL(slb_miss_kernel_load_io) 88 86 li r11,0 89 87 6: 90 88 BEGIN_FTR_SECTION
+1 -1
arch/powerpc/platforms/cell/axon_msi.c
··· 365 365 printk(KERN_ERR 366 366 "axon_msi: couldn't parse dcr properties on %s\n", 367 367 dn->full_name); 368 - goto out; 368 + goto out_free_msic; 369 369 } 370 370 371 371 msic->dcr_host = dcr_map(dn, dcr_base, dcr_len);
+5 -2
arch/powerpc/platforms/powermac/low_i2c.c
··· 540 540 /* Make sure IRQ is disabled */ 541 541 kw_write_reg(reg_ier, 0); 542 542 543 - /* Request chip interrupt */ 544 - if (request_irq(host->irq, kw_i2c_irq, 0, "keywest i2c", host)) 543 + /* Request chip interrupt. We set IRQF_TIMER because we don't 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 548 host->irq = NO_IRQ; 546 549 547 550 printk(KERN_INFO "KeyWest i2c @0x%08x irq %d %s\n",
+1 -2
arch/powerpc/platforms/pseries/firmware.c
··· 51 51 {FW_FEATURE_VIO, "hcall-vio"}, 52 52 {FW_FEATURE_RDMA, "hcall-rdma"}, 53 53 {FW_FEATURE_LLAN, "hcall-lLAN"}, 54 - {FW_FEATURE_BULK, "hcall-bulk"}, 54 + {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, 55 55 {FW_FEATURE_XDABR, "hcall-xdabr"}, 56 56 {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, 57 57 {FW_FEATURE_SPLPAR, "hcall-splpar"}, 58 - {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, 59 58 }; 60 59 61 60 /* Build up the firmware features bitmask using the contents of
+23 -17
drivers/macintosh/via-pmu.c
··· 405 405 printk(KERN_ERR "via-pmu: can't map interrupt\n"); 406 406 return -ENODEV; 407 407 } 408 - if (request_irq(irq, via_pmu_interrupt, 0, "VIA-PMU", (void *)0)) { 408 + /* We set IRQF_TIMER because we don't want the interrupt to be disabled 409 + * between the 2 passes of driver suspend, we control our own disabling 410 + * for that one 411 + */ 412 + if (request_irq(irq, via_pmu_interrupt, IRQF_TIMER, "VIA-PMU", (void *)0)) { 409 413 printk(KERN_ERR "via-pmu: can't request irq %d\n", irq); 410 414 return -ENODEV; 411 415 } ··· 423 419 gpio_irq = irq_of_parse_and_map(gpio_node, 0); 424 420 425 421 if (gpio_irq != NO_IRQ) { 426 - if (request_irq(gpio_irq, gpio1_interrupt, 0, 422 + if (request_irq(gpio_irq, gpio1_interrupt, IRQF_TIMER, 427 423 "GPIO1 ADB", (void *)0)) 428 424 printk(KERN_ERR "pmu: can't get irq %d" 429 425 " (GPIO1)\n", gpio_irq); ··· 929 925 930 926 #ifdef CONFIG_ADB 931 927 /* Send an ADB command */ 932 - static int 933 - pmu_send_request(struct adb_request *req, int sync) 928 + static int pmu_send_request(struct adb_request *req, int sync) 934 929 { 935 930 int i, ret; 936 931 ··· 1008 1005 } 1009 1006 1010 1007 /* Enable/disable autopolling */ 1011 - static int 1012 - pmu_adb_autopoll(int devs) 1008 + static int __pmu_adb_autopoll(int devs) 1013 1009 { 1014 1010 struct adb_request req; 1015 1011 1016 - if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) 1017 - return -ENXIO; 1018 - 1019 1012 if (devs) { 1020 - adb_dev_map = devs; 1021 1013 pmu_request(&req, NULL, 5, PMU_ADB_CMD, 0, 0x86, 1022 1014 adb_dev_map >> 8, adb_dev_map); 1023 1015 pmu_adb_flags = 2; ··· 1025 1027 return 0; 1026 1028 } 1027 1029 1030 + static int pmu_adb_autopoll(int devs) 1031 + { 1032 + if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) 1033 + return -ENXIO; 1034 + 1035 + adb_dev_map = devs; 1036 + return __pmu_adb_autopoll(devs); 1037 + } 1038 + 1028 1039 /* Reset the ADB bus */ 1029 - static int 1030 - pmu_adb_reset_bus(void) 1040 + static int pmu_adb_reset_bus(void) 1031 1041 { 1032 1042 struct adb_request req; 1033 1043 int save_autopoll = adb_dev_map; ··· 1044 1038 return -ENXIO; 1045 1039 1046 1040 /* anyone got a better idea?? */ 1047 - pmu_adb_autopoll(0); 1041 + __pmu_adb_autopoll(0); 1048 1042 1049 - req.nbytes = 5; 1043 + req.nbytes = 4; 1050 1044 req.done = NULL; 1051 1045 req.data[0] = PMU_ADB_CMD; 1052 - req.data[1] = 0; 1053 - req.data[2] = ADB_BUSRESET; 1046 + req.data[1] = ADB_BUSRESET; 1047 + req.data[2] = 0; 1054 1048 req.data[3] = 0; 1055 1049 req.data[4] = 0; 1056 1050 req.reply_len = 0; ··· 1062 1056 pmu_wait_complete(&req); 1063 1057 1064 1058 if (save_autopoll != 0) 1065 - pmu_adb_autopoll(save_autopoll); 1059 + __pmu_adb_autopoll(save_autopoll); 1066 1060 1067 1061 return 0; 1068 1062 }