Commit b7a42146 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'mips_fixes_5.1_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Paul Burton:
 "A small batch of MIPS fixes for 5.1:

   - An interrupt masking fix for Loongson-based Lemote 2F systems
     (fixing a regression from v3.19)

   - A relocation fix for configurations in which the devicetree is
     stored in an ELF section (fixing a regression from v4.7)

   - Fix jump labels for MIPSr6 kernels where they previously could
     inadvertently place a control transfer instruction in a forbidden
     slot & take unexpected exceptions (fixing MIPSr6 support added in
     v4.0)

   - Extend an existing USB power workaround for the Netgear WNDR3400 to
     v2 boards in addition to the v3 ones that already used it

   - Remove the custom MIPS32 definition of __kernel_fsid_t to make it
     consistent with MIPS64 & every other architecture, in particular
     resolving issues for code which tries to print the val field whose
     type previously differed (though had identical memory layout)"

* tag 'mips_fixes_5.1_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: Remove custom MIPS32 __kernel_fsid_t type
  mips: bcm47xx: Enable USB power on Netgear WNDR3400v2
  MIPS: Fix kernel crash for R6 in jump label branch function
  MIPS: Ensure ELF appended dtb is relocated
  mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction.
parents 01c8d803 f6cab793
...@@ -24,6 +24,7 @@ void __init bcm47xx_workarounds(void) ...@@ -24,6 +24,7 @@ void __init bcm47xx_workarounds(void)
case BCM47XX_BOARD_NETGEAR_WNR3500L: case BCM47XX_BOARD_NETGEAR_WNR3500L:
bcm47xx_workarounds_enable_usb_power(12); bcm47xx_workarounds_enable_usb_power(12);
break; break;
case BCM47XX_BOARD_NETGEAR_WNDR3400V2:
case BCM47XX_BOARD_NETGEAR_WNDR3400_V3: case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
bcm47xx_workarounds_enable_usb_power(21); bcm47xx_workarounds_enable_usb_power(21);
break; break;
......
...@@ -21,15 +21,15 @@ ...@@ -21,15 +21,15 @@
#endif #endif
#ifdef CONFIG_CPU_MICROMIPS #ifdef CONFIG_CPU_MICROMIPS
#define NOP_INSN "nop32" #define B_INSN "b32"
#else #else
#define NOP_INSN "nop" #define B_INSN "b"
#endif #endif
static __always_inline bool arch_static_branch(struct static_key *key, bool branch) static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
{ {
asm_volatile_goto("1:\t" NOP_INSN "\n\t" asm_volatile_goto("1:\t" B_INSN " 2f\n\t"
"nop\n\t" "2:\tnop\n\t"
".pushsection __jump_table, \"aw\"\n\t" ".pushsection __jump_table, \"aw\"\n\t"
WORD_INSN " 1b, %l[l_yes], %0\n\t" WORD_INSN " 1b, %l[l_yes], %0\n\t"
".popsection\n\t" ".popsection\n\t"
......
...@@ -21,13 +21,6 @@ ...@@ -21,13 +21,6 @@
typedef long __kernel_daddr_t; typedef long __kernel_daddr_t;
#define __kernel_daddr_t __kernel_daddr_t #define __kernel_daddr_t __kernel_daddr_t
#if (_MIPS_SZLONG == 32)
typedef struct {
long val[2];
} __kernel_fsid_t;
#define __kernel_fsid_t __kernel_fsid_t
#endif
#include <asm-generic/posix_types.h> #include <asm-generic/posix_types.h>
#endif /* _ASM_POSIX_TYPES_H */ #endif /* _ASM_POSIX_TYPES_H */
...@@ -140,6 +140,13 @@ SECTIONS ...@@ -140,6 +140,13 @@ SECTIONS
PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT) PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
#endif #endif
#ifdef CONFIG_MIPS_ELF_APPENDED_DTB
.appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
*(.appended_dtb)
KEEP(*(.appended_dtb))
}
#endif
#ifdef CONFIG_RELOCATABLE #ifdef CONFIG_RELOCATABLE
. = ALIGN(4); . = ALIGN(4);
...@@ -164,11 +171,6 @@ SECTIONS ...@@ -164,11 +171,6 @@ SECTIONS
__appended_dtb = .; __appended_dtb = .;
/* leave space for appended DTB */ /* leave space for appended DTB */
. += 0x100000; . += 0x100000;
#elif defined(CONFIG_MIPS_ELF_APPENDED_DTB)
.appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
*(.appended_dtb)
KEEP(*(.appended_dtb))
}
#endif #endif
/* /*
* Align to 64K in attempt to eliminate holes before the * Align to 64K in attempt to eliminate holes before the
......
...@@ -103,7 +103,7 @@ static struct irqaction ip6_irqaction = { ...@@ -103,7 +103,7 @@ static struct irqaction ip6_irqaction = {
static struct irqaction cascade_irqaction = { static struct irqaction cascade_irqaction = {
.handler = no_action, .handler = no_action,
.name = "cascade", .name = "cascade",
.flags = IRQF_NO_THREAD, .flags = IRQF_NO_THREAD | IRQF_NO_SUSPEND,
}; };
void __init mach_init_irq(void) void __init mach_init_irq(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment