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

Merge branch 'merge' into next

Bring in some important fixes from the 3.16 branch

+40 -14
+1
arch/powerpc/include/asm/cputable.h
··· 447 447 CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \ 448 448 CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP) 449 449 #define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG) 450 + #define CPU_FTRS_POWER8_DD1 (CPU_FTRS_POWER8 & ~CPU_FTR_DBELL) 450 451 #define CPU_FTRS_CELL (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 451 452 CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 452 453 CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
+2 -1
arch/powerpc/include/asm/mmu-hash64.h
··· 22 22 */ 23 23 #include <asm/pgtable-ppc64.h> 24 24 #include <asm/bug.h> 25 + #include <asm/processor.h> 25 26 26 27 /* 27 28 * Segment table ··· 497 496 */ 498 497 struct subpage_prot_table { 499 498 unsigned long maxaddr; /* only addresses < this are protected */ 500 - unsigned int **protptrs[2]; 499 + unsigned int **protptrs[(TASK_SIZE_USER64 >> 43)]; 501 500 unsigned int *low_prot[4]; 502 501 }; 503 502
+20
arch/powerpc/kernel/cputable.c
··· 527 527 .machine_check_early = __machine_check_early_realmode_p8, 528 528 .platform = "power8", 529 529 }, 530 + { /* Power8 DD1: Does not support doorbell IPIs */ 531 + .pvr_mask = 0xffffff00, 532 + .pvr_value = 0x004d0100, 533 + .cpu_name = "POWER8 (raw)", 534 + .cpu_features = CPU_FTRS_POWER8_DD1, 535 + .cpu_user_features = COMMON_USER_POWER8, 536 + .cpu_user_features2 = COMMON_USER2_POWER8, 537 + .mmu_features = MMU_FTRS_POWER8, 538 + .icache_bsize = 128, 539 + .dcache_bsize = 128, 540 + .num_pmcs = 6, 541 + .pmc_type = PPC_PMC_IBM, 542 + .oprofile_cpu_type = "ppc64/power8", 543 + .oprofile_type = PPC_OPROFILE_INVALID, 544 + .cpu_setup = __setup_cpu_power8, 545 + .cpu_restore = __restore_cpu_power8, 546 + .flush_tlb = __flush_tlb_power8, 547 + .machine_check_early = __machine_check_early_realmode_p8, 548 + .platform = "power8", 549 + }, 530 550 { /* Power8 */ 531 551 .pvr_mask = 0xffff0000, 532 552 .pvr_value = 0x004d0000,
+4 -2
arch/powerpc/kernel/rtas_flash.c
··· 611 611 for (f = flist; f; f = next) { 612 612 /* Translate data addrs to absolute */ 613 613 for (i = 0; i < f->num_blocks; i++) { 614 - f->blocks[i].data = (char *)__pa(f->blocks[i].data); 614 + f->blocks[i].data = (char *)cpu_to_be64(__pa(f->blocks[i].data)); 615 615 image_size += f->blocks[i].length; 616 + f->blocks[i].length = cpu_to_be64(f->blocks[i].length); 616 617 } 617 618 next = f->next; 618 619 /* Don't translate NULL pointer for last entry */ 619 620 if (f->next) 620 - f->next = (struct flash_block_list *)__pa(f->next); 621 + f->next = (struct flash_block_list *)cpu_to_be64(__pa(f->next)); 621 622 else 622 623 f->next = NULL; 623 624 /* make num_blocks into the version/length field */ 624 625 f->num_blocks = (FLASH_BLOCK_LIST_VERSION << 56) | ((f->num_blocks+1)*16); 626 + f->num_blocks = cpu_to_be64(f->num_blocks); 625 627 } 626 628 627 629 printk(KERN_ALERT "FLASH: flash image is %ld bytes\n", image_size);
+1 -1
arch/powerpc/lib/mem_64.S
··· 77 77 stb r4,0(r6) 78 78 blr 79 79 80 - _GLOBAL(memmove) 80 + _GLOBAL_TOC(memmove) 81 81 cmplw 0,r3,r4 82 82 bgt backwards_memcpy 83 83 b memcpy
+5 -5
arch/powerpc/lib/sstep.c
··· 1198 1198 sh = regs->gpr[rb] & 0x3f; 1199 1199 ival = (signed int) regs->gpr[rd]; 1200 1200 regs->gpr[ra] = ival >> (sh < 32 ? sh : 31); 1201 - if (ival < 0 && (sh >= 32 || (ival & ((1 << sh) - 1)) != 0)) 1201 + if (ival < 0 && (sh >= 32 || (ival & ((1ul << sh) - 1)) != 0)) 1202 1202 regs->xer |= XER_CA; 1203 1203 else 1204 1204 regs->xer &= ~XER_CA; ··· 1208 1208 sh = rb; 1209 1209 ival = (signed int) regs->gpr[rd]; 1210 1210 regs->gpr[ra] = ival >> sh; 1211 - if (ival < 0 && (ival & ((1 << sh) - 1)) != 0) 1211 + if (ival < 0 && (ival & ((1ul << sh) - 1)) != 0) 1212 1212 regs->xer |= XER_CA; 1213 1213 else 1214 1214 regs->xer &= ~XER_CA; ··· 1216 1216 1217 1217 #ifdef __powerpc64__ 1218 1218 case 27: /* sld */ 1219 - sh = regs->gpr[rd] & 0x7f; 1219 + sh = regs->gpr[rb] & 0x7f; 1220 1220 if (sh < 64) 1221 1221 regs->gpr[ra] = regs->gpr[rd] << sh; 1222 1222 else ··· 1235 1235 sh = regs->gpr[rb] & 0x7f; 1236 1236 ival = (signed long int) regs->gpr[rd]; 1237 1237 regs->gpr[ra] = ival >> (sh < 64 ? sh : 63); 1238 - if (ival < 0 && (sh >= 64 || (ival & ((1 << sh) - 1)) != 0)) 1238 + if (ival < 0 && (sh >= 64 || (ival & ((1ul << sh) - 1)) != 0)) 1239 1239 regs->xer |= XER_CA; 1240 1240 else 1241 1241 regs->xer &= ~XER_CA; ··· 1246 1246 sh = rb | ((instr & 2) << 4); 1247 1247 ival = (signed long int) regs->gpr[rd]; 1248 1248 regs->gpr[ra] = ival >> sh; 1249 - if (ival < 0 && (ival & ((1 << sh) - 1)) != 0) 1249 + if (ival < 0 && (ival & ((1ul << sh) - 1)) != 0) 1250 1250 regs->xer |= XER_CA; 1251 1251 else 1252 1252 regs->xer &= ~XER_CA;
+3 -3
arch/powerpc/perf/core-book3s.c
··· 1307 1307 out_enable: 1308 1308 pmao_restore_workaround(ebb); 1309 1309 1310 + if (ppmu->flags & PPMU_ARCH_207S) 1311 + mtspr(SPRN_MMCR2, 0); 1312 + 1310 1313 mmcr0 = ebb_switch_in(ebb, cpuhw->mmcr[0]); 1311 1314 1312 1315 mb(); ··· 1317 1314 ppmu->config_bhrb(cpuhw->bhrb_filter); 1318 1315 1319 1316 write_mmcr0(cpuhw, mmcr0); 1320 - 1321 - if (ppmu->flags & PPMU_ARCH_207S) 1322 - mtspr(SPRN_MMCR2, 0); 1323 1317 1324 1318 /* 1325 1319 * Enable instruction sampling if necessary
+2 -2
arch/powerpc/platforms/powernv/opal-elog.c
··· 249 249 250 250 rc = opal_get_elog_size(&id, &size, &type); 251 251 if (rc != OPAL_SUCCESS) { 252 - pr_err("ELOG: Opal log read failed\n"); 252 + pr_err("ELOG: OPAL log info read failed\n"); 253 253 return; 254 254 } 255 255 ··· 257 257 log_id = be64_to_cpu(id); 258 258 elog_type = be64_to_cpu(type); 259 259 260 - BUG_ON(elog_size > OPAL_MAX_ERRLOG_SIZE); 260 + WARN_ON(elog_size > OPAL_MAX_ERRLOG_SIZE); 261 261 262 262 if (elog_size >= OPAL_MAX_ERRLOG_SIZE) 263 263 elog_size = OPAL_MAX_ERRLOG_SIZE;
+1
arch/powerpc/platforms/pseries/dlpar.c
··· 86 86 } 87 87 88 88 of_node_set_flag(dn, OF_DYNAMIC); 89 + of_node_init(dn); 89 90 90 91 return dn; 91 92 }
+1
arch/powerpc/platforms/pseries/reconfig.c
··· 69 69 70 70 np->properties = proplist; 71 71 of_node_set_flag(np, OF_DYNAMIC); 72 + of_node_init(np); 72 73 73 74 np->parent = derive_parent(path); 74 75 if (IS_ERR(np->parent)) {