23 Mar, 2016

1 commit

  • This config is selected by CONFIG_ARCH_HISI, so there is no point to have it
    user configurable.

    While at it move the config option to the proper place in the alphabetically
    sorted option list.

    Requested-by: Thomas Gleixner
    Signed-off-by: Ma Jun
    Cc: mark.rutland@arm.com
    Cc: jason@lakedaemon.net
    Cc: marc.zyngier@arm.com
    Cc: Catalin.Marinas@arm.com
    Cc: guohanjun@huawei.com
    Cc: Will.Deacon@arm.com
    Cc: huxinwei@huawei.com
    Cc: lizefan@huawei.com
    Cc: dingtianhong@huawei.com
    Cc: zhaojunhua@hisilicon.com
    Cc: liguozhu@hisilicon.com
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1458723993-21044-3-git-send-email-majun258@huawei.com
    Signed-off-by: Thomas Gleixner

    MaJun
     

21 Mar, 2016

2 commits

  • Each mbigen device is represented as a independent platform device. If the
    devices belong to the same mbigen hardware module, then the register space for
    these devices is the same. That leads to a resource conflict.

    The solution for this is to represent the mbigen module as a platform device
    and make the mbigen devices subdevices of that. The register space is
    associated to the mbigen module and therefor the resource conflict is avoided.

    [ tglx: Massaged changelog, cleaned up the code and removed the silly printk ]

    Signed-off-by: Ma Jun
    Cc: mark.rutland@arm.com
    Cc: jason@lakedaemon.net
    Cc: marc.zyngier@arm.com
    Cc: Catalin.Marinas@arm.com
    Cc: guohanjun@huawei.com
    Cc: Will.Deacon@arm.com
    Cc: huxinwei@huawei.com
    Cc: lizefan@huawei.com
    Cc: dingtianhong@huawei.com
    Cc: zhaojunhua@hisilicon.com
    Cc: liguozhu@hisilicon.com
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1458203641-17172-3-git-send-email-majun258@huawei.com
    Signed-off-by: Thomas Gleixner

    MaJun
     
  • Current code calls irq_domain_alloc_irqs_parent() in .alloc,
    so it should call irq_domain_free_irqs_parent() accordingly in .free.
    Fix it by switching to use irq_domain_free_irqs_common() instead of
    the open-coded private implementation.

    Signed-off-by: Axel Lin
    Cc: Alexandre Courbot
    Cc: Jason Cooper
    Cc: Stephen Warren
    Cc: Marc Zyngier
    Cc: Thierry Reding
    Cc: linux-tegra@vger.kernel.org
    Link: http://lkml.kernel.org/r/1458477845.28679.1.camel@ingics.com
    Signed-off-by: Thomas Gleixner

    Axel Lin
     

11 Mar, 2016

1 commit

  • The "msi_domain" variable is NULL here so it leads to a NULL dereference. It
    looks like we actually intended to free "middle_domain".

    Fixes: e6b78f2c3e14 ('irqchip: Add the Alpine MSIX interrupt controller')
    Signed-off-by: Dan Carpenter
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Cc: Antoine Tenart
    Cc: kernel-janitors@vger.kernel.org
    Cc: Tsahee Zidenberg
    Link: http://lkml.kernel.org/r/20160311081442.GE31887@mwanda
    Signed-off-by: Thomas Gleixner

    Dan Carpenter
     

10 Mar, 2016

2 commits

  • The of_io_request_and_map() returns a valid pointer in iomem region or
    ERR_PTR(), check for NULL always fails and may cause a NULL pointer
    dereference on error path.

    Fixes: 25e34b44313b ("irqchip/mxs: Prepare driver for hardware with different offsets")
    Signed-off-by: Vladimir Zapolskiy
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Cc: Oleksij Rempel
    Cc: Sascha Hauer
    Cc: Shawn Guo
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1457486500-10237-1-git-send-email-vz@mleia.com
    Signed-off-by: Thomas Gleixner

    Vladimir Zapolskiy
     
  • The of_io_request_and_map() returns a valid pointer in iomem region or
    ERR_PTR(), check for NULL always fails and may cause a NULL pointer
    dereference on error path.

    Fixes: 0e841b04c829 ("irqchip/sunxi-nmi: Switch to of_io_request_and_map() from of_iomap()")
    Signed-off-by: Vladimir Zapolskiy
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Cc: Chen-Yu Tsai
    Cc: Maxime Ripard
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1457486489-10189-1-git-send-email-vz@mleia.com
    Signed-off-by: Thomas Gleixner

    Vladimir Zapolskiy
     

09 Mar, 2016

8 commits

  • In the add-on file for the GIC dealing with the RealView family
    we currently only handle the PB11MPCore, let's extend this to
    manage the RealView EB ARM11MPCore as well. The Revision B of the
    ARM11MPCore core tile is a bit special and needs special handling
    as it moves a system control register around at random.

    Cc: Arnd Bergmann
    Cc: devicetree@vger.kernel.org
    Acked-by: Marc Zyngier
    Signed-off-by: Linus Walleij
    Signed-off-by: Marc Zyngier

    Linus Walleij
     
  • This patch adds the Alpine MSIX interrupt controller driver.

    Signed-off-by: Antoine Tenart
    Signed-off-by: Tsahee Zidenberg
    Acked-by: Marc Zyngier
    Signed-off-by: Marc Zyngier

    Antoine Tenart
     
  • Always return IRQ_SET_MASK_OK_DONE instead of IRQ_SET_MASK_OK when the
    affinity has been updated. When using stacked irqchips, returning
    IRQ_SET_MASK_OK_DONE means skipping all descendant irqchips.

    Signed-off-by: Antoine Tenart
    Acked-by: Marc Zyngier
    Signed-off-by: Marc Zyngier

    Antoine Tenart
     
  • gicv3_init_bases() is the only caller for its_init(),
    also it is a __init function, so mark its_init() as __init too,
    then recursively mark the functions called as __init.

    This will help to introduce ITS initialization using ACPI tables as
    we will use acpi_table_parse_entries family functions there which
    belong to __init section as well.

    Acked-by: Marc Zyngier
    Signed-off-by: Hanjun Guo
    Signed-off-by: Tomasz Nowicki
    Signed-off-by: Marc Zyngier

    Tomasz Nowicki
     
  • The gic_root_node variable defined in ITS driver is not actually
    used, so just remove it.

    Acked-by: Marc Zyngier
    Signed-off-by: Hanjun Guo
    Signed-off-by: Marc Zyngier

    Hanjun Guo
     
  • Following ACPI spec:
    On systems supporting GICv3 and above, GICR Base Address in MADT GICC
    structure holds the 64-bit physical address of the associated Redistributor.
    If all of the GIC Redistributors are in the always-on power domain,
    GICR structures should be used to describe the Redistributors instead,
    and this field must be set to 0.

    It means that we have two ways to initialize registirbutors map.
    1. via GICD structure which can accommodate many redistributors as a region
    2. via GICC which is able to describe single redistributor

    This patch is going to add support for second option.
    Considering redistributors, GICD and GICC subtables have be mutually
    exclusive. While discovering and mapping redistributor, we need to know
    its size in advance. For the GICC case, redistributor can be in
    a power-domain that is off, thus we cannot relay on GICR TYPER register.
    Therefore, we get GIC version from distributor register and map 2xSZ_64K
    for GICv3 and 4xSZ_64K for GICv4.

    Acked-by: Marc Zyngier
    Signed-off-by: Hanjun Guo
    Signed-off-by: Tomasz Nowicki
    Signed-off-by: Marc Zyngier

    Tomasz Nowicki
     
  • With the refator of gic_of_init(), GICv3/4 can be initialized
    by gic_init_bases() with gic distributor base address and gic
    redistributor region(s).

    So get the redistributor region base addresses from MADT GIC
    redistributor subtable, and the distributor base address from
    GICD subtable to init GICv3 irqchip in ACPI way.

    Note: GIC redistributor base address may also be provided in
    GICC structures on systems supporting GICv3 and above if the GIC
    Redistributors are not in the always-on power domain, this
    patch didn't implement such feature yet.

    Acked-by: Marc Zyngier
    Signed-off-by: Tomasz Nowicki
    Signed-off-by: Hanjun Guo
    Signed-off-by: Marc Zyngier

    Tomasz Nowicki
     
  • Isolate hardware abstraction (FDT) code to gic_of_init().
    Rest of the logic goes to gic_init_bases() and expects well
    defined data to initialize GIC properly. The same solution
    is used for GICv2 driver.

    This is needed for ACPI initialization later.

    Acked-by: Marc Zyngier
    Signed-off-by: Tomasz Nowicki
    Signed-off-by: Hanjun Guo
    Signed-off-by: Marc Zyngier

    Tomasz Nowicki
     

08 Mar, 2016

1 commit


25 Feb, 2016

6 commits

  • The new property will allow to specify the range of GIC hwirqs to use for IPIs.

    This is an optinal property. We preserve the previous behaviour of allocating
    the last 2 * gic_vpes if it's not specified or DT is not supported.

    Signed-off-by: Qais Yousef
    Acked-by: Rob Herring
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-20-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     
  • This commit does several things to avoid breaking bisectability.

    1- Remove IPI init code from irqchip/mips-gic
    2- Implement the new irqchip->send_ipi() in irqchip/mips-gic
    3- Select GENERIC_IRQ_IPI Kconfig symbol for MIPS_GIC
    4- Change MIPS SMP to use the generic IPI implementation

    Only the SMP variants that use GIC were converted as it's the only irqchip that
    will have the support for generic IPI for now.

    Signed-off-by: Qais Yousef
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-18-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     
  • When setting the mapping for a hwirq, make sure we clear percpu_masks for
    all other cpus in case it was set previously.

    Signed-off-by: Qais Yousef
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-16-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     
  • NR_CPUS is set by Kconfig and could be much higher than what actually is in the
    system.

    gic_vpes should be a true representitives of the number of cpus in the system,
    so use it instead.

    Signed-off-by: Qais Yousef
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-15-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     
  • Now the root gic_irq_domain is split into device and IPI domains.

    This form provides a better representation of how the root domain is split into
    2. One for devices and one for IPIs.

    Signed-off-by: Qais Yousef
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-14-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     
  • Add a new ipi domain on top of the normal domain.

    MIPS GIC now supports dynamic allocation of an IPI.

    Signed-off-by: Qais Yousef
    Acked-by: Ralf Baechle
    Cc:
    Cc:
    Cc:
    Cc:
    Cc:
    Cc: Qais Yousef
    Link: http://lkml.kernel.org/r/1449580830-23652-13-git-send-email-qais.yousef@imgtec.com
    Signed-off-by: Thomas Gleixner

    Qais Yousef
     

22 Feb, 2016

2 commits


21 Feb, 2016

3 commits


19 Feb, 2016

2 commits

  • Moving an SPI around doesn't require any extra work from the rest
    of the stack, and specially not for MSI-generated SPIs.

    It is then worth returning IRQ_SET_MASK_OK_DONE instead of
    IRQ_SET_MASK_OK, and simplify the other irqchips that rely on
    this behaviour (GICv2m and Marvell's ODMI controller).

    Signed-off-by: Marc Zyngier
    Acked-by: Thomas Petazzoni
    Link: https://lkml.kernel.org/r/1455894029-17270-1-git-send-email-marc.zyngier@arm.com
    Signed-off-by: Jason Cooper

    Marc Zyngier
     
  • This commits adds a new irqchip driver that handles the ODMI
    controller found on Marvell 7K/8K processors. The ODMI controller
    provide MSI interrupt functionality to on-board peripherals, much like
    the GIC-v2m.

    Signed-off-by: Thomas Petazzoni
    Reviewed-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/1455888883-5127-1-git-send-email-thomas.petazzoni@free-electrons.com
    Signed-off-by: Jason Cooper

    Thomas Petazzoni
     

18 Feb, 2016

5 commits

  • ts4800_ic_ops is only referenced in this driver, so make it static.
    In additional, it's never get modified thus also make it const.

    Signed-off-by: Axel Lin
    Reviewed-by: Damien Riegel
    Link: https://lkml.kernel.org/r/1455457804.13175.1.camel@ingics.com
    Signed-off-by: Jason Cooper

    Axel Lin
     
  • The writel() immediately after this has a barrier, anyway.

    Signed-off-by: Eric Anholt
    Link: https://lkml.kernel.org/r/1454620468-31303-1-git-send-email-eric@anholt.net
    Signed-off-by: Jason Cooper

    Eric Anholt
     
  • The Technologic Systems TS-4800 is an i.MX515 board, so its drivers
    are useless unless building a SOC_IMX51 kernel, except for build
    testing purposes.

    Signed-off-by: Jean Delvare
    Cc: Damien Riegel
    Cc: Thomas Gleixner
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Link: https://lkml.kernel.org/r/20160209111920.1ec318bd@endymion
    Signed-off-by: Jason Cooper

    Jean Delvare
     
  • This adds support for the secondary interrupt controller used in Sigma
    Designs SMP86xx and SMP87xx chips.

    Signed-off-by: Mans Rullgard
    Acked-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/1453313237-18570-2-git-send-email-mans@mansr.com
    Signed-off-by: Jason Cooper

    Mans Rullgard
     
  • Function its_alloc_tables() maintains two local variables, "order" and
    and "alloc_size", to hold memory size that has been allocated to
    ITS_BASEn. We don't always refresh the variable alloc_size whenever
    value of the variable order changes, causing the following two
    problems.

    - Cache flush operation with size more than required.
    - Information reported by pr_info is not correct.

    Use a helper macro that converts page order to size in bytes instead of
    variable "alloc_size" to fix both the problems.

    Signed-off-by: Shanker Donthineni
    Signed-off-by: Marc Zyngier

    Shanker Donthineni
     

17 Feb, 2016

7 commits

  • Signed-off-by: Alban Bedel
    Acked-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/1453553867-27003-2-git-send-email-albeu@free.fr
    Signed-off-by: Jason Cooper

    Alban Bedel
     
  • The driver stays the same but the initialization changes a bit.
    For OF boards we now get the memory map from the OF node and use
    a linear mapping instead of the legacy mapping. For legacy boards
    we still use a legacy mapping and just pass down all the parameters
    from the board init code.

    Signed-off-by: Alban Bedel
    Acked-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/1453553867-27003-1-git-send-email-albeu@free.fr
    Signed-off-by: Jason Cooper

    Alban Bedel
     
  • The irq-armada-370-xp driver can only be built for ARM 32 bits. The mvebu
    family had grown with a new ARM64 SoC which will also select the
    ARCH_MEVBU configuration. Since "ARM: mvebu: use the ARMADA_370_XP_IRQ
    option", the ARM32 mvebu SoC directly select this new option. Selecting
    it by default when ARCH_MEVBU is selected is no more needed.

    This patch removes this dependency, thanks to this, a kernel for ARM64
    mvebu SoC can be built without error due this driver.

    Signed-off-by: Gregory CLEMENT
    Link: https://lkml.kernel.org/r/1454951660-13289-3-git-send-email-gregory.clement@free-electrons.com
    Signed-off-by: Jason Cooper

    Gregory CLEMENT
     
  • Add support for allocating multiple MSIs at the same time, so that the
    MSI_FLAG_MULTI_PCI_MSI flag can be added to the msi_domain_info
    structure.

    Signed-off-by: Thomas Petazzoni
    Reviewed-by: Gregory CLEMENT
    Link: https://lkml.kernel.org/r/1455115621-22846-6-git-send-email-thomas.petazzoni@free-electrons.com
    Signed-off-by: Jason Cooper

    Thomas Petazzoni
     
  • In order to make the output of /proc/interrupts, use shorter names for
    the irq_chip registered by the irq-armada-370-xp driver. Using capital
    letters also matches better what is done for the GIC driver, which
    uses just "GIC" as the irq_chip->name.

    Signed-off-by: Thomas Petazzoni
    Acked-by: Gregory CLEMENT
    Link: https://lkml.kernel.org/r/1455115621-22846-5-git-send-email-thomas.petazzoni@free-electrons.com
    Signed-off-by: Jason Cooper

    Thomas Petazzoni
     
  • As suggested by Gregory Clement, this commit adjusts the
    irq-armada-370-xp driver to use the PCI_MSI_DOORBELL_START define in
    the armada_370_xp_handle_msi_irq() function, rather than hardcoding
    its value.

    Suggested-by: Gregory CLEMENT
    Signed-off-by: Thomas Petazzoni
    Acked-by: Gregory CLEMENT
    Link: https://lkml.kernel.org/r/1455115621-22846-4-git-send-email-thomas.petazzoni@free-electrons.com
    Signed-off-by: Jason Cooper

    Thomas Petazzoni
     
  • This commit moves the irq-armada-370-xp driver from using the
    PCI-specific MSI infrastructure to the generic MSI infrastructure, to
    which drivers are progressively converted.

    In this hardware, the MSI controller is directly bundled inside the
    interrupt controller, so we have a single Device Tree node to which
    multiple IRQ domaines are attached: the wired interrupt domain and the
    MSI interrupt domain. In order to ensure that they can be
    differentiated, we have to force the bus_token of the wired interrupt
    domain to be DOMAIN_BUS_WIRED. The MSI domain bus_token is
    automatically set to the appropriate value by
    pci_msi_create_irq_domain().

    Signed-off-by: Thomas Petazzoni
    Suggested-by: Marc Zyngier
    Reviewed-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/1455115621-22846-3-git-send-email-thomas.petazzoni@free-electrons.com
    Signed-off-by: Jason Cooper

    Thomas Petazzoni