1. 20 6月, 2013 1 次提交
    • S
      irqchip: gic: call gic_cpu_init() as well in CPU_STARTING_FROZEN case · 8b6fd652
      Shawn Guo 提交于
      Commit c0114709 (irqchip: gic: Perform the gic_secondary_init() call via
      CPU notifier) moves gic_secondary_init() that used to be called in
      .smp_secondary_init hook into a notifier call.  But it changes the
      system behavior a little bit.  Before the commit, gic_cpu_init()
      is called not only when kernel brings up the secondary cores but also
      when system resuming procedure hot-plugs the cores back to kernel.
      While after the commit, the function will not be called in the latter
      case, where the 'action' will not be CPU_STARTING but
      CPU_STARTING_FROZEN.  This behavior difference at least causes the
      following suspend/resume regression on imx6q.
      
      $ echo mem > /sys/power/state
      PM: Syncing filesystems ... done.
      PM: Preparing system for mem sleep
      mmc1: card e624 removed
      Freezing user space processes ... (elapsed 0.01 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
      PM: Entering mem sleep
      PM: suspend of devices complete after 5.930 msecs
      PM: suspend devices took 0.010 seconds
      PM: late suspend of devices complete after 0.343 msecs
      PM: noirq suspend of devices complete after 0.828 msecs
      Disabling non-boot CPUs ...
      CPU1: shutdown
      CPU2: shutdown
      CPU3: shutdown
      Enabling non-boot CPUs ...
      CPU1: Booted secondary processor
      INFO: rcu_sched detected stalls on CPUs/tasks: { 1 2 3} (detected by 0, t=2102 jiffies, g=4294967169, c=4294967168, q=17)
      Task dump for CPU 1:
      swapper/1       R running      0     0      1 0x00000000
      Backtrace:
      [<bf895ff4>] (0xbf895ff4) from [<00000000>] (  (null))
      Backtrace aborted due to bad frame pointer <8007ccdc>
      Task dump for CPU 2:
      swapper/2       R running      0     0      1 0x00000000
      Backtrace:
      [<8075dbdc>] (0x8075dbdc) from [<00000000>] (  (null))
      Backtrace aborted due to bad frame pointer <00000002>
      Task dump for CPU 3:
      swapper/3       R running      0     0      1 0x00000000
      Backtrace:
      [<8075dbdc>] (0x8075dbdc) from [<00000000>] (  (null))
      
      Fix the regression by checking 'action' being CPU_STARTING_FROZEN to
      have gic_cpu_init() called for secondary cores when system resumes.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Tested-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      8b6fd652
  2. 19 6月, 2013 1 次提交
  3. 18 6月, 2013 1 次提交
  4. 09 6月, 2013 1 次提交
    • G
      irqchip: Return -EPERM for reserved IRQs · d94ea3f6
      Grant Likely 提交于
      The irqdomain core will report a log message for any attempted map call
      that fails unless the error code is -EPERM. This patch changes the
      Versatile irq controller drivers to use -EPERM because it is normal for
      a subset of the IRQ inputs to be marked as reserved on the various
      Versatile platforms.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      d94ea3f6
  5. 06 6月, 2013 1 次提交
  6. 03 6月, 2013 1 次提交
  7. 29 4月, 2013 1 次提交
    • A
      irqchip: s3c24xx: add missing __init annotations · bc8fd900
      Arnd Bergmann 提交于
      The s3c24xx_init_intc and s3c2412_init_irq functions are only called
      at init time, and they call functions already marked __init, so they
      should be marked in the same way. This was reported as
      
      WARNING: vmlinux.o(.text+0x19e0b4): Section mismatch in reference from the function s3c2412_init_irq() to the function .init.text:s3c24xx_init_intc.constprop.8()
      The function s3c2412_init_irq() references
      the function __init s3c24xx_init_intc.constprop.8().
      This is often because s3c2412_init_irq lacks a __init
      annotation or the annotation of s3c24xx_init_intc.constprop.8 is wrong.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NHeiko Stuebner <heiko@sntech.de>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      bc8fd900
  8. 20 4月, 2013 5 次提交
    • A
      irqchip: exynos: look up irq using irq_find_mapping · 20adee8f
      Arnd Bergmann 提交于
      Since we want to move to using the linear IRQ domain in the
      future, we cannot rely on the irq numbers to be contiguous
      and need to look up the irq from the hwirq using the domain.
      
      This also turns the bogus comparison with NR_IRQ into a
      more meaningful check to see if the number has a valid mapping.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      20adee8f
    • A
      irqchip: exynos: pass irq_base from platform · 863a08dc
      Arnd Bergmann 提交于
      The platform code knows the IRQ base, while the irqchip driver
      should really not. This is a littly hacky because we still
      hardwire the IRQ base to 160 for the combiner in the DT case,
      when we should really use -1. Removing that line will cause
      a linear IRQ domain to be use, as we should.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      863a08dc
    • A
      irqchip: exynos: localize irq lookup for ATAGS · 92c8e496
      Arnd Bergmann 提交于
      The IRQ_SPI() macro is not available in the driver when building with sparse
      IRQs or multiplatform, so let's move all users of this into one function
      that we can leave out when building DT-only.
      Signed-off-by: NArnd Bergmann <arnd@arnd.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      92c8e496
    • A
      irqchip: exynos: allocate combiner_data dynamically · d34f03d4
      Arnd Bergmann 提交于
      The number of combiners on a given SoC is a platform specific
      constant, and we cannot encode this number on a multiplatform
      kernel since the header file defining it is not available.
      
      Allocating the structure dynamically ends up cleaner anyway
      since we keep all the data local.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      d34f03d4
    • A
      irqchip: exynos: pass max combiner number to combiner_init · 6761dcfe
      Arnd Bergmann 提交于
      We can find out the number of combined IRQs from the device
      tree, but in case of ATAGS boot, the driver currently uses
      hardcoded values based on the SoC type. We can't do that
      in general for a multiplatform kernel, so let's instead pass
      this information from platform code directly in case of
      ATAGS boot.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      6761dcfe
  9. 16 4月, 2013 3 次提交
  10. 13 4月, 2013 1 次提交
  11. 09 4月, 2013 4 次提交
  12. 04 4月, 2013 7 次提交
  13. 03 4月, 2013 2 次提交
  14. 01 4月, 2013 1 次提交
  15. 28 3月, 2013 1 次提交
    • B
      irqchip: intc-irqpin: Add support for shared interrupt lines · 427cc720
      Bastian Hecht 提交于
      On some hardware we don't have a 1-1 mapping from the external
      interrupts coming from INTC to the GIC SPI pins. We can however
      share lines to demux incoming IRQs on these SoCs.
      
      This patch enables the intc_irqpin driver to detect requests for shared
      interrupt lines and demuxes them properly by querying the INTC INTREQx0A
      registers.
      
      If you need multiple shared intc_irqpin device instances, be sure to mask
      out all interrupts on the INTC that share the one line before you start
      to register them. Else you run into IRQ floods that would be caused by
      interrupts for which no handler has been set up yet when the first
      intc_irqpin device is registered.
      Signed-off-by: NBastian Hecht <hechtb+renesas@gmail.com>
      Acked-by: NMagnus Damm <damm@opensource.se>
      Signed-off-by: NSimon Horman <horms+renesas@verge.net.au>
      427cc720
  16. 27 3月, 2013 6 次提交
  17. 25 3月, 2013 1 次提交
    • A
      ARM: sirf: move irq driver to drivers/irqchip · 60dbd768
      Arnd Bergmann 提交于
      This updates the irqchip drier for prima2 to the current practices by
      moving it into drivers/irqchip and integrating it into the irqchip_init
      infrastructure. We also now use a linear irq domain as a preparation
      for sparse IRQ suport.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      60dbd768
  18. 18 3月, 2013 2 次提交