[GIT pull] irq updates for 4.13
From: Thomas Gleixner
Date: Mon Jul 03 2017 - 03:43:09 EST
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