18 May, 2020

1 commit

  • Coverity report: CID = 4327643

    incompatible_cast: Pointer &irqchip_data->irqstat points to an object whose
    effective type is unsigned int (32 bits, unsigned) but is dereferenced as a
    wider unsigned long (64 bits, unsigned). This may lead to memory corruption.

    Reviewed-by: Fugang Duan
    Signed-off-by: Joakim Zhang

    Joakim Zhang
     

08 Apr, 2020

2 commits


08 Mar, 2020

1 commit

  • Merge Linux stable release v5.4.24 into imx_5.4.y

    * tag 'v5.4.24': (3306 commits)
    Linux 5.4.24
    blktrace: Protect q->blk_trace with RCU
    kvm: nVMX: VMWRITE checks unsupported field before read-only field
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm/boot/dts/imx6sll-evk.dts
    arch/arm/boot/dts/imx7ulp.dtsi
    arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    drivers/clk/imx/clk-composite-8m.c
    drivers/gpio/gpio-mxc.c
    drivers/irqchip/Kconfig
    drivers/mmc/host/sdhci-of-esdhc.c
    drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
    drivers/net/can/flexcan.c
    drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
    drivers/net/ethernet/mscc/ocelot.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
    drivers/net/phy/realtek.c
    drivers/pci/controller/mobiveil/pcie-mobiveil-host.c
    drivers/perf/fsl_imx8_ddr_perf.c
    drivers/tee/optee/shm_pool.c
    drivers/usb/cdns3/gadget.c
    kernel/sched/cpufreq.c
    net/core/xdp.c
    sound/soc/fsl/fsl_esai.c
    sound/soc/fsl/fsl_sai.c
    sound/soc/sof/core.c
    sound/soc/sof/imx/Kconfig
    sound/soc/sof/loader.c

    Jason Liu
     

24 Feb, 2020

4 commits

  • [ Upstream commit 107945227ac5d4c37911c7841b27c64b489ce9a9 ]

    It looks like an obvious mistake to use its_mapc_cmd descriptor when
    building the INVALL command block. It so far worked by luck because
    both its_mapc_cmd.col and its_invall_cmd.col sit at the same offset of
    the ITS command descriptor, but we should not rely on it.

    Fixes: cc2d3216f53c ("irqchip: GICv3: ITS command queue")
    Signed-off-by: Zenghui Yu
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/20191202071021.1251-1-yuzenghui@huawei.com
    Signed-off-by: Sasha Levin

    Zenghui Yu
     
  • [ Upstream commit 926b5dfa6b8dc666ff398044af6906b156e1d949 ]

    We currently allocate redistributor region structures for
    individual redistributors when ACPI doesn't present us with
    compact MMIO regions covering multiple redistributors.

    It turns out that we allocate these structures even when
    the redistributor is flagged as disabled by ACPI. It works
    fine until someone actually tries to tarse one of these
    structures, and access the corresponding MMIO region.

    Instead, track the number of enabled redistributors, and
    only allocate what is required. This makes sure that there
    is no invalid data to misuse.

    Signed-off-by: Marc Zyngier
    Reported-by: Heyi Guo
    Tested-by: Heyi Guo
    Link: https://lore.kernel.org/r/20191216062745.63397-1-guoheyi@huawei.com
    Signed-off-by: Sasha Levin

    Marc Zyngier
     
  • [ Upstream commit d6152e6ec9e2171280436f7b31a571509b9287e1 ]

    The following crash can be seen for setting
    CONFIG_DEBUG_TEST_DRIVER_REMOVE=y for DT FW (which some people still use):

    Hisilicon MBIGEN-V2 60080000.interrupt-controller: Failed to create mbi-gen irqdomain
    Hisilicon MBIGEN-V2: probe of 60080000.interrupt-controller failed with error -12

    [...]

    Unable to handle kernel paging request at virtual address 0000000000005008
    Mem abort info:
    ESR = 0x96000004
    EC = 0x25: DABT (current EL), IL = 32 bits
    SET = 0, FnV = 0
    EA = 0, S1PTW = 0
    Data abort info:
    ISV = 0, ISS = 0x00000004
    CM = 0, WnR = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=0000041fb9990000
    [0000000000005008] pgd=0000000000000000
    Internal error: Oops: 96000004 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 7 PID: 1 Comm: swapper/0 Not tainted 5.5.0-rc6-00002-g3fc42638a506-dirty #1622
    Hardware name: Huawei Taishan 2280 /D05, BIOS Hisilicon D05 IT21 Nemo 2.0 RC0 04/18/2018
    pstate: 40000085 (nZcv daIf -PAN -UAO)
    pc : mbigen_set_type+0x38/0x60
    lr : __irq_set_trigger+0x6c/0x188
    sp : ffff800014b4b400
    x29: ffff800014b4b400 x28: 0000000000000007
    x27: 0000000000000000 x26: 0000000000000000
    x25: ffff041fd83bd0d4 x24: ffff041fd83bd188
    x23: 0000000000000000 x22: ffff80001193ce00
    x21: 0000000000000004 x20: 0000000000000000
    x19: ffff041fd83bd000 x18: ffffffffffffffff
    x17: 0000000000000000 x16: 0000000000000000
    x15: ffff8000119098c8 x14: ffff041fb94ec91c
    x13: ffff041fb94ec1a1 x12: 0000000000000030
    x11: 0101010101010101 x10: 0000000000000040
    x9 : 0000000000000000 x8 : ffff041fb98c6680
    x7 : ffff800014b4b380 x6 : ffff041fd81636c8
    x5 : 0000000000000000 x4 : 000000000000025f
    x3 : 0000000000005000 x2 : 0000000000005008
    x1 : 0000000000000004 x0 : 0000000080000000
    Call trace:
    mbigen_set_type+0x38/0x60
    __setup_irq+0x744/0x900
    request_threaded_irq+0xe0/0x198
    pcie_pme_probe+0x98/0x118
    pcie_port_probe_service+0x38/0x78
    really_probe+0xa0/0x3e0
    driver_probe_device+0x58/0x100
    __device_attach_driver+0x90/0xb0
    bus_for_each_drv+0x64/0xc8
    __device_attach+0xd8/0x138
    device_initial_probe+0x10/0x18
    bus_probe_device+0x90/0x98
    device_add+0x4c4/0x770
    device_register+0x1c/0x28
    pcie_port_device_register+0x1e4/0x4f0
    pcie_portdrv_probe+0x34/0xd8
    local_pci_probe+0x3c/0xa0
    pci_device_probe+0x128/0x1c0
    really_probe+0xa0/0x3e0
    driver_probe_device+0x58/0x100
    __device_attach_driver+0x90/0xb0
    bus_for_each_drv+0x64/0xc8
    __device_attach+0xd8/0x138
    device_attach+0x10/0x18
    pci_bus_add_device+0x4c/0xb8
    pci_bus_add_devices+0x38/0x88
    pci_host_probe+0x3c/0xc0
    pci_host_common_probe+0xf0/0x208
    hisi_pcie_almost_ecam_probe+0x24/0x30
    platform_drv_probe+0x50/0xa0
    really_probe+0xa0/0x3e0
    driver_probe_device+0x58/0x100
    device_driver_attach+0x6c/0x90
    __driver_attach+0x84/0xc8
    bus_for_each_dev+0x74/0xc8
    driver_attach+0x20/0x28
    bus_add_driver+0x148/0x1f0
    driver_register+0x60/0x110
    __platform_driver_register+0x40/0x48
    hisi_pcie_almost_ecam_driver_init+0x1c/0x24

    The specific problem here is that the mbigen driver real probe has failed
    as the mbigen_of_create_domain()->of_platform_device_create() call fails,
    the reason for that being that we never destroyed the platform device
    created during the remove test dry run and there is some conflict.

    Since we generally would never want to unbind this driver, and to save
    adding a driver tear down path for that, just set the driver
    .suppress_bind_attrs member to avoid this possibility.

    Signed-off-by: John Garry
    Signed-off-by: Marc Zyngier
    Reviewed-by: Hanjun Guo
    Link: https://lore.kernel.org/r/1579196323-180137-1-git-send-email-john.garry@huawei.com
    Signed-off-by: Sasha Levin

    John Garry
     
  • For i.MX8MP, the max irq numbers is 160, so correct the max irq number
    in GPCv2 driver to Fix the IRQ number get failure issue if requested
    irq number > 128.

    Signed-off-by: Jacky Bai
    Reviewed-by: Anson Huang

    Jacky Bai
     

21 Feb, 2020

1 commit

  • Add the wait mode workaround on i.MX8MP. it is just
    a provisional patch for Alpha release. it will be
    dropped in the future. As all the changes in this
    patch need to be revered for that time, just including
    all the changes of dts & driver in one patch to make
    it more easier to track all the changes.

    Coresight probe has some conlict with the IPI workaround.
    it is meaningless to put effort on resolve such conflict,
    and Coresight is not an must feature for Alpha release,
    disable the Coresight support directly.

    Signed-off-by: Jacky Bai
    Reviewed-by: Anson Huang

    Jacky Bai
     

23 Jan, 2020

1 commit

  • commit 0149385537e6d36f535fcd83cfcabf83a32f0836 upstream.

    Somehow CONFIG_SIFIVE_PLIC ended up outside of the "IRQ chip support"
    menu.

    Fixes: 8237f8bc4f6e ("irqchip: add a SiFive PLIC driver")
    Signed-off-by: Jonathan Neuschäfer
    Signed-off-by: Marc Zyngier
    Reviewed-by: Palmer Dabbelt
    Acked-by: Palmer Dabbelt
    Link: https://lore.kernel.org/r/20191002144452.10178-1-j.neuschaefer@gmx.net
    Signed-off-by: Greg Kroah-Hartman

    Jonathan Neuschäfer
     

19 Jan, 2020

1 commit


05 Jan, 2020

2 commits

  • [ Upstream commit 52ecc87642f273a599c9913b29fd179c13de457b ]

    If we cannot create the IRQ domain, the driver should fail to probe
    instead of succeeding with just a warning message.

    Signed-off-by: Paul Cercueil
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/1570015525-27018-3-git-send-email-zhouyanjie@zoho.com
    Signed-off-by: Sasha Levin

    Paul Cercueil
     
  • [ Upstream commit 27eebb60357ed5aa6659442f92907c0f7368d6ae ]

    If the 'brcm,irq-can-wake' property is specified, make sure we also
    enable the corresponding parent interrupt we are attached to.

    Signed-off-by: Florian Fainelli
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/20191024201415.23454-4-f.fainelli@gmail.com
    Signed-off-by: Sasha Levin

    Florian Fainelli
     

02 Dec, 2019

1 commit

  • * qe/next: (6 commits)
    config/qe: add irq-qeic support.
    QE: remove PPCisms for QE
    irqchip/qeic: remove PPCisms for QEIC
    irqchip/qeic: merge qeic_of_init into qe_ic_init
    irqchip/qeic: merge qeic init code from platforms to a common function
    ...

    Dong Aisheng
     

26 Nov, 2019

1 commit

  • Fix below build error when CONFIG_SMP is NOT selected:

    drivers/irqchip/irq-imx-gpcv2.c: In function "imx_gpcv2_wake_request_fixup":
    drivers/irqchip/irq-imx-gpcv2.c:123:2: error: implicit declaration of function
    "set_smp_cross_call" [-Werror=implicit-function-declaration]
    123 | set_smp_cross_call(imx_gpcv2_raise_softirq);
    | ^~~~~~~~~~~~~~~~~~
    cc1: some warnings being treated as errors
    make[3]: *** [drivers/irqchip/irq-imx-gpcv2.o] Error 1

    Signed-off-by: Anson Huang
    Reviewed-by: Robin Gong

    Anson Huang
     

25 Nov, 2019

13 commits

  • As of now, if somebody masks/unmasks any irq while the set_wake goes
    to TF-A, the masking/unmasking might be overwritten. So add new irq_chip ops
    that implement the masking, unmasking, set_wake and set_affinity and each
    calls into TF-A internally. Also add the ERR11171 knob that allows
    initializing the core wake-up workaround by registering our own
    smp_cross_call funtion and call the old one from within. The ERR11171 knob
    gets enabled by default if the machine is i.MX8MQ.

    Signed-off-by: Abel Vesa
    Reviewed-by: Jacky Bai

    Abel Vesa
     
  • Fix below build warning when built with imx_v6_v7_defconfig:

    drivers/irqchip/irq-imx-gpcv2.c: In function 'imx_gpcv2_irq_set_wake':
    drivers/irqchip/irq-imx-gpcv2.c:129:23: warning: unused variable 'res' [-Wunused-variable]
    struct arm_smccc_res res;
    ^

    Signed-off-by: Anson Huang

    Anson Huang
     
  • The wakeup irq info need to be provided to ATF side, then
    ATF side can config the correct wakeup IRQ when entering
    suspend.

    Signed-off-by: Jacky Bai

    Jacky Bai
     
  • Fix below build error when built with imx_v6_v7_defconfig:

    drivers/irqchip/irq-imx-gpcv2.c: In function 'imx_gpcv2_wake_request_fixup':
    drivers/irqchip/irq-imx-gpcv2.c:112:28: error: '__smp_cross_call' undeclared (first use in this function); did you mean 'set_smp_cross_call'?
    __gic_v3_smp_cross_call = __smp_cross_call;
    ^~~~~~~~~~~~~~~~
    set_smp_cross_call
    drivers/irqchip/irq-imx-gpcv2.c:112:28: note: each undeclared identifier is reported only once for each function it appears in

    Signed-off-by: Anson Huang

    Anson Huang
     
  • Not all EL3 have the FSL_SIP_CONFIG_GPC_CORE_WAKE, therefore disable
    the cpuidle to avoid all the cores going to sleep ending up with a
    hang. This allows all the EL3 implementations to work with i.MX8MQ
    even if they do not support core wake-up through GPC as a workaround.

    Signed-off-by: Abel Vesa

    Abel Vesa
     
  • i.MX8MQ is missing the wake_request signals from GIC to GPCv2. This indirectly
    breaks cpuidle support due to inability to wake target cores on IPIs.

    Here is the link to the errata (see e11171):

    https://www.nxp.com/docs/en/errata/IMX8MDQLQ_0N14W.pdf

    Now, in order to fix this, we can trigger IRQ 32 (hwirq 0) to all the cores by
    setting 12th bit in IOMUX_GPR1 register. In order to control the target cores
    only, that is, not waking up all the cores every time, we can unmask/mask the
    IRQ 32 in the first GPC IMR register. So basically we can leave the IOMUX_GPR1
    12th bit always set and just play with the masking and unmasking the IRO 32 for
    each independent core.

    Since EL3 is the one that deals with powering down/up the cores, and since the
    cores wake up in EL3, EL3 should be the one to control the IMRs in this case.
    This implies we need to get into EL3 on every IPI to do the unmasking, leaving
    the masking to be done on the power-up sequence by the core itself.

    In order to be able to get into EL3 on each IPI, we 'hijack' the registered smp
    cross call handler, in this case the gic_raise_softirq which is registered by
    the irq-gic-v3 driver and register our own handler instead. This new handler is
    basically a wrapper over the hijacked handler plus the call into EL3.

    To get into EL3, we use a custom vendor SIP id added just for this purpose.

    All of this is conditional for i.MX8MQ only.

    Signed-off-by: Abel Vesa

    Abel Vesa
     
  • In some subsystem of IMX8, irqsteer is under multi power domains
    and they need to be actived when irqsteer work.

    irqsteer of imx8qxp image subsystem need CSI and ISI power domains
    to be actived, so add multi-pd support as an optional feature for
    irqsteer driver

    The power-domains on imx8qxp are meant to look like this:
    power-domains = , ;
    power-domain-names = "pd_csi", "pd_isi_ch0";

    Signed-off-by: Guoniu.zhou

    Guoniu.zhou
     
  • Add intmux irq driver support.

    Signed-off-by: Joakim Zhang

    Joakim Zhang
     
  • Signed-off-by: Zhao Qiang

    Zhao Qiang
     
  • QEIC was supported on PowerPC, and dependent on PPC,
    Now it is supported on other platforms, so remove PPCisms.

    Signed-off-by: Zhao Qiang

    Zhao Qiang
     
  • qeic_of_init just get device_node of qeic from dtb and call qe_ic_init,
    pass the device_node to qe_ic_init.
    So merge qeic_of_init into qe_ic_init to get the qeic node in
    qe_ic_init.

    Signed-off-by: Zhao Qiang

    Zhao Qiang
     
  • The codes of qe_ic init from a variety of platforms are redundant,
    merge them to a common function and put it to irqchip/irq-qeic.c

    For non-p1021_mds mpc85xx_mds boards, use "qe_ic_init(np, 0,
    qe_ic_cascade_low_mpic, qe_ic_cascade_high_mpic);" instead of
    "qe_ic_init(np, 0, qe_ic_cascade_muxed_mpic, NULL);".

    qe_ic_cascade_muxed_mpic was used for boards has the same interrupt
    number for low interrupt and high interrupt, qe_ic_init has checked
    if "low interrupt == high interrupt"

    Signed-off-by: Zhao Qiang

    Zhao Qiang
     
  • move the driver from drivers/soc/fsl/qe to drivers/irqchip,
    merge qe_ic.h and qe_ic.c into irq-qeic.c.

    Signed-off-by: Zhao Qiang

    Zhao Qiang
     

25 Oct, 2019

3 commits

  • …/maz/arm-platforms into irq/urgent

    Pull the second lot of irqchip updates for 5.4 from Marc Zyngier:

    - Sifive PLIC: force driver to skip non-relevant contexts
    - GICv4: Don't send VMOVP commands to ITSs that don't have
    this vPE mapped

    Thomas Gleixner
     
  • Modify plic_init() to skip .dts interrupt contexts other
    than supervisor external interrupt.

    The .dts entry for plic may specify multiple interrupt contexts.
    For example, it may assign two entries IRQ_M_EXT and IRQ_S_EXT,
    in that order, to the same interrupt controller. This patch
    modifies plic_init() to skip the IRQ_M_EXT context since
    IRQ_S_EXT is currently the only supported context.

    If IRQ_M_EXT is not skipped, plic_init() will report "handler
    already present for context" when it comes across the IRQ_S_EXT
    context in the next iteration of its loop.

    Without this patch, .dts would have to be edited to replace the
    value of IRQ_M_EXT with -1 for it to be skipped.

    Signed-off-by: Alan Mikhak
    Signed-off-by: Marc Zyngier
    Reviewed-by: Christoph Hellwig
    Acked-by: Paul Walmsley # arch/riscv
    Link: https://lkml.kernel.org/r/1571933503-21504-1-git-send-email-alan.mikhak@sifive.com

    Alan Mikhak
     
  • On a system without Single VMOVP support (say GITS_TYPER.VMOVP == 0),
    we will map vPEs only on ITSs that will actually control interrupts
    for the given VM. And when moving a vPE, the VMOVP command will be
    issued only for those ITSs.

    But when issuing VMOVPs we seemed fail to present the exact ITSList
    to ITSs who are actually included in the synchronization operation.
    The its_list_map we're currently using includes all ITSs in the system,
    even though some of them don't have the corresponding vPE mapping at all.

    Introduce get_its_list() to get the per-VM its_list_map, to indicate
    which ITSs have vPE mappings for the given VM, and use this map as
    the expected ITSList when building VMOVP. This is hopefully a performance
    gain not to do some synchronization with those unsuspecting ITSs.
    And initialize the whole command descriptor to zero at beginning, since
    the seq_num and its_list should be RES0 when GITS_TYPER.VMOVP == 1.

    Signed-off-by: Zenghui Yu
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/1571802386-2680-1-git-send-email-yuzenghui@huawei.com

    Zenghui Yu
     

15 Oct, 2019

1 commit


23 Sep, 2019

1 commit

  • Pull MIPS updates from Paul Burton:
    "Main MIPS changes:

    - boot_mem_map is removed, providing a nice cleanup made possible by
    the recent removal of bootmem.

    - Some fixes to atomics, in general providing compiler barriers for
    smp_mb__{before,after}_atomic plus fixes specific to Loongson CPUs
    or MIPS32 systems using cmpxchg64().

    - Conversion to the new generic VDSO infrastructure courtesy of
    Vincenzo Frascino.

    - Removal of undefined behavior in set_io_port_base(), fixing the
    behavior of some MIPS kernel configurations when built with recent
    clang versions.

    - Initial MIPS32 huge page support, functional on at least Ingenic
    SoCs.

    - pte_special() is now supported for some configurations, allowing
    among other things generic fast GUP to be used.

    - Miscellaneous fixes & cleanups.

    And platform specific changes:

    - Major improvements to Ingenic SoC support from Paul Cercueil,
    mostly enabled by the inclusion of the new TCU (timer-counter unit)
    drivers he's spent a very patient year or so working on. Plus some
    fixes for X1000 SoCs from Zhou Yanjie.

    - Netgear R6200 v1 systems are now supported by the bcm47xx platform.

    - DT updates for BMIPS, Lantiq & Microsemi Ocelot systems"

    * tag 'mips_5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (89 commits)
    MIPS: Detect bad _PFN_SHIFT values
    MIPS: Disable pte_special() for MIPS32 with RiXi
    MIPS: ralink: deactivate PCI support for SOC_MT7621
    mips: compat: vdso: Use legacy syscalls as fallback
    MIPS: Drop Loongson _CACHE_* definitions
    MIPS: tlbex: Remove cpu_has_local_ebase
    MIPS: tlbex: Simplify r3k check
    MIPS: Select R3k-style TLB in Kconfig
    MIPS: PCI: refactor ioc3 special handling
    mips: remove ioremap_cachable
    mips/atomic: Fix smp_mb__{before,after}_atomic()
    mips/atomic: Fix loongson_llsc_mb() wreckage
    mips/atomic: Fix cmpxchg64 barriers
    MIPS: Octeon: remove duplicated include from dma-octeon.c
    firmware: bcm47xx_nvram: Allow COMPILE_TEST
    firmware: bcm47xx_nvram: Correct size_t printf format
    MIPS: Treat Loongson Extensions as ASEs
    MIPS: Remove dev_err() usage after platform_get_irq()
    MIPS: dts: mscc: describe the PTP ready interrupt
    MIPS: dts: mscc: describe the PTP register range
    ...

    Linus Torvalds
     

18 Sep, 2019

