1. 31 1月, 2015 1 次提交
    • J
      MIPS: traps: Fix inline asm ctc1 missing .set hardfloat · d76e9b9f
      James Hogan 提交于
      Commit 842dfc11 ("MIPS: Fix build with binutils 2.24.51+") in v3.18
      enabled -msoft-float and sprinkled ".set hardfloat" where necessary to
      use FP instructions. However it missed enable_restore_fp_context() which
      since v3.17 does a ctc1 with inline assembly, causing the following
      assembler errors on Mentor's 2014.05 toolchain:
      
      {standard input}: Assembler messages:
      {standard input}:2913: Error: opcode not supported on this processor: mips32r2 (mips32r2) `ctc1 $2,$31'
      scripts/Makefile.build:257: recipe for target 'arch/mips/kernel/traps.o' failed
      
      Fix that to use the new write_32bit_cp1_register() macro so that ".set
      hardfloat" is automatically added when -msoft-float is in use.
      
      Fixes 842dfc11 ("MIPS: Fix build with binutils 2.24.51+")
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: <stable@vger.kernel.org> # 3.18+, depends on "MIPS: mipsregs.h: Add write_32bit_cp1_register()"
      Patchwork: https://patchwork.linux-mips.org/patch/9173/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      d76e9b9f
  2. 30 1月, 2015 1 次提交
  3. 16 1月, 2015 3 次提交
    • F
      MIPS: IRQ: Fix disable_irq on CPU IRQs · a3e6c1ef
      Felix Fietkau 提交于
      If the irq_chip does not define .irq_disable, any call to disable_irq
      will defer disabling the IRQ until it fires while marked as disabled.
      This assumes that the handler function checks for this condition, which
      handle_percpu_irq does not. In this case, calling disable_irq leads to
      an IRQ storm, if the interrupt fires while disabled.
      
      This optimization is only useful when disabling the IRQ is slow, which
      is not true for the MIPS CPU IRQ.
      
      Disable this optimization by implementing .irq_disable and .irq_enable
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Cc: stable@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/8949/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      a3e6c1ef
    • J
      MIPS: smp-mt,smp-cmp: Enable all HW IRQs on secondary CPUs · c3f134fb
      James Hogan 提交于
      Commit 18743d27 ("irqchip: mips-gic: Stop using per-platform mapping
      tables") in v3.19-rc1 changed the routing of IPIs through the GIC to go
      to the HW0 IRQ pin along with the rest of the GIC interrupts, rather
      than to HW1 and HW2 pins.
      
      This breaks SMP boot using the CMP or MT SMP implementations because HW0
      doesn't get unmasked when secondary CPUs are initialised so the IPIs
      will never interrupt secondary CPUs (nor any other interrupts routed
      through the GIC).
      
      Commit ff1e29ad ("MIPS: smp-cps: Enable all hardware interrupts on
      secondary CPUs") fixed this in advance for the CPS SMP implementation by
      unmasking all hardware interrupt lines for secondary CPUs, so lets do
      the same for the CMP and MT implementations.
      
      Fixes: 18743d27 ("irqchip: mips-gic: Stop using per-platform mapping tables")
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: Qais Yousef <qais.yousef@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/9025/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      c3f134fb
    • E
      MIPS: Fix restart of indirect syscalls · e967ef02
      Ed Swierk 提交于
      When 32-bit MIPS userspace invokes a syscall indirectly via syscall(number,
      arg1, ..., arg7), the kernel looks up the actual syscall based on the given
      number, shifts the other arguments to the left, and jumps to the syscall.
      
      If the syscall is interrupted by a signal and indicates it needs to be
      restarted by the kernel (by returning ERESTARTNOINTR for example), the
      syscall must be called directly, since the number is no longer the first
      argument, and the other arguments are now staged for a direct call.
      
      Before shifting the arguments, store the syscall number in pt_regs->regs[2].
      This gets copied temporarily into pt_regs->regs[0] after the syscall returns.
      If the syscall needs to be restarted, handle_signal()/do_signal() copies the
      number back to pt_regs->reg[2], which ends up in $v0 once control returns to
      userspace.
      Signed-off-by: NEd Swierk <eswierk@skyportsystems.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/8929/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e967ef02
  4. 15 1月, 2015 1 次提交
  5. 13 1月, 2015 1 次提交
  6. 13 12月, 2014 1 次提交
  7. 25 11月, 2014 1 次提交
  8. 24 11月, 2014 31 次提交