All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Suresh Siddha <suresh.b.siddha@intel.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Rusty Russell <rusty@rustcorp.com.au>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH 2/8] irq: correct CPUMASKS_OFFSTACK typo -v3
Date: Wed, 15 Apr 2009 18:40:16 -0700	[thread overview]
Message-ID: <49E68C80.2090709@kernel.org> (raw)
In-Reply-To: <49E68C41.4020801@kernel.org>


Impact: fix smp_affinity copying when moving irq_desc

CPUMASKS_OFFSTACK is not defined anywhere. it is a typo
and init_allocate_desc_masks called before it set affinity to all cpus...

split init_alloc_desc_masks() into all_desc_masks() and init_desc_masks()
so in the init_copy_desc_masks could use CPUMASK_OFFSTACK there.
aka copy path will not calling init_desc_masks anymore.

also could use that CPUMASK_OFFSTACK in alloc_desc_masks()

v3: update after "remove numa_migrate irq_desc"

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>

---
 include/linux/irq.h |   27 ++++++++++++++++++---------
 kernel/irq/handle.c |    9 ++++++---
 2 files changed, 24 insertions(+), 12 deletions(-)

Index: linux-2.6/include/linux/irq.h
===================================================================
--- linux-2.6.orig/include/linux/irq.h
+++ linux-2.6/include/linux/irq.h
@@ -414,27 +414,25 @@ extern int set_irq_msi(unsigned int irq,
 
 #ifdef CONFIG_SMP
 /**
- * init_alloc_desc_masks - allocate cpumasks for irq_desc
+ * alloc_desc_masks - allocate cpumasks for irq_desc
  * @desc:	pointer to irq_desc struct
  * @cpu:	cpu which will be handling the cpumasks
  * @boot:	true if need bootmem
  *
  * Allocates affinity and pending_mask cpumask if required.
  * Returns true if successful (or not required).
- * Side effect: affinity has all bits set, pending_mask has all bits clear.
  */
-static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
+static inline bool alloc_desc_masks(struct irq_desc *desc, int cpu,
 								bool boot)
 {
+#ifdef CONFIG_CPUMASK_OFFSTACK
 	int node;
 
 	if (boot) {
 		alloc_bootmem_cpumask_var(&desc->affinity);
-		cpumask_setall(desc->affinity);
 
 #ifdef CONFIG_GENERIC_PENDING_IRQ
 		alloc_bootmem_cpumask_var(&desc->pending_mask);
-		cpumask_clear(desc->pending_mask);
 #endif
 		return true;
 	}
@@ -443,18 +441,25 @@ static inline bool init_alloc_desc_masks
 
 	if (!alloc_cpumask_var_node(&desc->affinity, GFP_ATOMIC, node))
 		return false;
-	cpumask_setall(desc->affinity);
 
 #ifdef CONFIG_GENERIC_PENDING_IRQ
 	if (!alloc_cpumask_var_node(&desc->pending_mask, GFP_ATOMIC, node)) {
 		free_cpumask_var(desc->affinity);
 		return false;
 	}
-	cpumask_clear(desc->pending_mask);
+#endif
 #endif
 	return true;
 }
 
+static inline void init_desc_masks(struct irq_desc *desc)
+{
+	cpumask_setall(desc->affinity);
+#ifdef CONFIG_GENERIC_PENDING_IRQ
+	cpumask_clear(desc->pending_mask);
+#endif
+}
+
 /**
  * init_copy_desc_masks - copy cpumasks for irq_desc
  * @old_desc:	pointer to old irq_desc struct
@@ -468,7 +473,7 @@ static inline bool init_alloc_desc_masks
 static inline void init_copy_desc_masks(struct irq_desc *old_desc,
 					struct irq_desc *new_desc)
 {
-#ifdef CONFIG_CPUMASKS_OFFSTACK
+#ifdef CONFIG_CPUMASK_OFFSTACK
 	cpumask_copy(new_desc->affinity, old_desc->affinity);
 
 #ifdef CONFIG_GENERIC_PENDING_IRQ
@@ -489,12 +494,16 @@ static inline void free_desc_masks(struc
 
 #else /* !CONFIG_SMP */
 
-static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
+static inline bool alloc_desc_masks(struct irq_desc *desc, int cpu,
 								bool boot)
 {
 	return true;
 }
 
+static inline void init_desc_masks(struct irq_desc *desc)
+{
+}
+
 static inline void init_copy_desc_masks(struct irq_desc *old_desc,
 					struct irq_desc *new_desc)
 {
Index: linux-2.6/kernel/irq/handle.c
===================================================================
--- linux-2.6.orig/kernel/irq/handle.c
+++ linux-2.6/kernel/irq/handle.c
@@ -117,10 +117,11 @@ static void init_one_irq_desc(int irq, s
 		printk(KERN_ERR "can not alloc kstat_irqs\n");
 		BUG_ON(1);
 	}
-	if (!init_alloc_desc_masks(desc, cpu, false)) {
+	if (!alloc_desc_masks(desc, cpu, false)) {
 		printk(KERN_ERR "can not alloc irq_desc cpumasks\n");
 		BUG_ON(1);
 	}
+	init_desc_masks(desc);
 	arch_init_chip_data(desc, cpu);
 }
 
@@ -171,7 +172,8 @@ int __init early_irq_init(void)
 		desc[i].irq = i;
 		desc[i].kstat_irqs = kstat_irqs_legacy + i * nr_cpu_ids;
 		lockdep_set_class(&desc[i].lock, &irq_desc_lock_class);
-		init_alloc_desc_masks(&desc[i], 0, true);
+		alloc_desc_masks(&desc[i], 0, true);
+		init_desc_masks(&desc[i]);
 		irq_desc_ptrs[i] = desc + i;
 	}
 
@@ -258,7 +260,8 @@ int __init early_irq_init(void)
 
 	for (i = 0; i < count; i++) {
 		desc[i].irq = i;
-		init_alloc_desc_masks(&desc[i], 0, true);
+		alloc_desc_masks(&desc[i], 0, true);
+		init_desc_masks(&desc[i]);
 		desc[i].kstat_irqs = kstat_irqs_all[i];
 	}
 	return arch_early_irq_init();

  reply	other threads:[~2009-04-16  1:41 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-16  1:39 [PATCH 1/8] x86/irq: remove NUMA_MIGRATIE_IRQ_DESC Yinghai Lu
2009-04-16  1:40 ` Yinghai Lu [this message]
2009-04-16  1:41 ` [PATCH 3/8] irq: make set_affinity to return status -v2 Yinghai Lu
2009-04-16  9:08   ` Ingo Molnar
2009-04-16  9:17     ` Joe Perches
2009-04-16  9:25       ` Ingo Molnar
2009-04-16  1:41 ` [PATCH 4/8] irq: only update affinity in chip set_affinity() -v3 Yinghai Lu
2009-04-16 23:25   ` Suresh Siddha
2009-04-17  1:58     ` Yinghai Lu
2009-04-16  1:42 ` [PATCH 5/8] irq: change irq_desc_alloc to take node instead cpu Yinghai Lu
2009-04-16  9:10   ` Ingo Molnar
2009-04-16  1:43 ` [PATCH 6/8] irq: make io_apic_set_pci_routing to take device Yinghai Lu
2009-04-16  9:16   ` Ingo Molnar
2009-04-16  1:44 ` [PATCH 7/8] x86/irq: make MSI irq_desc numa aware Yinghai Lu
2009-04-16  9:18   ` Ingo Molnar
2009-04-16  1:44 ` [PATCH 8/8] irq: make ht " Yinghai Lu
2009-04-16  9:21   ` Ingo Molnar
2009-04-16 23:34     ` Suresh Siddha
2009-04-16  9:03 ` [PATCH 1/8] x86/irq: remove NUMA_MIGRATIE_IRQ_DESC Ingo Molnar
2009-04-17  4:17   ` [PATCH 1/9] x86/irq: remove NUMA_MIGRATE_IRQ_DESC Yinghai Lu
2009-04-17  4:18     ` [PATCH 2/9] irq: correct CPUMASKS_OFFSTACK typo -v4 Yinghai Lu
2009-04-28  0:58       ` [PATCH 2/9] x86/irq: remove NUMA_MIGRATE_IRQ_DESC -v2 Yinghai Lu
2009-05-01 17:06         ` [tip:irq/numa] x86/irq: remove leftover code from NUMA_MIGRATE_IRQ_DESC tip-bot for Yinghai Lu
2009-04-17  4:19     ` [PATCH 3/9] irq: make set_affinity to return status -v2 Yinghai Lu
2009-04-17  4:19       ` Yinghai Lu
2009-04-28  0:59       ` Yinghai Lu
2009-04-28  0:59         ` Yinghai Lu
2009-05-01 17:06         ` [tip:irq/numa] irq: change ->set_affinity() to return status tip-bot for Yinghai Lu
2009-05-06  6:55         ` [tip:irq/numa] irq: change ->set_affinity() to return status, fix tip-bot for Ingo Molnar
2009-04-17  4:20     ` [PATCH 4/9] irq: only update affinity if set_affinity() sucessfully -v4 Yinghai Lu
2009-04-28  0:59       ` Yinghai Lu
2009-05-01 17:07         ` [tip:irq/numa] irq: only update affinity if ->set_affinity() is sucessfull tip-bot for Yinghai Lu
2009-04-17  4:21     ` [PATCH 5/9] x86/irq: change irq_desc_alloc to take node instead cpu Yinghai Lu
2009-04-28  1:00       ` [PATCH 5/9] x86/irq: change irq_desc_alloc to take node instead cpu -v2 Yinghai Lu
2009-05-01 17:07         ` [tip:irq/numa] x86/irq: change irq_desc_alloc() to take node instead of cpu tip-bot for Yinghai Lu
2009-04-17  4:23     ` [PATCH 6/9] irq: make io_apic_set_pci_routing to take device Yinghai Lu
2009-04-17  4:23       ` Yinghai Lu
2009-04-17  4:23       ` Yinghai Lu
2009-04-23  4:42       ` Len Brown
2009-04-23  4:42         ` Len Brown
2009-04-26 21:53         ` [PATCH] x86/acpi: remove compress irq trick for 32bit Yinghai Lu
2009-04-26 21:55           ` [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi Yinghai Lu
2009-04-26 23:25             ` Yinghai Lu
2009-04-27  1:12             ` [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi -v2 Yinghai Lu
2009-04-27  3:30           ` [PATCH] x86/acpi: remove compress irq trick for 32bit Ingo Molnar
2009-05-14 15:41           ` Len Brown
2009-05-15 13:06             ` Ingo Molnar
2009-04-28  1:01       ` [PATCH 6/9] irq: make io_apic_set_pci_routing to take device Yinghai Lu
2009-04-28  1:01         ` Yinghai Lu
2009-04-28  1:01         ` Yinghai Lu
2009-05-01 17:07         ` [tip:irq/numa] irq: change ACPI GSI APIs to also take a device argument tip-bot for Yinghai Lu
2009-04-17  4:24     ` [PATCH 7/9] irq: make io_apic_set_pci_routing to use device Yinghai Lu
2009-04-28  1:01       ` Yinghai Lu
2009-05-01 17:07         ` [tip:irq/numa] irq: change io_apic_set_pci_routing() to use device parameter tip-bot for Yinghai Lu
2009-04-17  4:25     ` [PATCH 8/9] x86/irq: make MSI irq_desc numa aware Yinghai Lu
2009-04-27  3:26       ` [PATCH 8/9] x86/irq: make MSI irq_desc numa aware -v2 Yinghai Lu
2009-04-28  1:02       ` [PATCH 8/9] x86/irq: make MSI irq_desc numa aware -v3 Yinghai Lu
2009-04-28 10:14         ` Ingo Molnar
2009-04-28 14:17           ` Yinghai Lu
2009-04-28 14:32             ` Ingo Molnar
2009-04-28 19:07               ` Yinghai Lu
2009-04-29 12:00                 ` Ingo Molnar
2009-04-29 16:27                   ` [PATCH] x86/irq: using move_irq_desc Yinghai Lu
2009-04-29 20:41                     ` Ingo Molnar
2009-04-29 21:23                       ` Ingo Molnar
2009-04-29 21:55                         ` Yinghai Lu
2009-04-29 23:25                         ` Yinghai Lu
2009-04-30  7:29                           ` Ingo Molnar
2009-04-30  8:17                             ` [PATCH] x86/irq: using move_irq_desc -v3 Yinghai Lu
2009-05-01 17:08                               ` [tip:irq/numa] x86/irq: use move_irq_desc() in create_irq_nr() tip-bot for Yinghai Lu
2009-04-28 21:41               ` [PATCH] x86/irq: use move_irq_desc only when CONFIG_NUMA_IRQ_DESC is set Yinghai Lu
2009-05-01 17:07         ` [tip:irq/numa] x86/irq: change MSI irq_desc to be more numa aware tip-bot for Yinghai Lu
2009-04-17  4:25     ` [PATCH 9/9] irq: make ht irq_desc " Yinghai Lu
2009-04-28  1:02       ` Yinghai Lu
2009-04-28 10:19         ` Ingo Molnar
2009-04-28 16:28           ` Jesse Barnes
2009-04-28 16:28           ` Jesse Barnes
2009-05-01 17:07         ` [tip:irq/numa] irq: make ht irq_desc more " tip-bot for Yinghai Lu
2009-04-17 13:49     ` [PATCH 1/9] x86/irq: remove NUMA_MIGRATE_IRQ_DESC Ingo Molnar
2009-04-28  0:57     ` [PATCH 1/9] irq: correct CPUMASKS_OFFSTACK typo -v5 Yinghai Lu
2009-05-01 17:06       ` [tip:irq/numa] irq, cpumask: correct CPUMASKS_OFFSTACK typo and fix fallout tip-bot for Yinghai Lu
2009-04-17  1:00 ` [tip:irq/urgent] x86/irq: mark NUMA_MIGRATIE_IRQ_DESC broken tip-bot for Yinghai Lu
2009-04-17  1:21 ` [tip:irq/urgent] x86/irq: mark NUMA_MIGRATE_IRQ_DESC broken tip-bot for 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=49E68C80.2090709@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rusty@rustcorp.com.au \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    /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.