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

Merge branch '4.11-fixes' into mips-for-linux-next

+56 -26
+3 -3
arch/mips/Makefile
··· 489 489 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ 490 490 -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ \ 491 491 $(foreach board,$(BOARDS),$(generic_config_dir)/board-$(board).config) 492 - $(Q)$(MAKE) olddefconfig 492 + $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig 493 493 494 494 # 495 495 # Prevent generic merge_config rules attempting to merge single fragments ··· 503 503 # 504 504 .PHONY: sead3_defconfig 505 505 sead3_defconfig: 506 - $(Q)$(MAKE) 32r2el_defconfig BOARDS=sead-3 506 + $(Q)$(MAKE) -f $(srctree)/Makefile 32r2el_defconfig BOARDS=sead-3 507 507 508 508 .PHONY: sead3micro_defconfig 509 509 sead3micro_defconfig: 510 - $(Q)$(MAKE) micro32r2el_defconfig BOARDS=sead-3 510 + $(Q)$(MAKE) -f $(srctree)/Makefile micro32r2el_defconfig BOARDS=sead-3
+1
arch/mips/include/asm/asm-prototypes.h
··· 3 3 #include <asm/fpu.h> 4 4 #include <asm-generic/asm-prototypes.h> 5 5 #include <asm/uaccess.h> 6 + #include <asm/ftrace.h>
+1 -1
arch/mips/kernel/cevt-r4k.c
··· 80 80 } 81 81 82 82 /* Sorted insert of 75th percentile into buf2 */ 83 - for (k = 0; k < i; ++k) { 83 + for (k = 0; k < i && k < ARRAY_SIZE(buf2); ++k) { 84 84 if (buf1[ARRAY_SIZE(buf1) - 1] < buf2[k]) { 85 85 l = min_t(unsigned int, 86 86 i, ARRAY_SIZE(buf2) - 1);
+1 -1
arch/mips/kernel/elf.c
··· 257 257 else if ((prog_req.fr1 && prog_req.frdefault) || 258 258 (prog_req.single && !prog_req.frdefault)) 259 259 /* Make sure 64-bit MIPS III/IV/64R1 will not pick FR1 */ 260 - state->overall_fp_mode = ((current_cpu_data.fpu_id & MIPS_FPIR_F64) && 260 + state->overall_fp_mode = ((raw_current_cpu_data.fpu_id & MIPS_FPIR_F64) && 261 261 cpu_has_mips_r2_r6) ? 262 262 FP_FR1 : FP_FR0; 263 263 else if (prog_req.fr1)
+32 -14
arch/mips/kernel/kgdb.c
··· 244 244 void sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *p) 245 245 { 246 246 int reg; 247 - struct thread_info *ti = task_thread_info(p); 248 - unsigned long ksp = (unsigned long)ti + THREAD_SIZE - 32; 249 - struct pt_regs *regs = (struct pt_regs *)ksp - 1; 250 247 #if (KGDB_GDB_REG_SIZE == 32) 251 248 u32 *ptr = (u32 *)gdb_regs; 252 249 #else ··· 251 254 #endif 252 255 253 256 for (reg = 0; reg < 16; reg++) 254 - *(ptr++) = regs->regs[reg]; 257 + *(ptr++) = 0; 255 258 256 259 /* S0 - S7 */ 257 - for (reg = 16; reg < 24; reg++) 258 - *(ptr++) = regs->regs[reg]; 260 + *(ptr++) = p->thread.reg16; 261 + *(ptr++) = p->thread.reg17; 262 + *(ptr++) = p->thread.reg18; 263 + *(ptr++) = p->thread.reg19; 264 + *(ptr++) = p->thread.reg20; 265 + *(ptr++) = p->thread.reg21; 266 + *(ptr++) = p->thread.reg22; 267 + *(ptr++) = p->thread.reg23; 259 268 260 269 for (reg = 24; reg < 28; reg++) 261 270 *(ptr++) = 0; 262 271 263 272 /* GP, SP, FP, RA */ 264 - for (reg = 28; reg < 32; reg++) 265 - *(ptr++) = regs->regs[reg]; 273 + *(ptr++) = (long)p; 274 + *(ptr++) = p->thread.reg29; 275 + *(ptr++) = p->thread.reg30; 276 + *(ptr++) = p->thread.reg31; 266 277 267 - *(ptr++) = regs->cp0_status; 268 - *(ptr++) = regs->lo; 269 - *(ptr++) = regs->hi; 270 - *(ptr++) = regs->cp0_badvaddr; 271 - *(ptr++) = regs->cp0_cause; 272 - *(ptr++) = regs->cp0_epc; 278 + *(ptr++) = p->thread.cp0_status; 279 + 280 + /* lo, hi */ 281 + *(ptr++) = 0; 282 + *(ptr++) = 0; 283 + 284 + /* 285 + * BadVAddr, Cause 286 + * Ideally these would come from the last exception frame up the stack 287 + * but that requires unwinding, otherwise we can't know much for sure. 288 + */ 289 + *(ptr++) = 0; 290 + *(ptr++) = 0; 291 + 292 + /* 293 + * PC 294 + * use return address (RA), i.e. the moment after return from resume() 295 + */ 296 + *(ptr++) = p->thread.reg31; 273 297 } 274 298 275 299 void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)
+5 -4
arch/mips/kernel/perf_event_mipsxx.c
··· 1446 1446 HANDLE_COUNTER(0) 1447 1447 } 1448 1448 1449 + #ifdef CONFIG_MIPS_PERF_SHARED_TC_COUNTERS 1450 + read_unlock(&pmuint_rwlock); 1451 + #endif 1452 + resume_local_counters(); 1453 + 1449 1454 /* 1450 1455 * Do all the work for the pending perf events. We can do this 1451 1456 * in here because the performance counter interrupt is a regular ··· 1459 1454 if (handled == IRQ_HANDLED) 1460 1455 irq_work_run(); 1461 1456 1462 - #ifdef CONFIG_MIPS_PERF_SHARED_TC_COUNTERS 1463 - read_unlock(&pmuint_rwlock); 1464 - #endif 1465 - resume_local_counters(); 1466 1457 return handled; 1467 1458 } 1468 1459
+1 -1
arch/mips/kernel/relocate.c
··· 18 18 #include <linux/kernel.h> 19 19 #include <linux/libfdt.h> 20 20 #include <linux/of_fdt.h> 21 - #include <linux/sched.h> 21 + #include <linux/sched/task.h> 22 22 #include <linux/start_kernel.h> 23 23 #include <linux/string.h> 24 24 #include <linux/printk.h>
+1 -2
arch/mips/kernel/smp-cps.c
··· 422 422 local_irq_disable(); 423 423 idle_task_exit(); 424 424 cpu = smp_processor_id(); 425 + core = cpu_data[cpu].core; 425 426 cpu_death = CPU_DEATH_POWER; 426 427 427 428 pr_debug("CPU%d going offline\n", cpu); 428 429 429 430 if (cpu_has_mipsmt || cpu_has_vp) { 430 - core = cpu_data[cpu].core; 431 - 432 431 /* Look for another online VPE within the core */ 433 432 for_each_online_cpu(cpu_death_sibling) { 434 433 if (cpu_data[cpu_death_sibling].core != core)
+11
arch/mips/mti-malta/malta-int.c
··· 176 176 { 177 177 int corehi_irq; 178 178 179 + /* 180 + * Preallocate the i8259's expected virq's here. Since irqchip_init() 181 + * will probe the irqchips in hierarchial order, i8259 is probed last. 182 + * If anything allocates a virq before the i8259 is probed, it will 183 + * be given one of the i8259's expected range and consequently setup 184 + * of the i8259 will fail. 185 + */ 186 + WARN(irq_alloc_descs(I8259A_IRQ_BASE, I8259A_IRQ_BASE, 187 + 16, numa_node_id()) < 0, 188 + "Cannot reserve i8259 virqs at IRQ%d\n", I8259A_IRQ_BASE); 189 + 179 190 i8259_set_poll(mips_pcibios_iack); 180 191 irqchip_init(); 181 192