1. 24 11月, 2012 1 次提交
  2. 09 11月, 2012 1 次提交
    • J
      MIPS: Make irqflags.h functions preempt-safe for non-mipsr2 cpus · e97c5b60
      Jim Quinlan 提交于
      For non MIPSr2 processors, such as the BMIPS 5000, calls to
      arch_local_irq_disable() and others may be preempted, and in doing
      so a stale value may be restored to c0_status.  This fix disables
      preemption for such processors prior to the call and enables it
      after the call.
      
      Those functions that needed this fix have been "outlined" to
      mips-atomic.c, as they are no longer good candidates for inlining.
      
      This bug was observed in a BMIPS 5000, occuring once every few hours
      in a continuous reboot test.  It was traced to the write_lock_irq()
      function which was being invoked in release_task() in exit.c.
      By placing a number of "nops" inbetween the mfc0/mtc0 pair in
      arch_local_irq_disable(), which is called by write_lock_irq(), we
      were able to greatly increase the occurance of this bug.  Similarly,
      the application of this commit silenced the bug.
      Signed-off-by: NJim Quinlan <jim2101024@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: David Daney <ddaney.cavm@gmail.com>
      Cc: Kevin Cernekee cernekee@gmail.com
      Cc: Jim Quinlan <jim2101024@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/4321/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e97c5b60
  3. 31 3月, 2011 1 次提交
  4. 07 10月, 2010 1 次提交
    • D
      Fix IRQ flag handling naming · df9ee292
      David Howells 提交于
      Fix the IRQ flag handling naming.  In linux/irqflags.h under one configuration,
      it maps:
      
      	local_irq_enable() -> raw_local_irq_enable()
      	local_irq_disable() -> raw_local_irq_disable()
      	local_irq_save() -> raw_local_irq_save()
      	...
      
      and under the other configuration, it maps:
      
      	raw_local_irq_enable() -> local_irq_enable()
      	raw_local_irq_disable() -> local_irq_disable()
      	raw_local_irq_save() -> local_irq_save()
      	...
      
      This is quite confusing.  There should be one set of names expected of the
      arch, and this should be wrapped to give another set of names that are expected
      by users of this facility.
      
      Change this to have the arch provide:
      
      	flags = arch_local_save_flags()
      	flags = arch_local_irq_save()
      	arch_local_irq_restore(flags)
      	arch_local_irq_disable()
      	arch_local_irq_enable()
      	arch_irqs_disabled_flags(flags)
      	arch_irqs_disabled()
      	arch_safe_halt()
      
      Then linux/irqflags.h wraps these to provide:
      
      	raw_local_save_flags(flags)
      	raw_local_irq_save(flags)
      	raw_local_irq_restore(flags)
      	raw_local_irq_disable()
      	raw_local_irq_enable()
      	raw_irqs_disabled_flags(flags)
      	raw_irqs_disabled()
      	raw_safe_halt()
      
      with type checking on the flags 'arguments', and then wraps those to provide:
      
      	local_save_flags(flags)
      	local_irq_save(flags)
      	local_irq_restore(flags)
      	local_irq_disable()
      	local_irq_enable()
      	irqs_disabled_flags(flags)
      	irqs_disabled()
      	safe_halt()
      
      with tracing included if enabled.
      
      The arch functions can now all be inline functions rather than some of them
      having to be macros.
      
      Signed-off-by: David Howells <dhowells@redhat.com> [X86, FRV, MN10300]
      Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> [Tile]
      Signed-off-by: Michal Simek <monstr@monstr.eu> [Microblaze]
      Tested-by: Catalin Marinas <catalin.marinas@arm.com> [ARM]
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> [AVR]
      Acked-by: Tony Luck <tony.luck@intel.com> [IA-64]
      Acked-by: Hirokazu Takata <takata@linux-m32r.org> [M32R]
      Acked-by: Greg Ungerer <gerg@uclinux.org> [M68K/M68KNOMMU]
      Acked-by: Ralf Baechle <ralf@linux-mips.org> [MIPS]
      Acked-by: Kyle McMartin <kyle@mcmartin.ca> [PA-RISC]
      Acked-by: Paul Mackerras <paulus@samba.org> [PowerPC]
      Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com> [S390]
      Acked-by: Chen Liqin <liqin.chen@sunplusct.com> [Score]
      Acked-by: Matt Fleming <matt@console-pimps.org> [SH]
      Acked-by: David S. Miller <davem@davemloft.net> [Sparc]
      Acked-by: Chris Zankel <chris@zankel.net> [Xtensa]
      Reviewed-by: Richard Henderson <rth@twiddle.net> [Alpha]
      Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp> [H8300]
      Cc: starvik@axis.com [CRIS]
      Cc: jesper.nilsson@axis.com [CRIS]
      Cc: linux-cris-kernel@axis.com
      df9ee292
  5. 11 10月, 2008 1 次提交
  6. 04 10月, 2008 1 次提交
  7. 12 10月, 2007 1 次提交
  8. 30 3月, 2007 1 次提交
    • R
      [MIPS] SMTC: Fix recursion in instant IPI replay code. · 8a1e97ee
      Ralf Baechle 提交于
      local_irq_restore -> raw_local_irq_restore -> irq_restore_epilog ->
      	smtc_ipi_replay -> smtc_ipi_dq -> spin_unlock_irqrestore ->
      	_spin_unlock_irqrestore -> local_irq_restore
      
      The recursion does abort when there is no more IPI queued for a CPU, so
      this isn't usually fatal which is why we got away with this for so long
      until this was discovered by code inspection.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      8a1e97ee
  9. 24 1月, 2007 1 次提交
    • R
      [MIPS] SMTC: Instant IPI replay. · ac8be955
      Ralf Baechle 提交于
      SMTC pseudo-interrupts between TCs are deferred and queued if the target
      TC is interrupt-inhibited (IXMT). In the first SMTC prototypes, these
      queued IPIs were serviced on return to user mode, or on entry into the
      kernel idle loop. The INSTANT_REPLAY option dispatches them as part of
      local_irq_restore() processing, which adds runtime overhead (hence the
      option to turn it off), but ensures that IPIs are handled promptly even
      under heavy I/O interrupt load.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      ac8be955
  10. 02 10月, 2006 1 次提交
  11. 14 7月, 2006 1 次提交
  12. 26 4月, 2006 1 次提交
  13. 19 4月, 2006 1 次提交
  14. 07 2月, 2006 2 次提交
  15. 10 1月, 2006 1 次提交
  16. 30 10月, 2005 2 次提交
  17. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4