14 Jul, 2013

2 commits

  • Pull irq updates from Thomas Gleixner:
    - core fix for missing round up in the generic irq chip implementation
    - new irq chip for MOXA SoCs
    - a few fixes and cleanups in the irqchip drivers

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip: Add support for MOXA ART SoCs
    genirq: generic chip: Use DIV_ROUND_UP to calculate numchips
    irqchip: nvic: Fix wrong num_ct argument for irq_alloc_domain_generic_chips()
    irqchip: sun4i: Staticize sun4i_irq_ack()
    irqchip: vt8500: Staticize local symbols

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    "MIPS updates:

    - All the things that didn't make 3.10.
    - Removes the Windriver PPMC platform. Nobody will miss it.
    - Remove a workaround from kernel/irq/irqdomain.c which was there
    exclusivly for MIPS. Patch by Grant Likely.
    - More small improvments for the SEAD 3 platform
    - Improvments on the BMIPS / SMP support for the BCM63xx series.
    - Various cleanups of dead leftovers.
    - Platform support for the Cavium Octeon-based EdgeRouter Lite.

    Two large KVM patchsets didn't make it for this pull request because
    their respective authors are vacationing"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (124 commits)
    MIPS: Kconfig: Add missing MODULES dependency to VPE_LOADER
    MIPS: BCM63xx: CLK: Add dummy clk_{set,round}_rate() functions
    MIPS: SEAD3: Disable L2 cache on SEAD-3.
    MIPS: BCM63xx: Enable second core SMP on BCM6328 if available
    MIPS: BCM63xx: Add SMP support to prom.c
    MIPS: define write{b,w,l,q}_relaxed
    MIPS: Expose missing pci_io{map,unmap} declarations
    MIPS: Malta: Update GCMP detection.
    Revert "MIPS: make CAC_ADDR and UNCAC_ADDR account for PHYS_OFFSET"
    MIPS: APSP: Remove
    SSB: Kconfig: Amend SSB_EMBEDDED dependencies
    MIPS: microMIPS: Fix improper definition of ISA exception bit.
    MIPS: Don't try to decode microMIPS branch instructions where they cannot exist.
    MIPS: Declare emulate_load_store_microMIPS as a static function.
    MIPS: Fix typos and cleanup comment
    MIPS: Cleanup indentation and whitespace
    MIPS: BMIPS: support booting from physical CPU other than 0
    MIPS: Only set cpu_has_mmips if SYS_SUPPORTS_MICROMIPS
    MIPS: GIC: Fix gic_set_affinity infinite loop
    MIPS: Don't save/restore OCTEON wide multiplier state on syscalls.
    ...

    Linus Torvalds
     

07 Jul, 2013

1 commit

  • Pull irqdomain refactoring from Grant Likely:
    "This is the long awaited simplification of irqdomain. It gets rid of
    the different types of irq domains and instead both linear and tree
    mappings can be supported in a single domain. Doing this removes a
    lot of special case code and makes irq domains simpler to understand
    overall"

    * tag 'irqdomain-for-linus' of git://git.secretlab.ca/git/linux:
    irq: fix checkpatch error
    irqdomain: Include hwirq number in /proc/interrupts
    irqdomain: make irq_linear_revmap() a fast path again
    irqdomain: remove irq_domain_generate_simple()
    irqdomain: Refactor irq_domain_associate_many()
    irqdomain: Beef up debugfs output
    irqdomain: Clean up aftermath of irq_domain refactoring
    irqdomain: Eliminate revmap type
    irqdomain: merge linear and tree reverse mappings.
    irqdomain: Add a name field
    irqdomain: Replace LEGACY mapping with LINEAR
    irqdomain: Relax failure path on setting up mappings

    Linus Torvalds
     

05 Jul, 2013

2 commits

  • The number of interrupts in a domain may be not divisible by the
    number of interrupts each chip handles. Integer division may truncate
    the result, thus use DIV_ROUND_UP to count numchips.

    Seems all users of irq_alloc_domain_generic_chips() in current code do
    not have this issue. I just found the issue while reading the code.

    Signed-off-by: Axel Lin
    Cc: Grant Likely
    Cc: Tony Lindgren
    Cc: Arnd Bergmann
    Link: http://lkml.kernel.org/r/1373015592.18252.2.camel@phoenix
    Signed-off-by: Thomas Gleixner

    Axel Lin
     
  • Pull trivial tree updates from Jiri Kosina:
    "The usual stuff from trivial tree"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)
    treewide: relase -> release
    Documentation/cgroups/memory.txt: fix stat file documentation
    sysctl/net.txt: delete reference to obsolete 2.4.x kernel
    spinlock_api_smp.h: fix preprocessor comments
    treewide: Fix typo in printk
    doc: device tree: clarify stuff in usage-model.txt.
    open firmware: "/aliasas" -> "/aliases"
    md: bcache: Fixed a typo with the word 'arithmetic'
    irq/generic-chip: fix a few kernel-doc entries
    frv: Convert use of typedef ctl_table to struct ctl_table
    sgi: xpc: Convert use of typedef ctl_table to struct ctl_table
    doc: clk: Fix incorrect wording
    Documentation/arm/IXP4xx fix a typo
    Documentation/networking/ieee802154 fix a typo
    Documentation/DocBook/media/v4l fix a typo
    Documentation/video4linux/si476x.txt fix a typo
    Documentation/virtual/kvm/api.txt fix a typo
    Documentation/early-userspace/README fix a typo
    Documentation/video4linux/soc-camera.txt fix a typo
    lguest: fix CONFIG_PAE -> CONFIG_x86_PAE in comment
    ...

    Linus Torvalds
     

03 Jul, 2013

1 commit

  • Pull core irq changes from Ingo Molnar:
    "The main changes:

    - generic-irqchip driver additions, cleanups and fixes

    - 3 new irqchip drivers: ARMv7-M NVIC, TB10x and Marvell Orion SoCs

    - irq_get_trigger_type() simplification and cross-arch cleanup

    - various cleanups, simplifications

    - documentation updates"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
    softirq: Use _RET_IP_
    genirq: Add the generic chip to the genirq docbook
    genirq: generic-chip: Export some irq_gc_ functions
    genirq: Fix can_request_irq() for IRQs without an action
    irqchip: exynos-combiner: Staticize combiner_init
    irqchip: Add support for ARMv7-M NVIC
    irqchip: Add TB10x interrupt controller driver
    irqdomain: Use irq_get_trigger_type() to get IRQ flags
    MIPS: octeon: Use irq_get_trigger_type() to get IRQ flags
    arm: orion: Use irq_get_trigger_type() to get IRQ flags
    mfd: stmpe: use irq_get_trigger_type() to get IRQ flags
    mfd: twl4030-irq: Use irq_get_trigger_type() to get IRQ flags
    gpio: mvebu: Use irq_get_trigger_type() to get IRQ flags
    genirq: Add irq_get_trigger_type() to get IRQ flags
    genirq: Irqchip: document gcflags arg of irq_alloc_domain_generic_chips
    genirq: Set irq thread to RT priority on creation
    irqchip: Add support for Marvell Orion SoCs
    genirq: Add kerneldoc for irq_disable.
    genirq: irqchip: Add mask to block out invalid irqs
    genirq: Generic chip: Add linear irq domain support
    ...

    Linus Torvalds
     

28 Jun, 2013

3 commits

  • Signed-off-by: Thomas Gleixner
    Cc: Randy Dunlap

    Thomas Gleixner
     
  • When building imx_v6_v7_defconfig with imx-drm drivers selected as
    modules, we get the following build errors:

    ERROR: "irq_gc_mask_clr_bit" [drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.ko] undefined!
    ERROR: "irq_gc_mask_set_bit" [drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.ko] undefined!
    ERROR: "irq_gc_ack_set_bit" [drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.ko] undefined!

    Export the required functions to avoid this problem.

    Signed-off-by: Fabio Estevam
    Cc: shawn.guo@linaro.org
    Cc: kernel@pengutronix.de
    Link: http://lkml.kernel.org/r/1372389789-7048-1-git-send-email-festevam@gmail.com
    Signed-off-by: Thomas Gleixner

    Fabio Estevam
     
  • Commit 02725e7471b8 ('genirq: Use irq_get/put functions'),
    inadvertently changed can_request_irq() to return 0 for IRQs that have
    no action. This causes pcibios_lookup_irq() to select only IRQs that
    already have an action with IRQF_SHARED set, or to fail if there are
    none. Change can_request_irq() to return 1 for IRQs that have no
    action (if the first two conditions are met).

    Reported-by: Bjarni Ingi Gislason
    Tested-by: Bjarni Ingi Gislason (against 3.2)
    Signed-off-by: Ben Hutchings
    Cc: 709647@bugs.debian.org
    Cc: stable@vger.kernel.org # 2.6.39+
    Link: http://bugs.debian.org/709647
    Link: http://lkml.kernel.org/r/1372383630.23847.40.camel@deadeye.wl.decadent.org.uk
    Signed-off-by: Thomas Gleixner

    Ben Hutchings
     

