All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yhlu.kernel@gmail.com>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Dhaval Giani <dhaval@linux.vnet.ibm.com>,
	Mike Travis <travis@sgi.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Yinghai Lu <yhlu.kernel@gmail.com>
Subject: [PATCH 39/43] x86_64: rename irq_desc/irq_desc_with_new
Date: Sun, 10 Aug 2008 00:36:28 -0700	[thread overview]
Message-ID: <1218353792-3355-40-git-send-email-yhlu.kernel@gmail.com> (raw)
In-Reply-To: <1218353792-3355-39-git-send-email-yhlu.kernel@gmail.com>

change name irq_desc() ==> irq_desc_with_new
	irq_desc_without_new() ==> irq_desc

So could only call that one time

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
---
 arch/x86/kernel/io_apic_64.c |   18 ++++++++++++------
 arch/x86/kernel/irq_64.c     |    4 ++--
 arch/x86/kernel/irqinit_64.c |    3 ++-
 include/linux/irq.h          |    2 +-
 kernel/irq/chip.c            |   21 +++++++++++----------
 kernel/irq/handle.c          |   23 +++++------------------
 kernel/irq/manage.c          |   16 ++++++++--------
 7 files changed, 41 insertions(+), 46 deletions(-)

diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 33a3060..4756d04 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -1117,7 +1117,12 @@ static void ioapic_register_intr(int irq, unsigned long trigger)
 {
 	struct irq_desc *desc;
 
-	desc = irq_desc(irq);
+	/* first time to use this irq_desc */
+	if (irq < 16)
+		desc = irq_desc(irq);
+	else
+		desc = irq_desc_with_new(irq);
+
 	if (trigger)
 		desc->status |= IRQ_LEVEL;
 	else
@@ -3086,8 +3091,6 @@ void __init setup_ioapic_dest(void)
 				continue;
 			irq = pin_2_irq(irq_entry, ioapic, pin);
 
-			desc = irq_desc(irq);
-
 			/* setup_IO_APIC_irqs could fail to get vector for some device
 			 * when you have too many devices, because at that time only boot
 			 * cpu is online.
@@ -3098,13 +3101,16 @@ void __init setup_ioapic_dest(void)
 						  irq_trigger(irq_entry),
 						  irq_polarity(irq_entry));
 #ifdef CONFIG_INTR_REMAP
-			else if (intr_remapping_enabled)
+			else if (intr_remapping_enabled) {
+				desc = irq_desc(irq);
 				set_ir_ioapic_affinity_irq(irq, desc, TARGET_CPUS);
+			}
 #endif
-			else
+			else {
+				desc = irq_desc(irq);
 				set_ioapic_affinity_irq(irq, desc, TARGET_CPUS);
+			}
 		}
-
 	}
 }
 #endif
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index 2acb719..4ebf884 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -83,7 +83,7 @@ int show_interrupts(struct seq_file *p, void *v)
 
 	if (i < nr_irqs) {
 		unsigned any_count = 0;
-		struct irq_desc *desc = irq_desc_without_new(i);
+		struct irq_desc *desc = irq_desc(i);
 
 		if (!desc)
 			return 0;
@@ -206,7 +206,7 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
 	stack_overflow_check(regs);
 #endif
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (likely(desc))
 		generic_handle_irq(irq, desc);
 	else {
diff --git a/arch/x86/kernel/irqinit_64.c b/arch/x86/kernel/irqinit_64.c
index 4c55edf..45fca9d 100644
--- a/arch/x86/kernel/irqinit_64.c
+++ b/arch/x86/kernel/irqinit_64.c
@@ -143,7 +143,8 @@ static void __init init_ISA_irqs (void)
 	init_8259A(0);
 
 	for (i = 0; i < 16; i++) {
-		struct irq_desc *desc = irq_desc(i);
+		/* first time call this irq_desc */
+		struct irq_desc *desc = irq_desc_with_new(i);
 
 		desc->status = IRQ_DISABLED;
 		desc->action = NULL;
diff --git a/include/linux/irq.h b/include/linux/irq.h
index ca97ad2..979ef9e 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -203,7 +203,7 @@ struct irq_desc {
 } ____cacheline_internodealigned_in_smp;
 
 extern struct irq_desc *irq_desc(unsigned int irq);
-extern struct irq_desc *irq_desc_without_new(unsigned int irq);
+extern struct irq_desc *irq_desc_with_new(unsigned int irq);
 
 #ifndef CONFIG_HAVE_SPARSE_IRQ
 
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 437b21d..04169d8 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -27,7 +27,8 @@ void dynamic_irq_init(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc(irq);
+	/* first time to use this irq_desc */
+	desc = irq_desc_with_new(irq);
 	if (!desc) {
 		WARN(1, KERN_ERR "Trying to initialize invalid IRQ%d\n", irq);
 		return;
@@ -60,7 +61,7 @@ void dynamic_irq_cleanup(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		WARN(1, KERN_ERR "Trying to cleanup invalid IRQ%d\n", irq);
 		return;
@@ -92,7 +93,7 @@ int set_irq_chip(unsigned int irq, struct irq_chip *chip)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		WARN(1, KERN_ERR "Trying to install chip for IRQ%d\n", irq);
 		return -EINVAL;
@@ -122,7 +123,7 @@ int set_irq_type(unsigned int irq, unsigned int type)
 	unsigned long flags;
 	int ret = -ENXIO;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR "Trying to set irq type for IRQ%d\n", irq);
 		return -ENODEV;
@@ -149,7 +150,7 @@ int set_irq_data(unsigned int irq, void *data)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR
 		       "Trying to install controller data for IRQ%d\n", irq);
@@ -175,7 +176,7 @@ int set_irq_msi(unsigned int irq, struct msi_desc *entry)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR
 		       "Trying to install msi data for IRQ%d\n", irq);
@@ -202,7 +203,7 @@ int set_irq_chip_data(unsigned int irq, void *data)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR
 		       "Trying to install chip data for IRQ%d\n", irq);
@@ -575,7 +576,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR
 		       "Trying to install type control for IRQ%d\n", irq);
@@ -639,7 +640,7 @@ void __init set_irq_noprobe(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR "Trying to mark IRQ%d non-probeable\n", irq);
 
@@ -656,7 +657,7 @@ void __init set_irq_probe(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc) {
 		printk(KERN_ERR "Trying to mark IRQ%d probeable\n", irq);
 
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index e4fd9ef..7703ba6 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -150,7 +150,7 @@ early_param("nr_irq_desc", parse_nr_irq_desc);
 struct irq_desc *irq_descX;
 DEFINE_DYN_ARRAY(irq_descX, sizeof(struct irq_desc), nr_irq_desc, PAGE_SIZE, init_work);
 
-struct irq_desc *irq_desc_without_new(unsigned int irq)
+struct irq_desc *irq_desc(unsigned int irq)
 {
 	struct irq_desc *desc;
 
@@ -168,7 +168,7 @@ struct irq_desc *irq_desc_without_new(unsigned int irq)
 	}
 	return NULL;
 }
-struct irq_desc *irq_desc(unsigned int irq)
+struct irq_desc *irq_desc_with_new(unsigned int irq)
 {
 	struct irq_desc *desc, *desc_pri;
 	int i;
@@ -185,6 +185,7 @@ struct irq_desc *irq_desc(unsigned int irq)
 
 		if (desc->irq == -1U) {
 			desc->irq = irq;
+			printk(KERN_DEBUG "found new irq_desc for irq %d\n", desc->irq);
 			return desc;
 		}
 		desc_pri = desc;
@@ -235,21 +236,7 @@ struct irq_desc *irq_desc(unsigned int irq)
 
 	desc->irq = irq;
 	desc_pri->next = desc;
-	{
-		/* double check if some one mess up the list */
-		struct irq_desc *desc;
-		int count = 0;
-
-		desc = &irq_descX[0];
-		while (desc) {
-			printk(KERN_DEBUG "1 found irq_desc for irq %d\n", desc->irq);
-			if (desc->next)
-				printk(KERN_DEBUG "1 found irq_desc for irq %d and next will be irq %d\n", desc->irq, desc->next->irq);
-			desc = desc->next;
-			count++;
-		}
-		printk(KERN_DEBUG "1 all preallocted %d\n", count);
-	}
+	printk(KERN_DEBUG "1 found new irq_desc for irq %d and pri will be irq %d\n", desc->irq, desc_pri->irq);
 
 	return desc;
 }
@@ -285,7 +272,7 @@ struct irq_desc *irq_desc(unsigned int irq)
 
 	return NULL;
 }
-struct irq_desc *irq_desc_without_new(unsigned int irq)
+struct irq_desc *irq_desc_with_new(unsigned int irq)
 {
 	return irq_desc(irq);
 }
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index f491052..cb63117 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -31,7 +31,7 @@ cpumask_t irq_default_affinity = CPU_MASK_ALL;
  */
 void synchronize_irq(unsigned int irq)
 {
-	struct irq_desc *desc = irq_desc_without_new(irq);
+	struct irq_desc *desc = irq_desc(irq);
 	unsigned int status;
 
 	if (!desc)
@@ -153,7 +153,7 @@ void disable_irq_nosync(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return;
 
@@ -182,7 +182,7 @@ void disable_irq(unsigned int irq)
 {
 	struct irq_desc *desc;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return;
 
@@ -226,7 +226,7 @@ void enable_irq(unsigned int irq)
 	struct irq_desc *desc;
 	unsigned long flags;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return;
 
@@ -304,7 +304,7 @@ int can_request_irq(unsigned int irq, unsigned long irqflags)
 	struct irq_desc *desc;
 	struct irqaction *action;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return 0;
 
@@ -367,7 +367,7 @@ int setup_irq(unsigned int irq, struct irqaction *new)
 	int shared = 0;
 	int ret;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return -EINVAL;
 
@@ -523,7 +523,7 @@ void free_irq(unsigned int irq, void *dev_id)
 
 	WARN_ON(in_interrupt());
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return;
 
@@ -639,7 +639,7 @@ int request_irq(unsigned int irq, irq_handler_t handler,
 	if ((irqflags & IRQF_SHARED) && !dev_id)
 		return -EINVAL;
 
-	desc = irq_desc_without_new(irq);
+	desc = irq_desc(irq);
 	if (!desc)
 		return -EINVAL;
 
-- 
1.5.4.5


  reply	other threads:[~2008-08-10  7:51 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-10  7:35 [PATCH 00/43] dyn_array/nr_irqs/sparse_irq support v7 Yinghai Lu
2008-08-10  7:35 ` [PATCH 01/43] x86_64: Restore the proper NR_IRQS define so larger systems work Yinghai Lu
2008-08-10  7:35   ` [PATCH 02/43] 8250: Remove NR_IRQ usage Yinghai Lu
2008-08-10  7:35     ` [PATCH 03/43] x86: add after_bootmem for 32bit Yinghai Lu
2008-08-10  7:35       ` [PATCH 04/43] x86: remove irq_vectors_limits Yinghai Lu
2008-08-10  7:35         ` [PATCH 05/43] add dyn_array support Yinghai Lu
2008-08-10  7:35           ` [PATCH 06/43] add per_cpu_dyn_array support Yinghai Lu
2008-08-10  7:35             ` [PATCH 07/43] x86: alloc dyn_array all alltogether Yinghai Lu
2008-08-10  7:35               ` [PATCH 08/43] x86: enable dyn_array support Yinghai Lu
2008-08-10  7:35                 ` [PATCH 09/43] introduce nr_irqs Yinghai Lu
2008-08-10  7:35                   ` [PATCH 10/43] x86: using nr_irqs Yinghai Lu
2008-08-10  7:36                     ` [PATCH 11/43] drivers/char to use nr_irqs Yinghai Lu
2008-08-10  7:36                       ` [PATCH 12/43] drivers/net " Yinghai Lu
2008-08-10  7:36                         ` [PATCH 13/43] drivers intr remapping " Yinghai Lu
2008-08-10  7:36                           ` [PATCH 14/43] drivers/pcmcia " Yinghai Lu
2008-08-10  7:36                             ` [PATCH 15/43] drivers/rtc " Yinghai Lu
2008-08-10  7:36                               ` [PATCH 16/43] drivers/scsi " Yinghai Lu
2008-08-10  7:36                                 ` [PATCH 17/43] drivers/serial " Yinghai Lu
2008-08-10  7:36                                   ` [PATCH 18/43] drivers proc " Yinghai Lu
2008-08-10  7:36                                     ` [PATCH 19/43] drivers xen events " Yinghai Lu
2008-08-10  7:36                                       ` [PATCH 20/43] make irq_timer_state to use dyn_array Yinghai Lu
2008-08-10  7:36                                         ` [PATCH 21/43] make irq2_iommu " Yinghai Lu
2008-08-10  7:36                                           ` [PATCH 22/43] make irq_desc " Yinghai Lu
2008-08-10  7:36                                             ` [PATCH 23/43] irq: make irqs in kernel stat use per_cpu_dyn_array Yinghai Lu
2008-08-10  7:36                                               ` [PATCH 24/43] x86: use dyn_array in io_apic_xx.c Yinghai Lu
2008-08-10  7:36                                                 ` [PATCH 25/43] x86: get mp_irqs from madt Yinghai Lu
2008-08-10  7:36                                                   ` [PATCH 26/43] x86: remove nr_irq_vectors Yinghai Lu
2008-08-10  7:36                                                     ` [PATCH 27/43] x86_64: use irq_desc() together with dyn_array Yinghai Lu
2008-08-10  7:36                                                       ` [PATCH 28/43] x86: add irq_cfg in io_apic_64.c Yinghai Lu
2008-08-10  7:36                                                         ` [PATCH 29/43] x86: put irq_2_pin pointer into irq_cfg Yinghai Lu
2008-08-10  7:36                                                           ` [PATCH 30/43] x86: put timer_rand_state pointer into irq_desc Yinghai Lu
2008-08-10  7:36                                                             ` [PATCH 31/43] x86: move kstat_irqs from kstat to irq_desc Yinghai Lu
2008-08-10  7:36                                                               ` [PATCH 32/43] add irq_desc_without_new Yinghai Lu
2008-08-10  7:36                                                                 ` [PATCH 33/43] replace loop with nr_irqs with for_each_irq_desc Yinghai Lu
2008-08-10  7:36                                                                   ` [PATCH 34/43] replace loop with nr_irqs for proc/stat Yinghai Lu
2008-08-10  7:36                                                                     ` [PATCH 35/43] replace loop with nr_irqs with for_each_irq_icfg Yinghai Lu
2008-08-10  7:36                                                                       ` [PATCH 36/43] remove >= nr_irqs checking with config_have_sparse_irq Yinghai Lu
2008-08-10  7:36                                                                         ` [PATCH 37/43] x86_64: add irq_desc in function in paramater Yinghai Lu
2008-08-10  7:36                                                                           ` [PATCH 38/43] x86: check with without_new in show_interrupts Yinghai Lu
2008-08-10  7:36                                                                             ` Yinghai Lu [this message]
2008-08-10  7:36                                                                               ` [PATCH 40/43] seperate irq_descX with irq_descX_free Yinghai Lu
2008-08-10  7:36                                                                                 ` [PATCH 41/43] x86_64: sperate irq_cfgx with irq_cfgx_free Yinghai Lu
2008-08-10  7:36                                                                                   ` [PATCH 42/43] x86_64: make /proc/interrupts works with dyn irq_desc Yinghai Lu
2008-08-10  7:36                                                                                     ` [PATCH 43/43] x86: put irq_2_iommu pointer into irq_desc Yinghai Lu
2008-08-10  9:21 ` [PATCH 00/43] dyn_array/nr_irqs/sparse_irq support v7 Yinghai Lu

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=1218353792-3355-40-git-send-email-yhlu.kernel@gmail.com \
    --to=yhlu.kernel@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhaval@linux.vnet.ibm.com \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=travis@sgi.com \
    /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 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.