1. 05 11月, 2012 1 次提交
  2. 17 8月, 2012 1 次提交
  3. 12 5月, 2012 1 次提交
    • T
      gpio: pch9: Use proper flow type handlers · df9541a6
      Thomas Gleixner 提交于
      Jean-Francois Dagenais reported:
      
       Configuring a gpio pin with the gpio-pch driver with
       "IRQF_TRIGGER_LOW | IRQF_ONESHOT" generates an interrupt storm for
       threaded ISR until the ISR thread actually gets to physically clear
       the interrupt on the triggering chip!! The immediate observable
       symptom is the high CPU usage for my ISR thread task and the
       interrupt count in /proc/interrupts incrementing radically.
      
      The driver is wrong in several ways:
      
      1) Using handle_simple_irq() does not provide proper flow control
         handling. In the case of oneshot threaded handlers for the
         demultiplexed interrupts this results in an interrupt storm because
         the simple handler does not deal with masking/unmasking.  Even
         without threaded oneshot handlers an interrupt storm for level type
         interrupts can easily be triggered when the interrupt is disabled
         and the interrupt line is activated from the device.
      
      2) Acknowlegding the demultiplexed interrupt before calling the
         handler is wrong for level type interrupts.
      
      3) The set_type function unconditionally enables the interrupt. It's
         supposed to set the type and nothing else. The unmasking is done by
         the core code.
      
      Move the acknowledge code into a separate function and add it to the
      demux irqchip callbacks.
      
      Remove the unconditional enabling from the set_type() callback and set
      the proper flow handlers depending on the selected type (level/edge).
      Reported-and-tested-by: NJean-Francois Dagenais <jeff.dagenais@gmail.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      df9541a6
  4. 08 4月, 2012 1 次提交
  5. 02 2月, 2012 1 次提交
  6. 17 1月, 2012 2 次提交
  7. 13 12月, 2011 2 次提交
  8. 01 11月, 2011 1 次提交
  9. 20 10月, 2011 1 次提交
  10. 06 10月, 2011 6 次提交
  11. 07 6月, 2011 1 次提交
  12. 28 5月, 2011 1 次提交
  13. 01 4月, 2011 1 次提交
  14. 14 3月, 2011 1 次提交
  15. 12 3月, 2011 1 次提交
  16. 28 10月, 2010 1 次提交