1. 29 4月, 2011 4 次提交
  2. 30 3月, 2011 1 次提交
  3. 29 3月, 2011 34 次提交
  4. 28 3月, 2011 1 次提交
    • T
      arm: Ns9xxx: Remove private irq flow handler · 68293105
      Thomas Gleixner 提交于
      handle_prio_irq is almost identical with handle_fasteoi_irq. The
      subtle differences are
      
      1) The handler checks for IRQ_DISABLED after the device handler has
         been called. In case it's set it masks the interrupt.
      
      2) When the handler sees IRQ_DISABLED on entry it masks the interupt
         in the same way as handle_fastoei_irq, but does not set the
         IRQ_PENDING flag.
      
      3) Instead of gracefully handling a recursive interrupt it crashes the
         kernel.
      
      #1 is just relevant when a device handler calls disable_irq_nosync()
         and it does not matter whether we mask the interrupt right away or
         not. We handle lazy masking for disable_irq anyway, so there is no
         real reason to have this extra mask in place.
      
      #2 will prevent the resend of a pending interrupt, which can result in
         lost interrupts for edge type interrupts. For level type interrupts
         the resend is a noop in the generic code. According to the
         datasheet all interrupts are level type, so marking them as such
         will result in the exact same behaviour as the private
         handle_prio_irq implementation.
      
      #3 is just stupid. Crashing the kernel instead of handling a problem
         gracefully is just wrong. With the current semantics- all handlers
         run with interrupts disabled - this is even more wrong.
      
      Rename ack to eoi, remove the unused mask_ack, switch to
      handle_fasteoi_irq and remove the private function.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Acked-by: NUwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
      Cc: linux-arm-kernel@lists.infradead.org
      LKML-Reference: <20110202212552.299898447@linutronix.de>
      68293105