3 commits

  • The SiFive PLIC interrupt controller seems to have all the HW
    features to support the fasteoi flow, but the driver seems to be
    stuck in a distant past. Bring it into the 21st century.

    Signed-off-by: Marc Zyngier
    Tested-by: Palmer Dabbelt (QEMU Boot)
    Tested-by: Darius Rad (on 2 HW PLIC implementations)
    Tested-by: Paul Walmsley (HiFive Unleashed)
    Reviewed-by: Palmer Dabbelt
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/8636gxskmj.wl-maz@kernel.org

    Marc Zyngier
     
  • As per GIC spec, ITLinesNumber indicates the maximum SPI INTID that
    the GIC implementation supports. And the maximum SPI INTID an
    implementation might support is 1019 (field value 11111).

    max(GICD_TYPER_SPIS(...), 1020) is not what we actually want for
    GIC_LINE_NR. Fix it to min(GICD_TYPER_SPIS(...), 1020).

    Signed-off-by: Zenghui Yu
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/1568789850-14080-1-git-send-email-yuzenghui@huawei.com

    Zenghui Yu
     
  • Pull core irq updates from Thomas Gleixner:
    "Updates from the irq departement:

    - Update the interrupt spreading code so it handles numa node with
    different CPU counts properly.

    - A large overhaul of the ARM GiCv3 driver to support new PPI and SPI
    ranges.

    - Conversion of all alloc_fwnode() users to use physical addresses
    instead of virtual addresses so the virtual addresses are not
    leaked. The physical address is sufficient to identify the
    associated interrupt chip.

    - Add support for Marvel MMP3, Amlogic Meson SM1 interrupt chips.

    - Enforce interrupt threading at compile time if RT is enabled.

    - Small updates and improvements all over the place"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
    irqchip/gic-v3-its: Fix LPI release for Multi-MSI devices
    irqchip/uniphier-aidet: Use devm_platform_ioremap_resource()
    irqdomain: Add the missing assignment of domain->fwnode for named fwnode
    irqchip/mmp: Coexist with GIC root IRQ controller
    irqchip/mmp: Mask off interrupts from other cores
    irqchip/mmp: Add missing chained_irq_{enter,exit}()
    irqchip/mmp: Do not use of_address_to_resource() to get mux regs
    irqchip/meson-gpio: Add support for meson sm1 SoCs
    dt-bindings: interrupt-controller: New binding for the meson sm1 SoCs
    genirq/affinity: Remove const qualifier from node_to_cpumask argument
    genirq/affinity: Spread vectors on node according to nr_cpu ratio
    genirq/affinity: Improve __irq_build_affinity_masks()
    irqchip: Remove dev_err() usage after platform_get_irq()
    irqchip: Add include guard to irq-partition-percpu.h
    irqchip/mmp: Do not call irq_set_default_host() on DT platforms
    irqchip/gic-v3-its: Remove the redundant set_bit for lpi_map
    irqchip/gic-v3: Add quirks for HIP06/07 invalid GICD_TYPER erratum 161010803
    irqchip/gic: Skip DT quirks when evaluating IIDR-based quirks
    irqchip/gic-v3: Warn about inconsistent implementations of extended ranges
    irqchip/gic-v3: Add EPPI range support
    ...

    Linus Torvalds
     

10 Sep, 2019

2 commits


05 Sep, 2019

2 commits

  • When allocating a range of LPIs for a Multi-MSI capable device,
    this allocation extended to the closest power of 2.

    But on the release path, the interrupts are released one by
    one. This results in not releasing the "extra" range, leaking
    the its_device. Trying to reprobe the device will then fail.

    Fix it by releasing the LPIs the same way we allocate them.

    Fixes: 8208d1708b88 ("irqchip/gic-v3-its: Align PCI Multi-MSI allocation on their size")
    Reported-by: Jiaxing Luo
    Tested-by: John Garry
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/f5e948aa-e32f-3f74-ae30-31fee06c2a74@huawei.com

    Marc Zyngier
     
  • When running in M-mode, the S-mode plic handlers are still listed in the
    device tree. Ignore them by setting the maximum threshold.

    Signed-off-by: Christoph Hellwig
    Acked-by: Marc Zyngier
    Signed-off-by: Paul Walmsley

    Christoph Hellwig