25 Jun, 2013

1 commit

  • Use irq_get_trigger_type() to get the IRQ trigger type flags
    instead calling irqd_get_trigger_type(irq_desc_get_irq_data(virq))

    Signed-off-by: Javier Martinez Canillas
    Acked-by: Grant Likely
    Cc: Linus Walleij
    Cc: Samuel Ortiz
    Cc: Jason Cooper
    Cc: Andrew Lunn
    Cc: Russell King
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mips@linux-mips.org
    Link: http://lkml.kernel.org/r/1371228049-27080-8-git-send-email-javier.martinez@collabora.co.uk
    Signed-off-by: Thomas Gleixner

    Javier Martinez Canillas
     

24 Jun, 2013

6 commits

  • Commit 088f40b7b027dad6519712ff224a5798dd62a204 ("genirq: Generic chip:
    Add linear irq domain support") missed kerneldoc for the gcflags
    argument of irq_alloc_domain_generic_chips(). Add it now.

    Signed-off-by: James Hogan
    Acked-by: Grant Likely
    Link: http://lkml.kernel.org/r/1371564513-4327-1-git-send-email-james.hogan@imgtec.com
    Signed-off-by: Thomas Gleixner

    James Hogan
     
  • ERROR: space required before the open parenthesis '('
    WARNING: Prefer pr_warn(... to pr_warning(...
    Just fix above 2 issue.

    Signed-off-by: Kefeng Wang
    Signed-off-by: Grant Likely

    Kefeng Wang
     
  • Add the hardware interrupt number to the output of /proc/interrupts.
    It is often important to have access to the hardware interrupt number because
    it identifies exactly how an interrupt signal is wired up to the interrupt
    controller. This is especially important when using irq_domains since irq
    numbers get dynamically allocated in that case, and have no relation to the
    actual hardware number.

    Note: This output is currently conditional on whether or not the irq_domain
    pointer is set; however hwirq could still be used without irq_domain. It
    may be worthwhile to always output the hwirq number regardless of the
    domain pointer.

    Signed-off-by: Grant Likely
    Tested-by: Olof Johansson
    Cc: Ben Herrenschmidt
    Cc: Thomas Gleixner

    Grant Likely
     
  • Over the years, irq_linear_revmap() gained tests and checks to make sure
    callers were using it safely, which while important, also make it less
    of a fast path. After the irqdomain refactoring done recently, it is now
    possible to make irq_linear_revmap() a fast path again. This patch moves
    irq_linear_revmap() to the header file and makes it a static inline so
    that interrupt controller drivers using a linear mapping can decode the
    virq from a hwirq in just a couple of instructions.

    Signed-off-by: Grant Likely

    Grant Likely
     
  • Nobody calls it; remove the function

    Signed-off-by: Grant Likely

    Grant Likely
     
  • Originally, irq_domain_associate_many() was designed to unwind the
    mapped irqs on a failure of any individual association. However, that
    proved to be a problem with certain IRQ controllers. Some of them only
    support a subset of irqs, and will fail when attempting to map a
    reserved IRQ. In those cases we want to map as many IRQs as possible, so
    instead it is better for irq_domain_associate_many() to make a
    best-effort attempt to map irqs, but not fail if any or all of them
    don't succeed. If a caller really cares about how many irqs got
    associated, then it should instead go back and check that all of the
    irqs is cares about were mapped.

    The original design open-coded the individual association code into the
    body of irq_domain_associate_many(), but with no longer needing to
    unwind associations, the code becomes simpler to split out
    irq_domain_associate() to contain the bulk of the logic, and
    irq_domain_associate_many() to be a simple loop wrapper.

    This patch also adds a new error check to the associate path to make
    sure it isn't called for an irq larger than the controller can handle,
    and adds locking so that the irq_domain_mutex is held while setting up a
    new association.

    v3: Fixup missing change to irq_domain_add_tree()
    v2: Fixup x86 warning. irq_domain_associate_many() no longer returns an
    error code, but reports errors to the printk log directly. In the
    majority of cases we don't actually want to fail if there is a
    problem, but rather log it and still try to boot the system.

    Signed-off-by: Grant Likely

    irqdomain: Fix flubbed irq_domain_associate_many refactoring

    commit d39046ec72, "irqdomain: Refactor irq_domain_associate_many()" was
    missing the following hunk which causes a boot failure on anything using
    irq_domain_add_tree() to allocate an irq domain.

    Signed-off-by: Grant Likely
    Cc: Michael Neuling
    Cc: Benjamin Herrenschmidt ,
    Cc: Thomas Gleixner ,
    Cc: Stephen Rothwell

    Grant Likely
     

18 Jun, 2013

2 commits


11 Jun, 2013

1 commit

  • When a threaded irq handler is installed the irq thread is initially
    created on normal scheduling priority. Only after the irq thread is
    woken up it sets its priority to RT_FIFO MAX_USER_RT_PRIO/2 itself.

    This means that interrupts that occur directly after the irq handler
    is installed will be handled on a normal scheduling priority instead
    of the realtime priority that one would expect.

    Fix this by setting the RT priority on creation of the irq_thread.

    Signed-off-by: Ivo Sieben
    Cc: Sebastian Andrzej Siewior
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/r/1370254322-17240-1-git-send-email-meltedpianoman@gmail.com
    Signed-off-by: Thomas Gleixner

    Ivo Sieben
     

10 Jun, 2013

8 commits

  • This patch increases the amount of output produced by the
    irq_domain_mapping debugfs file by first listing all of the registered
    irq domains at the beginning of the output, and then by including all
    mapped IRQs in the output, not just the active ones. It is very useful
    when debugging irqdomain issues to be able to see the entire list of
    mapped irqs, not just the ones that happen to be connected to devices.

    Signed-off-by: Grant Likely

    Grant Likely
     
  • After refactoring the irqdomain code, there are a number of API
    functions that are merely empty wrappers around core code. Drop those
    wrappers out of the C file and replace them with static inlines in the
    header.

    Signed-off-by: Grant Likely

    Grant Likely
     
  • The NOMAP irq_domain type is only used by a handful of interrupt
    controllers and it unnecessarily complicates the code by adding special
    cases on how to look up mappings and different revmap functions are used
    for each type which need to validate the correct type is passed to it
    before performing the reverse map. Eliminating the revmap_type and
    making a single reverse mapping function simplifies the code. It also
    shouldn't be any slower than having separate revmap functions because
    the type of the revmap needed to be checked anyway.

    The linear and tree revmap types were already merged in a previous
    patch. This patch rolls the NOMAP or direct mapping behaviour into the
    same domain code making is possible for an irq domain to do any mapping
    type; linear, tree or direct; and that the mapping will be transparent
    to the interrupt controller driver.

    With this change, direct mappings will get stored in the linear or tree
    mapping for consistency. Reverse mapping from the hwirq to virq will go
    through the normal lookup process. However, any controller using a
    direct mapping can take advantage of knowing that hwirq==virq for any
    mapped interrupts skip doing a revmap lookup when handling IRQs.

    Signed-off-by: Grant Likely

    Grant Likely
     
  • Keeping them separate makes irq_domain more complex and adds a lot of
    code (as proven by the diffstat). Merging them simplifies the whole
    scheme. This change makes it so both the tree and linear methods can be
    used by the same irq_domain instance. If the hwirq is less than the
    ->linear_size, then the linear map is used to reverse map the hwirq.
    Otherwise the radix tree is used. The test for which map to use is no
    more expensive that the existing code, so the performance of fast path
    is preserved.

    It also means that complex interrupt controllers can use both the
    linear map and a tree in the same domain. This may be useful for an
    interrupt controller with a base set of core irqs and a large number
    of GPIOs which might be used as irqs. The linear map could cover the
    core irqs, and the tree used for thas irqs. The linear map could
    cover the core irqs, and the tree used for the gpios.

    v2: Drop reorganization of revmap data

    Signed-off-by: Grant Likely
    Cc: Paul Mundt
    Cc: Benjamin Herrenschmidt
    Cc: Thomas Gleixner
    Cc: Rob Herring

    Grant Likely
     
  • This patch adds a name field to the irq_domain structure to help mere
    mortals understand the mappings between irq domains and virqs. It also
    converts a number of places that have open-coded some kind of fudging
    an irqdomain name to use the new field. This means a more consistent
    display of names in irq domain log messages and debugfs output.

    Signed-off-by: Grant Likely

    Grant Likely
     
  • The LEGACY mapping unnecessarily complicates the irqdomain code and
    can easily be implemented with a linear mapping. By ripping it out
    and replacing it with the LINEAR mapping the object size of
    irqdomain.c shrinks by about 330 bytes (ARMv7) which offsets the
    additional allocation required by the linear map. It also makes it
    possible for current LEGACY map users to pre-allocate irq_descs for a
    subset of the hwirqs and dynamically allocate the rest as needed.

    Signed-off-by: Grant Likely
    Cc: Paul Mundt
    Cc: Benjamin Herrenschmidt
    Cc: Thomas Gleixner
    Cc: Rob Herring

    Grant Likely
     
  • Commit 98aa468e, "irqdomain: Support for static IRQ mapping and
    association" introduced an API for directly associating blocks of hwirqs
    to linux irqs. However, if any irq in that block failed to map (say if
    the mapping functions returns an error because the irq is already
    mapped) then the whole thing will fail and roll back. This is probably
    too aggressive since there are valid reasons why a mapping may fail.
    ie. Firmware may have a particular IRQ marked as unusable.

    This patch drops the error path out of irq_domain_associate(). If a
    mapping fails, then it is simply skipped. There is no reason to fail the
    entire allocation.

    v2: Still output an information message on failed mappings and make sure
    attempted mapping gets cleared out of the irq_data structure.

    Signed-off-by: Grant Likely
    Cc: Paul Mundt
    Cc: Benjamin Herrenschmidt
    Cc: Thomas Gleixner

    Grant Likely
     
  • Grant Likely
     

09 Jun, 2013

3 commits


29 May, 2013

9 commits

  • Document the lazy disable functionality. comment based on changelog of
    d209a699a0b975ad

    Signed-off-by: Andreas Fenkart
    Cc: balbi@ti.com
    Link: http://lkml.kernel.org/r/1368181290-1583-1-git-send-email-andreas.fenkart@streamunlimited.com
    Signed-off-by: Thomas Gleixner

    Andreas Fenkart
     
  • Some controllers have irqs that aren't wired up and must never be used.
    For the generic chip attached to an irq_domain this provides a mask that
    can be used to block out particular irqs so that they never get mapped.

    Signed-off-by: Grant Likely
    Link: http://lkml.kernel.org/r/1369793454-19197-2-git-send-email-grant.likely@linaro.org
    Signed-off-by: Thomas Gleixner

    Grant Likely
     
  • Provide infrastructure for irq chip implementations which work on
    linear irq domains.

    - Interface to allocate multiple generic chips which are associated to
    the irq domain.

    - Interface to get the generic chip pointer for a particular hardware
    interrupt in the domain.

    - irq domain mapping function to install the chip for a particular
    interrupt.

    Note: This lacks a removal function for now.

    [ Sebastian Hesselbarth: Mask cache and pointer math fixups ]

    Signed-off-by: Thomas Gleixner
    Cc: Thomas Petazzoni
    Cc: Andrew Lunn
    Cc: Russell King - ARM Linux
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: Jean-Francois Moine
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Jason Gunthorpe
    Cc: Gregory Clement
    Cc: Gerlando Falauto
    Cc: Rob Landley
    Acked-by: Grant Likely
    Cc: Maxime Ripard
    Cc: Ezequiel Garcia
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Sebastian Hesselbarth
    Link: http://lkml.kernel.org/r/20130506142539.450634298@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Preparatory patch for linear interrupt domains.

    Signed-off-by: Thomas Gleixner
    Cc: Thomas Petazzoni
    Cc: Andrew Lunn
    Cc: Russell King - ARM Linux
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: Jean-Francois Moine
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Jason Gunthorpe
    Cc: Gregory Clement
    Cc: Gerlando Falauto
    Cc: Rob Landley
    Acked-by: Grant Likely
    Cc: Maxime Ripard
    Cc: Ezequiel Garcia
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Sebastian Hesselbarth
    Link: http://lkml.kernel.org/r/20130506142539.377017672@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Some chips have weird bit mask access patterns instead of the linear
    you expect. Allow them to calculate the cached mask themself.

    Signed-off-by: Thomas Gleixner
    Cc: Thomas Petazzoni
    Cc: Andrew Lunn
    Cc: Russell King - ARM Linux
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: Jean-Francois Moine
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Jason Gunthorpe
    Cc: Gregory Clement
    Cc: Gerlando Falauto
    Cc: Rob Landley
    Acked-by: Grant Likely
    Cc: Maxime Ripard
    Cc: Ezequiel Garcia
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Sebastian Hesselbarth
    Link: http://lkml.kernel.org/r/20130506142539.302898834@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Cache the per irq bit mask instead of recalculating it over and over.

    Signed-off-by: Thomas Gleixner
    Cc: Thomas Petazzoni
    Cc: Andrew Lunn
    Cc: Russell King - ARM Linux
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: Jean-Francois Moine
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Jason Gunthorpe
    Cc: Gregory Clement
    Cc: Gerlando Falauto
    Cc: Rob Landley
    Acked-by: Grant Likely
    Cc: Maxime Ripard
    Cc: Ezequiel Garcia
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Sebastian Hesselbarth
    Link: http://lkml.kernel.org/r/20130506142539.227119865@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • There are cases where all irq_chip_type instances have separate mask
    registers, making a shared mask register cache unsuitable for the
    purpose.

    Introduce a new flag IRQ_GC_MASK_CACHE_PER_TYPE. If set, point the per
    chip mask pointer to the per chip private mask cache instead.

    [ tglx: Simplified code, renamed flag and massaged changelog ]

    Signed-off-by: Gerlando Falauto
    Cc: Andrew Lunn
    Cc: Joey Oravec
    Cc: Lennert Buytenhek
    Cc: Russell King - ARM Linux
    Cc: Jason Gunthorpe
    Cc: Holger Brunck
    Cc: Ezequiel Garcia
    Acked-by: Grant Likely
    Cc: Sebastian Hesselbarth
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Ben Dooks
    Cc: Gregory Clement
    Cc: Simon Guinot
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Thomas Petazzoni
    Cc: Jean-Francois Moine
    Cc: Nicolas Pitre
    Cc: Rob Landley
    Cc: Maxime Ripard
    Link: http://lkml.kernel.org/r/20130506142539.152569748@linutronix.de
    Signed-off-by: Thomas Gleixner

    Gerlando Falauto
     
  • Today the same interrupt mask cache (stored within struct irq_chip_generic)
    is shared between all the irq_chip_type instances. As there are instances
    where each irq_chip_type uses a distinct mask register (as it is the case
    for Orion SoCs), sharing a single mask cache may be incorrect.
    So add a distinct pointer for each irq_chip_type, which for now
    points to the original mask register within irq_chip_generic.
    So no functional changes here.

    [ tglx: Minor cosmetic tweaks ]

    Reported-by: Joey Oravec
    Signed-off-by: Simon Guinot
    Signed-off-by: Holger Brunck
    Signed-off-by: Gerlando Falauto
    Cc: Andrew Lunn
    Cc: Lennert Buytenhek
    Cc: Russell King - ARM Linux
    Cc: Jason Gunthorpe
    Cc: Holger Brunck
    Cc: Ezequiel Garcia
    Acked-by: Grant Likely
    Cc: Sebastian Hesselbarth
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Ben Dooks
    Cc: Gregory Clement
    Cc: Simon Guinot
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Thomas Petazzoni
    Cc: Jean-Francois Moine
    Cc: Nicolas Pitre
    Cc: Rob Landley
    Cc: Maxime Ripard
    Link: http://lkml.kernel.org/r/20130506142539.082226607@linutronix.de
    Signed-off-by: Thomas Gleixner

    Gerlando Falauto
     
  • Since we already have an irq_data_get_chip_type() function which returns
    a pointer to irq_chip_type, use that instead of cur_regs().

    Signed-off-by: Gerlando Falauto
    Cc: Andrew Lunn
    Cc: Joey Oravec
    Cc: Lennert Buytenhek
    Cc: Russell King - ARM Linux
    Cc: Jason Gunthorpe
    Cc: Holger Brunck
    Cc: Ezequiel Garcia
    Acked-by: Grant Likely
    Cc: Sebastian Hesselbarth
    Cc: Jason Cooper
    Cc: Arnd Bergmann
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Rob Herring
    Cc: Ben Dooks
    Cc: Gregory Clement
    Cc: Simon Guinot
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Thomas Petazzoni
    Cc: Jean-Francois Moine
    Cc: Nicolas Pitre
    Cc: Rob Landley
    Cc: Maxime Ripard
    Link: http://lkml.kernel.org/r/20130506142539.010164766@linutronix.de
    Signed-off-by: Thomas Gleixner

    Gerlando Falauto
     

06 May, 2013

1 commit

  • Some interrupt controllers refuse to map interrupts marked as
    "protected" by firwmare. Since we try to map everyting in the
    device-tree on some platforms, we end up with a lot of nasty
    WARN's in the boot log for what is a normal situation on those
    machines.

    This defines a specific return code (-EPERM) from the host map()
    callback which cause irqdomain to fail silently.

    MPIC is updated to return this when hitting a protected source
    printing only a single line message for diagnostic purposes.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt