All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT pull] irq updates for 4.13
@ 2017-07-09  8:49 Thomas Gleixner
  2017-07-10 13:35 ` Sebastian Reichel
  0 siblings, 1 reply; 55+ messages in thread
From: Thomas Gleixner @ 2017-07-09  8:49 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: LKML, Andrew Morton, Ingo Molnar, H. Peter Anvin

Linus,

please pull the latest irq-urgent-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-urgent-for-linus

This update contains:

  - A few fixes mopping up the fallout of the big irq overhaul

  - Move the interrupt resource management logic out of the spin locked,
    irq disabled region to avoid unnecessary restrictions of the resource
    callbacks

  - Preparation for reworking the per cpu irq request function.

Thanks,

	tglx

------------------>
Daniel Lezcano (1):
      genirq: Allow to pass the IRQF_TIMER flag with percpu irq request

Geert Uytterhoeven (1):
      genirq: Force inlining of __irq_startup_managed to prevent build failure

Marc Zyngier (1):
      irqdomain: Allow ACPI device nodes to be used as irqdomain identifiers

Sebastian Ott (1):
      genirq/debugfs: Fix build for !CONFIG_IRQ_DOMAIN

Thomas Gleixner (5):
      genirq: Move bus locking into __setup_irq()
      genirq: Add mutex to irq desc to serialize request/free_irq()
      genirq: Move irq resource handling out of spinlocked region
      genirq/timings: Move free timings out of spinlocked region
      genirq/debugfs: Remove redundant NULL pointer check


 include/linux/interrupt.h | 11 ++++++++-
 include/linux/irqdesc.h   |  3 +++
 kernel/irq/chip.c         |  2 +-
 kernel/irq/internals.h    |  4 ++-
 kernel/irq/irqdesc.c      |  1 +
 kernel/irq/irqdomain.c    | 19 +++++++++++++--
 kernel/irq/manage.c       | 62 ++++++++++++++++++++++++++++++-----------------
 7 files changed, 75 insertions(+), 27 deletions(-)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 37f8e354f564..5ac6e238555e 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -152,8 +152,17 @@ request_any_context_irq(unsigned int irq, irq_handler_t handler,
 			unsigned long flags, const char *name, void *dev_id);
 
 extern int __must_check
+__request_percpu_irq(unsigned int irq, irq_handler_t handler,
+		     unsigned long flags, const char *devname,
+		     void __percpu *percpu_dev_id);
+
+static inline int __must_check
 request_percpu_irq(unsigned int irq, irq_handler_t handler,
-		   const char *devname, void __percpu *percpu_dev_id);
+		   const char *devname, void __percpu *percpu_dev_id)
+{
+	return __request_percpu_irq(irq, handler, 0,
+				    devname, percpu_dev_id);
+}
 
 extern const void *free_irq(unsigned int, void *);
 extern void free_percpu_irq(unsigned int, void __percpu *);
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index d425a3a09722..3e90a094798d 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -3,6 +3,7 @@
 
 #include <linux/rcupdate.h>
 #include <linux/kobject.h>
+#include <linux/mutex.h>
 
 /*
  * Core internal functions to deal with irq descriptors
@@ -45,6 +46,7 @@ struct pt_regs;
  *			IRQF_FORCE_RESUME set
  * @rcu:		rcu head for delayed free
  * @kobj:		kobject used to represent this struct in sysfs
+ * @request_mutex:	mutex to protect request/free before locking desc->lock
  * @dir:		/proc/irq/ procfs entry
  * @debugfs_file:	dentry for the debugfs file
  * @name:		flow handler name for /proc/interrupts output
@@ -96,6 +98,7 @@ struct irq_desc {
 	struct rcu_head		rcu;
 	struct kobject		kobj;
 #endif
+	struct mutex		request_mutex;
 	int			parent_irq;
 	struct module		*owner;
 	const char		*name;
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 2e30d925a40d..aa5497dfb29e 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -234,7 +234,7 @@ __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force)
 	return IRQ_STARTUP_MANAGED;
 }
 #else
-static int
+static __always_inline int
 __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force)
 {
 	return IRQ_STARTUP_NORMAL;
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index 9da14d125df4..dbfba9933ed2 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -437,7 +437,9 @@ static inline void irq_remove_debugfs_entry(struct irq_desc *desc)
 # ifdef CONFIG_IRQ_DOMAIN
 void irq_domain_debugfs_init(struct dentry *root);
 # else
-static inline void irq_domain_debugfs_init(struct dentry *root);
+static inline void irq_domain_debugfs_init(struct dentry *root)
+{
+}
 # endif
 #else /* CONFIG_GENERIC_IRQ_DEBUGFS */
 static inline void irq_add_debugfs_entry(unsigned int irq, struct irq_desc *d)
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 948b50e78549..906a67e58391 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -373,6 +373,7 @@ static struct irq_desc *alloc_desc(int irq, int node, unsigned int flags,
 
 	raw_spin_lock_init(&desc->lock);
 	lockdep_set_class(&desc->lock, &irq_desc_lock_class);
+	mutex_init(&desc->request_mutex);
 	init_rcu_head(&desc->rcu);
 
 	desc_set_defaults(irq, desc, node, affinity, owner);
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 14fe862aa2e3..f1f251479aa6 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -1,5 +1,6 @@
 #define pr_fmt(fmt)  "irq: " fmt
 
+#include <linux/acpi.h>
 #include <linux/debugfs.h>
 #include <linux/hardirq.h>
 #include <linux/interrupt.h>
@@ -155,6 +156,21 @@ struct irq_domain *__irq_domain_add(struct fwnode_handle *fwnode, int size,
 			domain->name = fwid->name;
 			break;
 		}
+#ifdef CONFIG_ACPI
+	} else if (is_acpi_device_node(fwnode)) {
+		struct acpi_buffer buf = {
+			.length = ACPI_ALLOCATE_BUFFER,
+		};
+		acpi_handle handle;
+
+		handle = acpi_device_handle(to_acpi_device_node(fwnode));
+		if (acpi_get_name(handle, ACPI_FULL_PATHNAME, &buf) == AE_OK) {
+			domain->name = buf.pointer;
+			domain->flags |= IRQ_DOMAIN_NAME_ALLOCATED;
+		}
+
+		domain->fwnode = fwnode;
+#endif
 	} else if (of_node) {
 		char *name;
 
@@ -1667,8 +1683,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d)
 
 static void debugfs_remove_domain_dir(struct irq_domain *d)
 {
-	if (d->debugfs_file)
-		debugfs_remove(d->debugfs_file);
+	debugfs_remove(d->debugfs_file);
 }
 
 void __init irq_domain_debugfs_init(struct dentry *root)
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 5c11c1730ba5..5624b2dd6b58 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -1167,6 +1167,18 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
 	if (desc->irq_data.chip->flags & IRQCHIP_ONESHOT_SAFE)
 		new->flags &= ~IRQF_ONESHOT;
 
+	mutex_lock(&desc->request_mutex);
+	if (!desc->action) {
+		ret = irq_request_resources(desc);
+		if (ret) {
+			pr_err("Failed to request resources for %s (irq %d) on irqchip %s\n",
+			       new->name, irq, desc->irq_data.chip->name);
+			goto out_mutex;
+		}
+	}
+
+	chip_bus_lock(desc);
+
 	/*
 	 * The following block of code has to be executed atomically
 	 */
@@ -1267,13 +1279,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
 	}
 
 	if (!shared) {
-		ret = irq_request_resources(desc);
-		if (ret) {
-			pr_err("Failed to request resources for %s (irq %d) on irqchip %s\n",
-			       new->name, irq, desc->irq_data.chip->name);
-			goto out_unlock;
-		}
-
 		init_waitqueue_head(&desc->wait_for_threads);
 
 		/* Setup the type (level, edge polarity) if configured: */
@@ -1347,6 +1352,8 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
 	}
 
 	raw_spin_unlock_irqrestore(&desc->lock, flags);
+	chip_bus_sync_unlock(desc);
+	mutex_unlock(&desc->request_mutex);
 
 	irq_setup_timings(desc, new);
 
@@ -1378,6 +1385,14 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
 out_unlock:
 	raw_spin_unlock_irqrestore(&desc->lock, flags);
 
+	chip_bus_sync_unlock(desc);
+
+	if (!desc->action)
+		irq_release_resources(desc);
+
+out_mutex:
+	mutex_unlock(&desc->request_mutex);
+
 out_thread:
 	if (new->thread) {
 		struct task_struct *t = new->thread;
@@ -1417,9 +1432,7 @@ int setup_irq(unsigned int irq, struct irqaction *act)
 	if (retval < 0)
 		return retval;
 
-	chip_bus_lock(desc);
 	retval = __setup_irq(irq, desc, act);
-	chip_bus_sync_unlock(desc);
 
 	if (retval)
 		irq_chip_pm_put(&desc->irq_data);
@@ -1443,6 +1456,7 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id)
 	if (!desc)
 		return NULL;
 
+	mutex_lock(&desc->request_mutex);
 	chip_bus_lock(desc);
 	raw_spin_lock_irqsave(&desc->lock, flags);
 
@@ -1475,8 +1489,6 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id)
 	if (!desc->action) {
 		irq_settings_clr_disable_unlazy(desc);
 		irq_shutdown(desc);
-		irq_release_resources(desc);
-		irq_remove_timings(desc);
 	}
 
 #ifdef CONFIG_SMP
@@ -1518,6 +1530,13 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id)
 		}
 	}
 
+	if (!desc->action) {
+		irq_release_resources(desc);
+		irq_remove_timings(desc);
+	}
+
+	mutex_unlock(&desc->request_mutex);
+
 	irq_chip_pm_put(&desc->irq_data);
 	module_put(desc->owner);
 	kfree(action->secondary);
@@ -1674,9 +1693,7 @@ int request_threaded_irq(unsigned int irq, irq_handler_t handler,
 		return retval;
 	}
 
-	chip_bus_lock(desc);
 	retval = __setup_irq(irq, desc, action);
-	chip_bus_sync_unlock(desc);
 
 	if (retval) {
 		irq_chip_pm_put(&desc->irq_data);
@@ -1924,9 +1941,7 @@ int setup_percpu_irq(unsigned int irq, struct irqaction *act)
 	if (retval < 0)
 		return retval;
 
-	chip_bus_lock(desc);
 	retval = __setup_irq(irq, desc, act);
-	chip_bus_sync_unlock(desc);
 
 	if (retval)
 		irq_chip_pm_put(&desc->irq_data);
@@ -1935,9 +1950,10 @@ int setup_percpu_irq(unsigned int irq, struct irqaction *act)
 }
 
 /**
- *	request_percpu_irq - allocate a percpu interrupt line
+ *	__request_percpu_irq - allocate a percpu interrupt line
  *	@irq: Interrupt line to allocate
  *	@handler: Function to be called when the IRQ occurs.
+ *	@flags: Interrupt type flags (IRQF_TIMER only)
  *	@devname: An ascii name for the claiming device
  *	@dev_id: A percpu cookie passed back to the handler function
  *
@@ -1950,8 +1966,9 @@ int setup_percpu_irq(unsigned int irq, struct irqaction *act)
  *	the handler gets called with the interrupted CPU's instance of
  *	that variable.
  */
-int request_percpu_irq(unsigned int irq, irq_handler_t handler,
-		       const char *devname, void __percpu *dev_id)
+int __request_percpu_irq(unsigned int irq, irq_handler_t handler,
+			 unsigned long flags, const char *devname,
+			 void __percpu *dev_id)
 {
 	struct irqaction *action;
 	struct irq_desc *desc;
@@ -1965,12 +1982,15 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler,
 	    !irq_settings_is_per_cpu_devid(desc))
 		return -EINVAL;
 
+	if (flags && flags != IRQF_TIMER)
+		return -EINVAL;
+
 	action = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
 	if (!action)
 		return -ENOMEM;
 
 	action->handler = handler;
-	action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND;
+	action->flags = flags | IRQF_PERCPU | IRQF_NO_SUSPEND;
 	action->name = devname;
 	action->percpu_dev_id = dev_id;
 
@@ -1980,9 +2000,7 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler,
 		return retval;
 	}
 
-	chip_bus_lock(desc);
 	retval = __setup_irq(irq, desc, action);
-	chip_bus_sync_unlock(desc);
 
 	if (retval) {
 		irq_chip_pm_put(&desc->irq_data);
@@ -1991,7 +2009,7 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler,
 
 	return retval;
 }
-EXPORT_SYMBOL_GPL(request_percpu_irq);
+EXPORT_SYMBOL_GPL(__request_percpu_irq);
 
 /**
  *	irq_get_irqchip_state - returns the irqchip state of a interrupt.

^ permalink raw reply related	[flat|nested] 55+ messages in thread
* [GIT pull] irq updates for 4.13
@ 2017-07-03  7:42 Thomas Gleixner
  2017-07-04  0:00 ` Linus Torvalds
  0 siblings, 1 reply; 55+ messages in thread
