1. 12 7月, 2011 1 次提交
    • R
      ARM: introduce handle_IRQ() not to dump exception stack · a4841e39
      Russell King - ARM Linux 提交于
      On Mon, Jul 11, 2011 at 3:52 PM, Russell King - ARM Linux
      <linux@arm.linux.org.uk> wrote:
      
      ...
      
      > The __exception annotation on a function causes this to happen:
      >
      > [<c002406c>] (asm_do_IRQ+0x6c/0x8c) from [<c0024b84>]
      > (__irq_svc+0x44/0xcc)
      > Exception stack(0xc3897c78 to 0xc3897cc0)
      > 7c60:                                                       4022d320 4022e000
      > 7c80: 08000075 00001000 c32273c0 c03ce1c0 c2b49b78 4022d000 c2b420b4 00000001
      > 7ca0: 00000000 c3897cfc 00000000 c3897cc0 c00afc54 c002edd8 00000013 ffffffff
      >
      > Where that stack dump represents the pt_regs for the exception which
      > happened.  Any function found in while unwinding will cause this to
      > be printed.
      >
      > If you insert a C function between the IRQ assembly and asm_do_IRQ,
      > the
      > dump you get from asm_do_IRQ will be the stack for your function,
      > not
      > the pt_regs.  That makes the feature useless.
      >
      
      When __irq_svc - or any of the other exception handling assembly code -
      calls the C code, the stack pointer will be pointing at the pt_regs
      structure.
      
      All the entry points into C code from the exception handling code are
      marked with __exception or __exception_irq_enter to indicate that they
      are one of the functions which has pt_regs above them.
      
      Normally, when you've entered asm_do_IRQ() you will have this stack
      layout (higher address towards top):
      
             pt_regs
             asm_do_IRQ frame
      
      If you insert a C function between the exception assembly code and
      asm_do_IRQ, you end up with this stack layout instead:
      
             pt_regs
             your function frame
             asm_do_IRQ frame
      
      This means when we unwind, we'll get to asm_do_IRQ, and rather than
      dumping out the pt_regs, we'll dump out your functions stack frame
      instead, because that's what is above the asm_do_IRQ stack frame
      rather than the expected pt_regs structure.
      
      The fix is to introduce handle_IRQ() for no exception stack dump, so
      it can be called with MULTI_IRQ_HANDLER is selected and a C function
      is between the assembly code and the actual IRQ handling code.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NEric Miao <eric.y.miao@gmail.com>
      a4841e39
  2. 09 7月, 2010 1 次提交
  3. 30 3月, 2010 1 次提交
  4. 30 11月, 2008 1 次提交
  5. 06 9月, 2008 1 次提交
  6. 07 8月, 2008 1 次提交
  7. 03 8月, 2008 1 次提交
  8. 27 7月, 2008 1 次提交
  9. 31 12月, 2006 1 次提交
  10. 02 7月, 2006 1 次提交
    • T
      [ARM] 3692/1: ARM: coswitch irq handling to the generic implementation · 4a2581a0
      Thomas Gleixner 提交于
      Patch from Thomas Gleixner
      
      From: Thomas Gleixner <tglx@linutronix.de>
      
      Switch the ARM irq core handling to the generic implementation. The
      ARM specific header files now contain mostly migration stubs and
      helper macros. Note that each machine type must be converted after
      this step seperately. This was seperated out from the patch for easier
      review.
      
      The main changes for the machine type code is the conversion of the
      type handlers to a 'type flow' and 'chip' model. This affects only the
      multiplex interrupt handlers. A conversion macro needs to be added to
      those implementations, which defines the data structure which is
      registered by the set_irq_chained_handler() macro.
      
      Some minor fixups of include files and the conversion of data
      structure access is necessary all over the place.
      
      The mostly macro based conversion was provided to allow an easy
      migration of the existing implementations.
      
      The code compiles on all defconfigs available in arch/arm/configs
      except those which were broken also before applying the conversion
      patches.
      
      The code has been boot and runtime tested on most ARM platforms. The
      results of an extensive testing and bugfixing series can be found
      at: http://www.linutronix.de/index.php?page=testingSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      4a2581a0
  11. 23 6月, 2006 1 次提交
    • J
      [PATCH] adjust handle_IRR_event() return type · 908dcecd
      Jan Beulich 提交于
      Correct the return type of handle_IRQ_event() (inconsistency noticed during
      Xen development), and remove redundant declarations.  The return type
      adjustment required breaking out the definition of irqreturn_t into a
      separate header, in order to satisfy current include order dependencies.
      Signed-off-by: NJan Beulich <jbeulich@novell.com>
      
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ian Molton <spyro@f2s.com>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Hirokazu Takata <takata.hirokazu@renesas.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: William Lee Irwin III <wli@holomorphy.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      908dcecd
  12. 20 3月, 2006 1 次提交
  13. 09 1月, 2006 1 次提交
    • R
      [PATCH] IRQ type flags · 9ded96f2
      Russell King 提交于
      Some ARM platforms have the ability to program the interrupt controller to
      detect various interrupt edges and/or levels.  For some platforms, this is
      critical to setup correctly, particularly those which the setting is dependent
      on the device.
      
      Currently, ARM drivers do (eg) the following:
      
      	err = request_irq(irq, ...);
      
      	set_irq_type(irq, IRQT_RISING);
      
      However, if the interrupt has previously been programmed to be level sensitive
      (for whatever reason) then this will cause an interrupt storm.
      
      Hence, if we combine set_irq_type() with request_irq(), we can then safely set
      the type prior to unmasking the interrupt.  The unfortunate problem is that in
      order to support this, these flags need to be visible outside of the ARM
      architecture - drivers such as smc91x need these flags and they're
      cross-architecture.
      
      Finally, the SA_TRIGGER_* flag passed to request_irq() should reflect the
      property that the device would like.  The IRQ controller code should do its
      best to select the most appropriate supported mode.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9ded96f2
  14. 03 11月, 2005 1 次提交
  15. 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