1. 16 11月, 2011 3 次提交
    • M
      ARM: GIC: Make MULTI_IRQ_HANDLER mandatory · 08d33b27
      Marc Zyngier 提交于
      Now that MULTI_IRQ_HANDLER is selected by all the in-tree
      GIC users, make it mandatory and remove the unused macros.
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      08d33b27
    • M
      ARM: GIC: Add global gic_handle_irq() function · 562e0027
      Marc Zyngier 提交于
      Provide the GIC code with a low level handler that can be used
      by platforms using CONFIG_MULTI_IRQ_HANDLER.
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      562e0027
    • M
      ARM: gic: allow GIC to support non-banked setups · db0d4db2
      Marc Zyngier 提交于
      The GIC support code is heavily using the fact that hardware
      implementations are exposing banked registers. Unfortunately, it
      looks like at least one GIC implementation (EXYNOS) offers both
      the distributor and the CPU interfaces at different addresses,
      depending on the CPU.
      
      This problem is solved by allowing the distributor and CPU interface
      addresses to be per-cpu variables for the platforms that require it.
      The EXYNOS code is updated not to mess with the GIC internals while
      handling interrupts, and struct gic_chip_data is back to being private.
      The DT binding for the gic is updated to allow an optional "cpu-offset"
      value, which is used to compute the various base addresses.
      
      Finally, a new config option (GIC_NON_BANKED) is used to control this
      feature, so the overhead is only present on kernels compiled with
      support for EXYNOS.
      
      Tested on Origen (EXYNOS4) and Panda (OMAP4).
      
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Thomas Abraham <thomas.abraham@linaro.org>
      Acked-by: NRob Herring <rob.herring@calxeda.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      db0d4db2
  2. 01 11月, 2011 2 次提交
  3. 31 10月, 2011 3 次提交
  4. 23 10月, 2011 3 次提交
    • M
      ARM: gic, local timers: use the request_percpu_irq() interface · 28af690a
      Marc Zyngier 提交于
      This patch remove the hardcoded link between local timers and PPIs,
      and convert the PPI users (TWD, MCT and MSM timers) to the new
      *_percpu_irq interface. Also some collateral cleanup
      (local_timer_ack() is gone, and the interrupt handler is strictly
      private to each driver).
      
      PPIs are now useable for more than just the local timers.
      
      Additional testing by David Brown (msm8250 and msm8660) and
      Shawn Guo (imx6q).
      
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Acked-by: NDavid Brown <davidb@codeaurora.org>
      Tested-by: NDavid Brown <davidb@codeaurora.org>
      Tested-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      28af690a
    • M
      ARM: gic: consolidate PPI handling · 292b293c
      Marc Zyngier 提交于
      PPI handling is a bit of an odd beast. It uses its own low level
      handling code and is hardwired to the local timers (hence lacking
      a registration interface).
      
      Instead, switch the low handling to the normal SPI handling code.
      PPIs are handled by the handle_percpu_devid_irq flow.
      
      This also allows the removal of some duplicated code.
      
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: David Brown <davidb@codeaurora.org>
      Cc: Bryan Huntsman <bryanh@codeaurora.org>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Magnus Damm <magnus.damm@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Acked-by: NDavid Brown <davidb@codeaurora.org>
      Tested-by: NDavid Brown <davidb@codeaurora.org>
      Tested-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      292b293c
    • J
      ARM: 7136/1: pl330: Fix a race condition · ee3f6158
      Javi Merino 提交于
      If two requests have been submitted and one of them is running, if you
      call pl330_chan_ctrl(ch_id, PL330_OP_START), there's a window of time
      between the spin_lock_irqsave() and the _state() check in which the
      running transaction may finish.  In that case, we don't receive the
      interrupt (because they are disabled), but _start() sees that the DMA
      is stopped, so it starts it.  The problem is that it sends the
      transaction that has just finished again, because pl330_update()
      hasn't mark it as done yet.
      
      This patch fixes this race condition by not calling _start() if the
      DMA is already executing transactions.  When interrupts are reenabled,
      pl330_update() will call _start().
      
      Reference: <1317892206-3600-1-git-send-email-javi.merino@arm.com>
      Signed-off-by: NJavi Merino <javi.merino@arm.com>
      Acked-by: NJassi Brar <jassi.brar@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      ee3f6158
  5. 17 10月, 2011 1 次提交
  6. 15 10月, 2011 1 次提交
  7. 02 10月, 2011 1 次提交
  8. 27 9月, 2011 2 次提交
  9. 23 9月, 2011 2 次提交
  10. 13 9月, 2011 1 次提交
  11. 08 8月, 2011 1 次提交
  12. 22 7月, 2011 1 次提交
    • R
      PCI: Make the struct pci_dev * argument of pci_fixup_irqs const. · d5341942
      Ralf Baechle 提交于
      Aside of the usual motivation for constification,  this function has a
      history of being abused a hook for interrupt and other fixups so I turned
      this function const ages ago in the MIPS code but it should be done
      treewide.
      
      Due to function pointer passing in varous places a few other functions
      had to be constified as well.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      To: Anton Vorontsov <avorontsov@mvista.com>
      To: Chris Metcalf <cmetcalf@tilera.com>
      To: Colin Cross <ccross@android.com>
      Acked-by: N"David S. Miller" <davem@davemloft.net>
      To: Eric Miao <eric.y.miao@gmail.com>
      To: Erik Gilling <konkers@android.com>
      Acked-by: NGuan Xuetao <gxt@mprc.pku.edu.cn>
      To: "H. Peter Anvin" <hpa@zytor.com>
      To: Imre Kaloz <kaloz@openwrt.org>
      To: Ingo Molnar <mingo@redhat.com>
      To: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      To: Jesse Barnes <jbarnes@virtuousgeek.org>
      To: Krzysztof Halasa <khc@pm.waw.pl>
      To: Lennert Buytenhek <kernel@wantstofly.org>
      To: Matt Turner <mattst88@gmail.com>
      To: Nicolas Pitre <nico@fluxnic.net>
      To: Olof Johansson <olof@lixom.net>
      Acked-by: NPaul Mundt <lethal@linux-sh.org>
      To: Richard Henderson <rth@twiddle.net>
      To: Russell King <linux@arm.linux.org.uk>
      To: Thomas Gleixner <tglx@linutronix.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: linux-alpha@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Cc: linux-pci@vger.kernel.org
      Cc: linux-sh@vger.kernel.org
      Cc: linux-tegra@vger.kernel.org
      Cc: sparclinux@vger.kernel.org
      Cc: x86@kernel.org
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      d5341942
  13. 21 7月, 2011 2 次提交
    • R
      ARM: GIC: avoid routing interrupts to offline CPUs · 5dfc54e0
      Russell King 提交于
      The irq_set_affinity() method can be called with masks which include
      offline CPUs.  This allows offline CPUs to have interrupts routed to
      them by writing to /proc/irq/*/smp_affinity after hotplug has taken
      a CPU offline.  Fix this by ensuring that we select a target CPU
      present in both the required affinity and the online CPU mask.
      
      Ensure that we return IRQ_SET_MASK_OK (which happens to be 0) on
      success to ensure generic code copies the new mask into the irq_data
      structure.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      5dfc54e0
    • R
      ARM: CPU hotplug: fix abuse of irqdesc->node · 2ef75701
      Russell King 提交于
      irqdesc's node member is supposed to mark the numa node number for the
      interrupt.  Our use of it is non-standard.  Remove this, replacing the
      functionality with a test of the affinity mask.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      2ef75701
  14. 20 7月, 2011 1 次提交
  15. 04 7月, 2011 10 次提交
  16. 10 6月, 2011 1 次提交
  17. 24 5月, 2011 5 次提交