From: Thomas Gleixner @ 2017-07-03  7:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: LKML, Andrew Morton, Ingo Molnar, H. Peter Anvin

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

^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2017-07-17 21:33 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-09  8:49 [GIT pull] irq updates for 4.13 Thomas Gleixner
2017-07-10 13:35 ` Sebastian Reichel
2017-07-10 17:01   ` Linus Torvalds
2017-07-10 19:38     ` Pavel Machek
2017-07-10 20:15     ` Sebastian Reichel
2017-07-10 21:29       ` Linus Torvalds
2017-07-11  6:55     ` Thomas Gleixner
2017-07-11  9:26       ` Sebastian Reichel
2017-07-11  9:55         ` Thomas Gleixner
2017-07-11 10:52           ` Thomas Gleixner
2017-07-11 11:21             ` Sebastian Reichel
2017-07-11 13:27               ` Thomas Gleixner
2017-07-11 13:51               ` Marc Zyngier
2017-07-11 14:39                 ` Sebastian Reichel
2017-07-11  9:47       ` Thomas Gleixner
2017-07-11 13:51         ` Tony Lindgren
2017-07-11 14:41           ` Thomas Gleixner
2017-07-11 15:07             ` Thomas Gleixner
2017-07-11 15:43               ` Tony Lindgren
2017-07-11 15:39             ` Grygorii Strashko
2017-07-11 16:17               ` Tony Lindgren
2017-07-12  8:00               ` Geert Uytterhoeven
2017-07-11 15:40             ` Linus Torvalds
2017-07-11 16:14               ` Sebastian Reichel
2017-07-11 16:15               ` Tony Lindgren
2017-07-11 17:17                 ` Thomas Gleixner
2017-07-11 17:39                   ` Tony Lindgren
2017-07-11 16:19               ` Thomas Gleixner
2017-07-11 16:31                 ` Linus Torvalds
2017-07-11 17:52                   ` Thomas Gleixner
2017-07-11 18:16                     ` Linus Torvalds
2017-07-11 21:30                       ` Sebastian Reichel
2017-07-11 21:41                       ` Thomas Gleixner
2017-07-11 22:04                         ` Linus Torvalds
2017-07-11 22:51                         ` Sebastian Reichel
2017-07-12  5:29                           ` Tony Lindgren
2017-07-15 20:24                             ` Pavel Machek
2017-07-17  6:21                               ` Tony Lindgren
2017-07-17 20:01                               ` Linus Torvalds
2017-07-17 21:33                                 ` Pavel Machek
2017-07-11 16:34                 ` Tony Lindgren
2017-07-11 14:41           ` Sebastian Reichel
2017-07-11 16:20             ` Tony Lindgren
2017-07-11 16:34               ` Sebastian Reichel
  -- strict thread matches above, loose matches on Subject: below --
2017-07-03  7:42 Thomas Gleixner
2017-07-04  0:00 ` Linus Torvalds
2017-07-04  8:12   ` Thomas Gleixner
2017-07-04 10:29     ` Thomas Gleixner
2017-07-04 15:17   ` Jens Axboe
2017-07-04 18:34     ` Linus Torvalds
2017-07-04 19:10       ` Thomas Gleixner
2017-07-04 20:48         ` Max Gurtovoy
2017-07-06 13:58           ` Max Gurtovoy
2017-07-04 21:56       ` Jens Axboe
2017-07-05 15:14   ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.