Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752374AbdGCHm7 (ORCPT ); Mon, 3 Jul 2017 03:42:59 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:41528 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750801AbdGCHm6 (ORCPT ); Mon, 3 Jul 2017 03:42:58 -0400 Date: Mon, 3 Jul 2017 09:42:55 +0200 (CEST) From: Thomas Gleixner To: Linus Torvalds cc: LKML , Andrew Morton , Ingo Molnar , "H. Peter Anvin" Subject: [GIT pull] irq updates for 4.13 Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 14544 Lines: 296 Linus, please pull the latest irq-core-for-linus git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-core-for-linus The irq department delivers: - Expand the generic infrastructure handling the irq migration on CPU hotplug and convert X86 over to it. (Thomas Gleixner) Aside of consolidating code this is a preparatory change for: - Finalizing the affinity management for multi-queue devices. The main change here is to shut down interrupts which are affine to a outgoing CPU and reenabling them when the CPU comes online again. That avoids moving interrupts pointlessly around and breaking and reestablishing affinities for no value. (Christoph Hellwig) Note: This contains also the BLOCK-MQ and NVME changes which depend on the rework of the irq core infrastructure. Jens acked them and agreed that they should go with the irq changes. - Consolidation of irq domain code (Marc Zyngier) - State tracking consolidation in the core code (Jeffy Chen) - Add debug infrastructure for hierarchical irq domains (Thomas Gleixner) - Infrastructure enhancement for managing generic interrupt chips via devmem (Bartosz Golaszewski) - Constification work all over the place (Tobias Klauser) - Two new interrupt controller drivers for MVEBU (Thomas Petazzoni) - The usual set of fixes, updates and enhancements all over the place. Thanks, tglx ------------------> Andrew Jeffery (1): irqchip/aspeed-vic: Add AST2500 compatible string Arvind Yadav (2): irqchip/gic-v3-its: Make of_device_ids const irqchip/gic-v3-its-platform-msi: Make of_device_ids const Bartosz Golaszewski (5): irq/generic-chip: Provide irq_free_generic_chip() irq/generic-chip: Provide irq_destroy_generic_chip() irq/generic-chip: Export irq_init_generic_chip() locally irq/generic-chip: Provide devm_irq_alloc_generic_chip() irq/generic-chip: Provide devm_irq_setup_generic_chip() Brendan Higgins (2): irqchip/aspeed-i2c-ic: Add binding docs for Aspeed I2C Interrupt Controller irqchip/aspeed-i2c-ic: Add I2C IRQ controller for Aspeed Chen-Yu Tsai (6): irqchip/sunxi-nmi: Convert magic numbers to defines irqchip/sunxi-nmi: Document interrupt disabling and clearing at probe time irqchip/sunxi-nmi: Reorder sunxi_sc_nmi_reg_offs' in ascending order irqchip/sunxi-nmi: Const-ify sunxi_sc_nmi_reg_offs structures dt-bindings/interrupt-controller: sunxi-nmi: Add compatible for A31 R_INTC irqchip/sunxi-nmi: Support sun6i-a31-r-intc compatible Christoph Hellwig (5): genirq: Move pending helpers to internal.h genirq/affinity: Assign vectors to all present CPUs blk-mq: Include all present CPUs in the default queue mapping blk-mq: Create hctx for each present CPU nvme: Allocate queues for all possible CPUs Dan Carpenter (1): irqchip/irq-mvebu-gicp: Allocate enough memory for spi_bitmap Daniel Lezcano (2): genirq/timings: Add infrastructure to track the interrupt timings genirq/timings: Add infrastructure for estimating the next interrupt arrival time Ganapatrao Kulkarni (1): irqchip/gic-v3-its: Add ACPI NUMA node mapping Jeffy Chen (2): genirq: Set irq masked state when initializing irq_desc genirq: Avoid unnecessary low level irq function calls MaJun (1): irqchip/gicv3-its: Skip irq affinity setting when target cpu is the same as current setting Marc Zyngier (7): irqdomain: Let irq_domain_mapping display hierarchical domains irqdomain: Let irq_domain_mapping display ACPI fwnode attributes genirq/msi: Populate the domain name if provided by the irqchip Documentation: Update IRQ-domain.txt to document irq_domain_mapping genirq/irqdomain: Add irq_domain_update_bus_token helper irqchip/MSI: Use irq_domain_update_bus_token instead of an open coded access genirq/irqdomain: Remove auto-recursive hierarchy support Pedro H. Penna (1): irqchip/or1k-pic: Fix interrupt acknowledgement Robin Murphy (1): irqchip/gic-v3-its: Fix MSI alias accounting Shanker Donthineni (1): irqchip/gic-v3-its: Don't assume GICv3 hardware supports 16bit INTID Suzuki K Poulose (1): irqchip/gic-v3: Fix out-of-bound access in gic_set_affinity Thomas Gleixner (56): genirq: Handle NOAUTOEN interrupt setup proper genirq: Warn when IRQ_NOAUTOEN is used with shared interrupts x86/apic: Add name to irq chip iommu/amd: Add name to irq chip iommu/vt-d: Add name to irq chip genirq/msi: Prevent overwriting domain name genirq: Allow fwnode to carry name information only x86/vector: Create named irq domain x86/ioapic: Create named irq domain x86/htirq: Create named domain x86/uv: Create named irq domain x86/msi: Provide new iommu irqdomain interface iommu/vt-d: Use named irq domain interface iommu/amd: Use named irq domain interface x86/msi: Remove unused remap irq domain interface x86/msi: Create named irq domains PCI/vmd: Create named irq domain genirq/irqdomain: Add map counter genirq/debugfs: Add proper debugfs interface genirq: Add missing comment for IRQD_STARTED genirq: Provide irq_fixup_move_pending() x86/irq: Cleanup pending irq move in fixup_irqs() genirq: Remove mask argument from setup_affinity() genirq: Rename setup_affinity() to irq_setup_affinity() genirq: Move initial affinity setup to irq_startup() genirq/cpuhotplug: Remove irq disabling logic genirq/cpuhotplug: Dont claim success on error genirq/cpuhotplug: Reorder check logic genirq/cpuhotplug: Do not migrated shutdown irqs genirq/cpuhotplug: Add support for cleaning up move in progress genirq/cpuhotplug: Add support for conditional masking genirq/cpuhotplug: Set force affinity flag on hotplug migration x86/irq: Restructure fixup_irqs() x86/irq: Use irq_migrate_all_off_this_cpu() genirq: Move irq_fixup_move_pending() to core genirq: Remove pointless arg from show_irq_affinity genirq: Remove pointless gfp argument genirq/proc: Replace ever repeating type cast genirq: Introduce effective affinity mask genirq/cpuhotplug: Use effective affinity mask x86/apic: Move flat_cpu_mask_to_apicid_and() into C source x86/uv: Use default_cpu_mask_to_apicid_and() x86/apic: Move online masking to core code x86/apic: Move cpumask and to core code x86/apic: Add irq_data argument to apic->cpu_mask_to_apicid() xen/events: Add support for effective affinity mask x86/apic: Implement effective irq mask update genirq: Introduce IRQD_MANAGED_SHUTDOWN genirq: Split out irq_startup() code genirq: Add force argument to irq_startup() genirq: Handle managed irqs gracefully in irq_startup() genirq/cpuhotplug: Handle managed IRQs on CPU hotplug genirq: Introduce IRQD_SINGLE_TARGET flag genirq/cpuhotplug: Avoid irq affinity setting for single targets x86/apic: Mark single target interrupts genirq/debugfs: Remove pointless NULL pointer check Thomas Petazzoni (8): irqchip/armada-370-xp: Re-order register definitions irqchip/armada-370-xp: Document the overall driver logic irqchip/armada-370-xp: Re-enable per-CPU interrupts at resume time Revert "irqchip/armada-370-xp: Fix regression by clearing IRQ_NOAUTOEN" dt-bindings/interrupt-controller: Add DT binding for the Marvell GICP dt-bindings/interrupt-controller: Add DT binding for the Marvell ICU irqchip/irq-mvebu-gicp: Add new driver for Marvell GICP irqchip/irq-mvebu-icu: Add new driver for Marvell ICU Tobias Klauser (7): irqchip/i8259: Constify irq_domain_ops irqchip/irq-imx-gpcv2: Constify irq_domain_ops irqchip/irq-mbigen: Constify irq_domain_ops irqchip/irq-mips-gic: Constify irq_domain_ops irqchip/irq-renesas-h8300h: Constify irq_domain_ops irqchip/irq-renesas-h8s: Constify irq_domain_ops irqchip/aspeed-vic: Constify irq_domain_ops Vincent Legoll (1): genirq: Make early_irq_init() print out more informative Wei Yongjun (1): irqchip/qcom: Use builtin_platform_driver to simplify the code Patch omitted for size reasons Documentation/IRQ-domain.txt | 41 ++- .../interrupt-controller/allwinner,sunxi-nmi.txt | 7 +- .../interrupt-controller/aspeed,ast2400-i2c-ic.txt | 25 ++ .../interrupt-controller/aspeed,ast2400-vic.txt | 9 +- .../bindings/interrupt-controller/marvell,gicp.txt | 27 ++ .../bindings/interrupt-controller/marvell,icu.txt | 51 +++ Documentation/driver-model/devres.txt | 2 + arch/x86/Kconfig | 2 + arch/x86/include/asm/apic.h | 36 +- arch/x86/include/asm/irq.h | 1 - arch/x86/include/asm/irq_remapping.h | 3 +- arch/x86/kernel/apic/apic.c | 35 +- arch/x86/kernel/apic/apic_flat_64.c | 4 +- arch/x86/kernel/apic/apic_noop.c | 2 +- arch/x86/kernel/apic/apic_numachip.c | 4 +- arch/x86/kernel/apic/bigsmp_32.c | 2 +- arch/x86/kernel/apic/htirq.c | 21 +- arch/x86/kernel/apic/io_apic.c | 22 +- arch/x86/kernel/apic/msi.c | 55 ++- arch/x86/kernel/apic/probe_32.c | 2 +- arch/x86/kernel/apic/vector.c | 49 ++- arch/x86/kernel/apic/x2apic_cluster.c | 36 +- arch/x86/kernel/apic/x2apic_phys.c | 2 +- arch/x86/kernel/apic/x2apic_uv_x.c | 26 +- arch/x86/kernel/irq.c | 78 +---- arch/x86/platform/uv/uv_irq.c | 18 +- arch/x86/xen/apic.c | 2 +- block/blk-mq-cpumap.c | 5 +- block/blk-mq.c | 120 +------ block/blk-mq.h | 5 - drivers/base/platform-msi.c | 2 +- drivers/iommu/amd_iommu.c | 22 +- drivers/iommu/intel_irq_remapping.c | 31 +- drivers/irqchip/Kconfig | 6 + drivers/irqchip/Makefile | 4 +- drivers/irqchip/irq-armada-370-xp.c | 148 ++++++++- drivers/irqchip/irq-aspeed-i2c-ic.c | 115 +++++++ drivers/irqchip/irq-aspeed-vic.c | 5 +- drivers/irqchip/irq-gic-v2m.c | 2 +- drivers/irqchip/irq-gic-v3-its-pci-msi.c | 35 +- drivers/irqchip/irq-gic-v3-its-platform-msi.c | 2 +- drivers/irqchip/irq-gic-v3-its.c | 113 +++++-- drivers/irqchip/irq-gic-v3.c | 3 + drivers/irqchip/irq-i8259.c | 2 +- drivers/irqchip/irq-imx-gpcv2.c | 2 +- drivers/irqchip/irq-mbigen.c | 2 +- drivers/irqchip/irq-mips-cpu.c | 2 +- drivers/irqchip/irq-mips-gic.c | 4 +- drivers/irqchip/irq-mvebu-gicp.c | 279 ++++++++++++++++ drivers/irqchip/irq-mvebu-gicp.h | 11 + drivers/irqchip/irq-mvebu-icu.c | 289 ++++++++++++++++ drivers/irqchip/irq-or1k-pic.c | 2 +- drivers/irqchip/irq-renesas-h8300h.c | 2 +- drivers/irqchip/irq-renesas-h8s.c | 2 +- drivers/irqchip/irq-sunxi-nmi.c | 68 +++- drivers/irqchip/qcom-irq-combiner.c | 7 +- drivers/nvme/host/pci.c | 2 +- drivers/pci/host/vmd.c | 8 +- drivers/pci/msi.c | 2 +- drivers/staging/fsl-mc/bus/fsl-mc-msi.c | 2 +- drivers/xen/events/events_base.c | 6 +- .../dt-bindings/interrupt-controller/mvebu-icu.h | 15 + include/linux/cpuhotplug.h | 2 +- include/linux/interrupt.h | 6 + include/linux/irq.h | 89 +++++ include/linux/irqdesc.h | 4 + include/linux/irqdomain.h | 43 ++- kernel/cpu.c | 5 + kernel/irq/Kconfig | 18 + kernel/irq/Makefile | 2 + kernel/irq/affinity.c | 76 ++++- kernel/irq/autoprobe.c | 4 +- kernel/irq/chip.c | 195 ++++++++--- kernel/irq/cpuhotplug.c | 150 +++++++-- kernel/irq/debugfs.c | 213 ++++++++++++ kernel/irq/devres.c | 86 +++++ kernel/irq/generic-chip.c | 7 +- kernel/irq/handle.c | 2 + kernel/irq/internals.h | 225 ++++++++++++- kernel/irq/irqdesc.c | 36 +- kernel/irq/irqdomain.c | 359 +++++++++++++++----- kernel/irq/manage.c | 119 +++---- kernel/irq/migration.c | 30 ++ kernel/irq/msi.c | 13 +- kernel/irq/proc.c | 110 +++++- kernel/irq/timings.c | 369 +++++++++++++++++++++ 86 files changed, 3342 insertions(+), 708 deletions(-) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt create mode 100644 Documentation/devicetree/bindings/interrupt-controller/marvell,gicp.txt create mode 100644 Documentation/devicetree/bindings/interrupt-controller/marvell,icu.txt create mode 100644 drivers/irqchip/irq-aspeed-i2c-ic.c create mode 100644 drivers/irqchip/irq-mvebu-gicp.c create mode 100644 drivers/irqchip/irq-mvebu-gicp.h create mode 100644 drivers/irqchip/irq-mvebu-icu.c create mode 100644 include/dt-bindings/interrupt-controller/mvebu-icu.h create mode 100644 kernel/irq/debugfs.c create mode 100644 kernel/irq/timings.c