mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: tip-bot for Thomas Gleixner <tglx@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
	peterz@infradead.org, tglx@linutronix.de, mingo@elte.hu
Subject: [tip:irq/core] genirq: Provide advanced irq chip functions
Date: Mon, 4 Oct 2010 20:29:58 GMT	[thread overview]
Message-ID: <tip-f8822657e799b02c55556c99a601261e207a299d@git.kernel.org> (raw)
In-Reply-To: <20100927121841.742126604@linutronix.de>

Commit-ID:  f8822657e799b02c55556c99a601261e207a299d
Gitweb:     http://git.kernel.org/tip/f8822657e799b02c55556c99a601261e207a299d
Author:     Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Mon, 27 Sep 2010 12:44:32 +0000
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 4 Oct 2010 12:43:32 +0200

genirq: Provide advanced irq chip functions

The low level irq chip functions want access to irq_desc->irq_data.
Provide new functions which hand down irq_data instead of the irq
number so these functions avoid to call irq_to_desc() which is a radix
tree lookup in case of sparse irq.

This provides all the old functions except one: end(). end() is a
relict of __do_IRQ() and will just go away with the __do_IRQ() code.

The replacement for set_affinity() has an extra argument "bool
force". The reason for this is to notify the low level code, that the
move has to be done right away and cannot be delayed until the next
interrupt happens. That's necessary to handle the irq fixup on cpu
unplug in the generic code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <20100927121841.742126604@linutronix.de>
Reviewed-by: H. Peter Anvin <hpa@zytor.com>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
---
 include/linux/irq.h |   66 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 50 insertions(+), 16 deletions(-)

diff --git a/include/linux/irq.h b/include/linux/irq.h
index 002351d..0c83cbd 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -118,23 +118,38 @@ struct irq_data {
  * struct irq_chip - hardware interrupt chip descriptor
  *
  * @name:		name for /proc/interrupts
- * @startup:		start up the interrupt (defaults to ->enable if NULL)
- * @shutdown:		shut down the interrupt (defaults to ->disable if NULL)
- * @enable:		enable the interrupt (defaults to chip->unmask if NULL)
- * @disable:		disable the interrupt
- * @ack:		start of a new interrupt
- * @mask:		mask an interrupt source
- * @mask_ack:		ack and mask an interrupt source
- * @unmask:		unmask an interrupt source
- * @eoi:		end of interrupt - chip level
- * @end:		end of interrupt - flow level
- * @set_affinity:	set the CPU affinity on SMP machines
- * @retrigger:		resend an IRQ to the CPU
- * @set_type:		set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
- * @set_wake:		enable/disable power-management wake-on of an IRQ
+ * @startup:		deprecated, replaced by irq_startup
+ * @shutdown:		deprecated, replaced by irq_shutdown
+ * @enable:		deprecated, replaced by irq_enable
+ * @disable:		deprecated, replaced by irq_disable
+ * @ack:		deprecated, replaced by irq_ack
+ * @mask:		deprecated, replaced by irq_mask
+ * @mask_ack:		deprecated, replaced by irq_mask_ack
+ * @unmask:		deprecated, replaced by irq_unmask
+ * @eoi:		deprecated, replaced by irq_eoi
+ * @end:		deprecated, will go away with __do_IRQ()
+ * @set_affinity:	deprecated, replaced by irq_set_affinity
+ * @retrigger:		deprecated, replaced by irq_retrigger
+ * @set_type:		deprecated, replaced by irq_set_type
+ * @set_wake:		deprecated, replaced by irq_wake
+ * @bus_lock:		deprecated, replaced by irq_bus_lock
+ * @bus_sync_unlock:	deprecated, replaced by irq_bus_sync_unlock
  *
- * @bus_lock:		function to lock access to slow bus (i2c) chips
- * @bus_sync_unlock:	function to sync and unlock slow bus (i2c) chips
+ * @irq_startup:	start up the interrupt (defaults to ->enable if NULL)
+ * @irq_shutdown:	shut down the interrupt (defaults to ->disable if NULL)
+ * @irq_enable:		enable the interrupt (defaults to chip->unmask if NULL)
+ * @irq_disable:	disable the interrupt
+ * @irq_ack:		start of a new interrupt
+ * @irq_mask:		mask an interrupt source
+ * @irq_mask_ack:	ack and mask an interrupt source
+ * @irq_unmask:		unmask an interrupt source
+ * @irq_eoi:		end of interrupt
+ * @irq_set_affinity:	set the CPU affinity on SMP machines
+ * @irq_retrigger:	resend an IRQ to the CPU
+ * @irq_set_type:	set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
+ * @irq_set_wake:	enable/disable power-management wake-on of an IRQ
+ * @irq_bus_lock:	function to lock access to slow bus (i2c) chips
+ * @irq_bus_sync_unlock:function to sync and unlock slow bus (i2c) chips
  *
  * @release:		release function solely used by UML
  */
@@ -161,6 +176,25 @@ struct irq_chip {
 	void		(*bus_lock)(unsigned int irq);
 	void		(*bus_sync_unlock)(unsigned int irq);
 
+	unsigned int	(*irq_startup)(struct irq_data *data);
+	void		(*irq_shutdown)(struct irq_data *data);
+	void		(*irq_enable)(struct irq_data *data);
+	void		(*irq_disable)(struct irq_data *data);
+
+	void		(*irq_ack)(struct irq_data *data);
+	void		(*irq_mask)(struct irq_data *data);
+	void		(*irq_mask_ack)(struct irq_data *data);
+	void		(*irq_unmask)(struct irq_data *data);
+	void		(*irq_eoi)(struct irq_data *data);
+
+	int		(*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest, bool force);
+	int		(*irq_retrigger)(struct irq_data *data);
+	int		(*irq_set_type)(struct irq_data *data, unsigned int flow_type);
+	int		(*irq_set_wake)(struct irq_data *data, unsigned int on);
+
+	void		(*irq_bus_lock)(struct irq_data *data);
+	void		(*irq_bus_sync_unlock)(struct irq_data *data);
+
 	/* Currently used only by UML, might disappear one day.*/
 #ifdef CONFIG_IRQ_RELEASE_METHOD
 	void		(*release)(unsigned int irq, void *dev_id);

  reply	other threads:[~2010-10-04 20:30 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-27 12:44 [patch 00/19] genirq: Cleanup and irq_chip functions overhaul Thomas Gleixner
2010-09-27 12:44 ` [patch 01/19] genirq: Cleanup access to irq_data Thomas Gleixner
2010-09-27 12:44 ` [patch 02/19] genirq: Create irq_data Thomas Gleixner
2010-10-04 20:29   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 03/19] genirq: Provide advanced irq chip functions Thomas Gleixner
2010-10-04 20:29   ` tip-bot for Thomas Gleixner [this message]
2010-09-27 12:44 ` [patch 04/19] genirq; Provide compat handling for bus_lock/bus_sync_unlock Thomas Gleixner
2010-10-04 20:30   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 05/19] genirq; Provide compat handling for chip->mask() Thomas Gleixner
2010-10-04 20:31   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 06/19] genirq; Provide compat handling for chip->unmask() Thomas Gleixner
2010-10-04 20:31   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 07/19] genirq; Provide compat handling for chip->ack() Thomas Gleixner
2010-10-04 20:31   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 08/19] genirq; Provide compat handling for chip->mask_ack() Thomas Gleixner
2010-09-27 15:10   ` Geert Uytterhoeven
2010-09-27 15:16     ` Thomas Gleixner
2010-10-04 20:32   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 09/19] genirq; Provide compat handling for chip->eoi() Thomas Gleixner
2010-10-04 20:32   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:44 ` [patch 10/19] genirq; Provide compat handling for chip->enable() Thomas Gleixner
2010-10-04 20:32   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 11/19] genirq; Provide compat handling for chip->disable()/shutdown() Thomas Gleixner
2010-10-04 20:33   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 12/19] genirq; Provide compat handling for chip->startup() Thomas Gleixner
2010-10-04 20:33   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 13/19] genirq; Provide compat handling for chip->set_affinity() Thomas Gleixner
2010-10-04 20:34   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 14/19] genirq; Provide compat handling for chip->set_type() Thomas Gleixner
2010-10-04 20:34   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 15/19] genirq; Provide compat handling for chip->set_wake() Thomas Gleixner
2010-10-04 20:34   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 16/19] genirq; Provide compat handling for chip->retrigger() Thomas Gleixner
2010-10-04 20:35   ` [tip:irq/core] genirq: " tip-bot for Thomas Gleixner
2010-09-27 12:45 ` [patch 17/19] genirq: Switch dummy_chip and no_irq_chip to new functions Thomas Gleixner
2010-09-27 12:45 ` [patch 18/19] genirq: Provide Kconfig Thomas Gleixner
2010-09-27 16:43   ` Randy Dunlap
2010-10-04 20:28   ` [tip:irq/core] " tip-bot for Thomas Gleixner
2010-09-27 12:46 ` [patch 19/19] x86: Use genirq Kconfig Thomas Gleixner
2010-10-04 20:28   ` [tip:irq/core] " tip-bot for Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-f8822657e799b02c55556c99a601261e207a299d@git.kernel.org \
    --to=tglx@linutronix.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome