diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-06 11:28:54 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-06 11:28:54 -0500 |
| commit | dbf3b7ddbaaf65c7da9b99a686b25fd06fd75073 (patch) | |
| tree | 42436f3c16b02d8980da77b101928cd73e082bfe | |
| parent | 9d82f5eb3376cbae96ad36a063a9390de1694546 (diff) | |
| parent | 1b6af71a8f50f59a96f65ad90e4d20612d2a2526 (diff) | |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS fixes from Ralf Baechle:
"The pending MIPS fixes for 3.19. All across the field and nothing
particularly severe or dramatic"
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (23 commits)
IRQCHIP: mips-gic: Avoid rerouting timer IRQs for smp-cmp
MIPS: Fix syscall_get_nr for the syscall exit tracing.
MIPS: elf2ecoff: Ignore PT_MIPS_ABIFLAGS program headers.
MIPS: elf2ecoff: Rewrite main processing loop to switch.
MIPS: fork: Fix MSA/FPU/DSP context duplication race
MIPS: Fix C0_Pagegrain[IEC] support.
MIPS: traps: Fix inline asm ctc1 missing .set hardfloat
MIPS: mipsregs.h: Add write_32bit_cp1_register()
MIPS: Fix kernel lockup or crash after CPU offline/online
MIPS: OCTEON: fix kernel crash when offlining a CPU
MIPS: ARC: Fix build error.
MIPS: IRQ: Fix disable_irq on CPU IRQs
MIPS: smp-mt,smp-cmp: Enable all HW IRQs on secondary CPUs
MIPS: Fix restart of indirect syscalls
MIPS: ELF: fix loading o32 binaries on 64-bit kernels
MIPS: mips-cm: Fix sparse warnings
MIPS: Kconfig: Fix recursive dependency.
MIPS: Compat: Fix build error if CONFIG_MIPS32_COMPAT but no compat ABI.
MIPS: JZ4740: Fixup #include's (sparse)
MIPS: Wire up execveat(2).
...
26 files changed, 186 insertions, 111 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 3289969ee423..843713c05b79 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
| @@ -2656,27 +2656,21 @@ config TRAD_SIGNALS | |||
| 2656 | bool | 2656 | bool |
| 2657 | 2657 | ||
| 2658 | config MIPS32_COMPAT | 2658 | config MIPS32_COMPAT |
| 2659 | bool "Kernel support for Linux/MIPS 32-bit binary compatibility" | 2659 | bool |
| 2660 | depends on 64BIT | ||
| 2661 | help | ||
| 2662 | Select this option if you want Linux/MIPS 32-bit binary | ||
| 2663 | compatibility. Since all software available for Linux/MIPS is | ||
| 2664 | currently 32-bit you should say Y here. | ||
| 2665 | 2660 | ||
| 2666 | config COMPAT | 2661 | config COMPAT |
| 2667 | bool | 2662 | bool |
| 2668 | depends on MIPS32_COMPAT | ||
| 2669 | select ARCH_WANT_OLD_COMPAT_IPC | ||
| 2670 | default y | ||
| 2671 | 2663 | ||
| 2672 | config SYSVIPC_COMPAT | 2664 | config SYSVIPC_COMPAT |
| 2673 | bool | 2665 | bool |
| 2674 | depends on COMPAT && SYSVIPC | ||
| 2675 | default y | ||
| 2676 | 2666 | ||
| 2677 | config MIPS32_O32 | 2667 | config MIPS32_O32 |
| 2678 | bool "Kernel support for o32 binaries" | 2668 | bool "Kernel support for o32 binaries" |
| 2679 | depends on MIPS32_COMPAT | 2669 | depends on 64BIT |
| 2670 | select ARCH_WANT_OLD_COMPAT_IPC | ||
| 2671 | select COMPAT | ||
| 2672 | select MIPS32_COMPAT | ||
| 2673 | select SYSVIPC_COMPAT if SYSVIPC | ||
| 2680 | help | 2674 | help |
| 2681 | Select this option if you want to run o32 binaries. These are pure | 2675 | Select this option if you want to run o32 binaries. These are pure |
| 2682 | 32-bit binaries as used by the 32-bit Linux/MIPS port. Most of | 2676 | 32-bit binaries as used by the 32-bit Linux/MIPS port. Most of |
| @@ -2686,7 +2680,10 @@ config MIPS32_O32 | |||
| 2686 | 2680 | ||
| 2687 | config MIPS32_N32 | 2681 | config MIPS32_N32 |
| 2688 | bool "Kernel support for n32 binaries" | 2682 | bool "Kernel support for n32 binaries" |
| 2689 | depends on MIPS32_COMPAT | 2683 | depends on 64BIT |
| 2684 | select COMPAT | ||
| 2685 | select MIPS32_COMPAT | ||
| 2686 | select SYSVIPC_COMPAT if SYSVIPC | ||
| 2690 | help | 2687 | help |
| 2691 | Select this option if you want to run n32 binaries. These are | 2688 | Select this option if you want to run n32 binaries. These are |
| 2692 | 64-bit binaries using 32-bit quantities for addressing and certain | 2689 | 64-bit binaries using 32-bit quantities for addressing and certain |
diff --git a/arch/mips/boot/elf2ecoff.c b/arch/mips/boot/elf2ecoff.c index 8585078ae50e..2a4c52e27f41 100644 --- a/arch/mips/boot/elf2ecoff.c +++ b/arch/mips/boot/elf2ecoff.c | |||
| @@ -49,7 +49,8 @@ | |||
| 49 | /* | 49 | /* |
| 50 | * Some extra ELF definitions | 50 | * Some extra ELF definitions |
| 51 | */ | 51 | */ |
| 52 | #define PT_MIPS_REGINFO 0x70000000 /* Register usage information */ | 52 | #define PT_MIPS_REGINFO 0x70000000 /* Register usage information */ |
| 53 | #define PT_MIPS_ABIFLAGS 0x70000003 /* Records ABI related flags */ | ||
| 53 | 54 | ||
| 54 | /* -------------------------------------------------------------------- */ | 55 | /* -------------------------------------------------------------------- */ |
| 55 | 56 | ||
| @@ -349,39 +350,46 @@ int main(int argc, char *argv[]) | |||
| 349 | 350 | ||
| 350 | for (i = 0; i < ex.e_phnum; i++) { | 351 | for (i = 0; i < ex.e_phnum; i++) { |
| 351 | /* Section types we can ignore... */ | 352 | /* Section types we can ignore... */ |
| 352 | if (ph[i].p_type == PT_NULL || ph[i].p_type == PT_NOTE || | 353 | switch (ph[i].p_type) { |
| 353 | ph[i].p_type == PT_PHDR | 354 | case PT_NULL: |
| 354 | || ph[i].p_type == PT_MIPS_REGINFO) | 355 | case PT_NOTE: |
| 356 | case PT_PHDR: | ||
| 357 | case PT_MIPS_REGINFO: | ||
| 358 | case PT_MIPS_ABIFLAGS: | ||
| 355 | continue; | 359 | continue; |
| 356 | /* Section types we can't handle... */ | ||
| 357 | else if (ph[i].p_type != PT_LOAD) { | ||
| 358 | fprintf(stderr, | ||
| 359 | "Program header %d type %d can't be converted.\n", | ||
| 360 | ex.e_phnum, ph[i].p_type); | ||
| 361 | exit(1); | ||
| 362 | } | ||
| 363 | /* Writable (data) segment? */ | ||
| 364 | if (ph[i].p_flags & PF_W) { | ||
| 365 | struct sect ndata, nbss; | ||
| 366 | 360 | ||
| 367 | ndata.vaddr = ph[i].p_vaddr; | 361 | case PT_LOAD: |
| 368 | ndata.len = ph[i].p_filesz; | 362 | /* Writable (data) segment? */ |
| 369 | nbss.vaddr = ph[i].p_vaddr + ph[i].p_filesz; | 363 | if (ph[i].p_flags & PF_W) { |
| 370 | nbss.len = ph[i].p_memsz - ph[i].p_filesz; | 364 | struct sect ndata, nbss; |
| 365 | |||
| 366 | ndata.vaddr = ph[i].p_vaddr; | ||
| 367 | ndata.len = ph[i].p_filesz; | ||
| 368 | nbss.vaddr = ph[i].p_vaddr + ph[i].p_filesz; | ||
| 369 | nbss.len = ph[i].p_memsz - ph[i].p_filesz; | ||
| 371 | 370 | ||
| 372 | combine(&data, &ndata, 0); | 371 | combine(&data, &ndata, 0); |
| 373 | combine(&bss, &nbss, 1); | 372 | combine(&bss, &nbss, 1); |
| 374 | } else { | 373 | } else { |
| 375 | struct sect ntxt; | 374 | struct sect ntxt; |
| 376 | 375 | ||
| 377 | ntxt.vaddr = ph[i].p_vaddr; | 376 | ntxt.vaddr = ph[i].p_vaddr; |
| 378 | ntxt.len = ph[i].p_filesz; | 377 | ntxt.len = ph[i].p_filesz; |
| 379 | 378 | ||
| 380 | combine(&text, &ntxt, 0); | 379 | combine(&text, &ntxt, 0); |
| 380 | } | ||
| 381 | /* Remember the lowest segment start address. */ | ||
| 382 | if (ph[i].p_vaddr < cur_vma) | ||
| 383 | cur_vma = ph[i].p_vaddr; | ||
| 384 | break; | ||
| 385 | |||
| 386 | default: | ||
| 387 | /* Section types we can't handle... */ | ||
| 388 | fprintf(stderr, | ||
| 389 | "Program header %d type %d can't be converted.\n", | ||
| 390 | ex.e_phnum, ph[i].p_type); | ||
| 391 | exit(1); | ||
| 381 | } | 392 | } |
| 382 | /* Remember the lowest segment start address. */ | ||
| 383 | if (ph[i].p_vaddr < cur_vma) | ||
| 384 | cur_vma = ph[i].p_vaddr; | ||
| 385 | } | 393 | } |
| 386 | 394 | ||
| 387 | /* Sections must be in order to be converted... */ | 395 | /* Sections must be in order to be converted... */ |
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c index ecd903dd1c45..8b1eeffa12ed 100644 --- a/arch/mips/cavium-octeon/smp.c +++ b/arch/mips/cavium-octeon/smp.c | |||
| @@ -240,9 +240,7 @@ static int octeon_cpu_disable(void) | |||
| 240 | 240 | ||
| 241 | set_cpu_online(cpu, false); | 241 | set_cpu_online(cpu, false); |
| 242 | cpu_clear(cpu, cpu_callin_map); | 242 | cpu_clear(cpu, cpu_callin_map); |
| 243 | local_irq_disable(); | ||
| 244 | octeon_fixup_irqs(); | 243 | octeon_fixup_irqs(); |
| 245 | local_irq_enable(); | ||
| 246 | 244 | ||
| 247 | flush_cache_all(); | 245 | flush_cache_all(); |
| 248 | local_flush_tlb_all(); | 246 | local_flush_tlb_all(); |
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig index f57b96dcf7df..61a4460d67d3 100644 --- a/arch/mips/configs/malta_defconfig +++ b/arch/mips/configs/malta_defconfig | |||
| @@ -132,7 +132,6 @@ CONFIG_IP_NF_MATCH_ECN=m | |||
| 132 | CONFIG_IP_NF_MATCH_TTL=m | 132 | CONFIG_IP_NF_MATCH_TTL=m |
| 133 | CONFIG_IP_NF_FILTER=m | 133 | CONFIG_IP_NF_FILTER=m |
| 134 | CONFIG_IP_ | ||
