Skip to contentSkip to conversation

crash: IP: [<ffffffff80478092>] __bitmap_intersects+0x48/0x73 [PATCH supplied]

DISCUSSION Applied Mike Travis 3 participants 12 messages Jan 14, 2009 – Jan 16, 2009 8 messages not in the archive

Subsystems (3)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#8 lore raw
Quoted 23 lines · Ingo Molnar

also, with latest tip/master the ia64 cross-build still fails:

/home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_handle_irq':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:498: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:500: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_process_pending_intr':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:556: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:558: error: structure has no member named irqs' make[2]: *** [arch/ia64/kernel/irq_ia64.o] Error 1
make[2]: *** Waiting for unfinished jobs....

and so does the MIPS build:

/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c: In function 'indy_buserror_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c:158: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-int.o] Error 1
make[2]: *** Waiting for unfinished jobs.... /home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c: In function 'indy_8254timer_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c:125: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-time.o] Error 1
make[1]: *** [arch/mips/sgi-ip22] Error 2
make[1]: *** Waiting for unfinished jobs....

Quoted 1 line

Ingo

Hi Ingo,

This appears to be a fallout of the sparse irqs changes. Here is a suggested patch.

Btw, my ia64 build fails under tip/cpus4096 because this commit is not present:

commit e65e49d0f3714f4a6a42f6f6a19926ba33fcda75

Author: Mike Travis <[email protected]>
Date:   Mon Jan 12 15:27:13 2009 -0800

irq: update all arches for new irq_desc

With that patch also applied, the defconfig for ia64 builds correctly.

(Sorry, cannot test build the others right now.)

Thanks,
Mike
---
Subject: irq: fix build errors referencing old kstat.irqs array

Impact: fix build error

Since the SPARSE IRQS changes redefined how the kstat irqs are organized, arch's must use the new accessor function:

	kstat_incr_irqs_this_cpu(irq, DESC);

If CONFIG_SPARSE_IRQS is set, then DESC is a pointer to the irq_desc which has a pointer to the kstat_irqs. If not, then the .irqs field of struct kernel_stat is used instead.

# IA64
Cc: Tony Luck <[email protected]>
Cc: <[email protected]>

# MIPS
Cc: Ralf Baechle <[email protected]>
Cc: <[email protected]>

# MN10300
Cc: David Howells <[email protected]>
Cc: Koichi Yasutake <[email protected]>
Cc: <[email protected]>

# SPARC
Cc: David S. Miller <[email protected]>
Cc: <[email protected]>

---
 arch/ia64/kernel/irq_ia64.c            |   12 ++++++++----
 arch/mips/kernel/smtc.c                |    4 +++-
 arch/mips/sgi-ip22/ip22-int.c          |    2 +-
 arch/mips/sgi-ip22/ip22-time.c         |    2 +-
 arch/mips/sibyte/bcm1480/smp.c         |    3 ++-
 arch/mips/sibyte/sb1250/smp.c          |    3 ++-
 arch/mn10300/kernel/mn10300-watchdog.c |    3 ++-
 arch/sparc/kernel/time_64.c            |    2 +-
 8 files changed, 20 insertions(+), 11 deletions(-)
arch/ia64/kernel/irq_ia64.c +8 -4
@@ -493,11 +493,13 @@ ia64_handle_irq (ia64_vector vector, str
 	saved_tpr = ia64_getreg(_IA64_REG_CR_TPR);
 	ia64_srlz_d();
 	while (vector != IA64_SPURIOUS_INT_VECTOR) {
+		struct irq_desc *desc = irq_to_desc(vector);
+
 		if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) {
 			smp_local_flush_tlb();
-			kstat_this_cpu.irqs[vector]++;
+			kstat_incr_irqs_this_cpu(vector, desc);
 		} else if (unlikely(IS_RESCHEDULE(vector)))
-			kstat_this_cpu.irqs[vector]++;
+			kstat_incr_irqs_this_cpu(vector, desc);
 		else {
 			int irq = local_vector_to_irq(vector);
 
@@ -551,11 +553,13 @@ void ia64_process_pending_intr(void)
 	  * Perform normal interrupt style processing
 	  */
 	while (vector != IA64_SPURIOUS_INT_VECTOR) {
+		struct irq_desc *desc = irq_to_desc(vector);
+
 		if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) {
 			smp_local_flush_tlb();
-			kstat_this_cpu.irqs[vector]++;
+			kstat_incr_irqs_this_cpu(vector, desc);
 		} else if (unlikely(IS_RESCHEDULE(vector)))
-			kstat_this_cpu.irqs[vector]++;
+			kstat_incr_irqs_this_cpu(vector, desc);
 		else {
 			struct pt_regs *old_regs = set_irq_regs(NULL);
 			int irq = local_vector_to_irq(vector);
arch/mips/kernel/smtc.c +3 -1
@@ -921,11 +921,13 @@ void ipi_decode(struct smtc_ipi *pipi)
 	struct clock_event_device *cd;
 	void *arg_copy = pipi->arg;
 	int type_copy = pipi->type;
+	int irq = MIPS_CPU_IRQ_BASE + 1;
+
 	smtc_ipi_nq(&freeIPIq, pipi);
 	switch (type_copy) {
 	case SMTC_CLOCK_TICK:
 		irq_enter();
-		kstat_this_cpu.irqs[MIPS_CPU_IRQ_BASE + 1]++;
+		kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 		cd = &per_cpu(mips_clockevent_device, cpu);
 		cd->event_handler(cd);
 		irq_exit();
arch/mips/sgi-ip22/ip22-int.c +1 -1
@@ -155,7 +155,7 @@ static void indy_buserror_irq(void)
 	int irq = SGI_BUSERR_IRQ;
 
 	irq_enter();
-	kstat_this_cpu.irqs[irq]++;
+	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 	ip22_be_interrupt(irq);
 	irq_exit();
 }
arch/mips/sgi-ip22/ip22-time.c +1 -1
@@ -122,7 +122,7 @@ void indy_8254timer_irq(void)
 	char c;
 
 	irq_enter();
-	kstat_this_cpu.irqs[irq]++;
+	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 	printk(KERN_ALERT "Oops, got 8254 interrupt.\n");
 	ArcRead(0, &c, 1, &cnt);
 	ArcEnterInteractiveMode();
arch/mips/sibyte/bcm1480/smp.c +2 -1
@@ -178,9 +178,10 @@ struct plat_smp_ops bcm1480_smp_ops = {
 void bcm1480_mailbox_interrupt(void)
 {
 	int cpu = smp_processor_id();
+	int irq = K_BCM1480_INT_MBOX_0_0;
 	unsigned int action;
 
-	kstat_this_cpu.irqs[K_BCM1480_INT_MBOX_0_0]++;
+	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 	/* Load the mailbox register to figure out what we're supposed to do */
 	action = (__raw_readq(mailbox_0_regs[cpu]) >> 48) & 0xffff;
 
arch/mips/sibyte/sb1250/smp.c +2 -1
@@ -166,9 +166,10 @@ struct plat_smp_ops sb_smp_ops = {
 void sb1250_mailbox_interrupt(void)
 {
 	int cpu = smp_processor_id();
+	int irq = K_INT_MBOX_0;
 	unsigned int action;
 
-	kstat_this_cpu.irqs[K_INT_MBOX_0]++;
+	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 	/* Load the mailbox register to figure out what we're supposed to do */
 	action = (____raw_readq(mailbox_regs[cpu]) >> 48) & 0xffff;
 
arch/mn10300/kernel/mn10300-watchdog.c +2 -1
@@ -130,6 +130,7 @@ void watchdog_interrupt(struct pt_regs *
 	 * the stack NMI-atomically, it's safe to use smp_processor_id().
 	 */
 	int sum, cpu = smp_processor_id();
+	int irq = NMIIRQ;
 	u8 wdt, tmp;
 
 	wdt = WDCTR & ~WDCTR_WDCNE;
@@ -138,7 +139,7 @@ void watchdog_interrupt(struct pt_regs *
 	NMICR = NMICR_WDIF;
 
 	nmi_count(cpu)++;
-	kstat_this_cpu.irqs[NMIIRQ]++;
+	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
 	sum = irq_stat[cpu].__irq_count;
 
 	if (last_irq_sums[cpu] = sum) {
arch/sparc/kernel/time_64.c +1 -1
@@ -727,7 +727,7 @@ void timer_interrupt(int irq, struct pt_
 
 	irq_enter();
 
-	kstat_this_cpu.irqs[0]++;
+	kstat_incr_irqs_this_cpu(0, irq_to_desc(0));
 
 	if (unlikely(!evt->event_handler)) {
 		printk(KERN_WARNING
#9 lore raw
Quoted 31 lines · Mike Travis
Quoted 23 lines · Ingo Molnar

also, with latest tip/master the ia64 cross-build still fails:

/home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_handle_irq':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:498: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:500: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_process_pending_intr':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:556: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:558: error: structure has no member named irqs' make[2]: *** [arch/ia64/kernel/irq_ia64.o] Error 1
make[2]: *** Waiting for unfinished jobs....

and so does the MIPS build:

/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c: In function 'indy_buserror_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c:158: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-int.o] Error 1
make[2]: *** Waiting for unfinished jobs.... /home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c: In function 'indy_8254timer_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c:125: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-time.o] Error 1
make[1]: *** [arch/mips/sgi-ip22] Error 2
make[1]: *** Waiting for unfinished jobs....

Quoted 1 line

Ingo

Hi Ingo,

This appears to be a fallout of the sparse irqs changes. Here is a suggested patch.

Quoted 8 lines

Btw, my ia64 build fails under tip/cpus4096 because this commit is not present:

commit e65e49d0f3714f4a6a42f6f6a19926ba33fcda75

Author: Mike Travis <[email protected]>
Date:   Mon Jan 12 15:27:13 2009 -0800

irq: update all arches for new irq_desc

it is present:

[mingo@hera tip]$ git log cpus4096 | grep e65e49d commit e65e49d0f3714f4a6a42f6f6a19926ba33fcda75

Ingo

#10 lore raw
Quoted 39 lines · Ingo Molnar
Quoted 37 lines · Mike Travis
Quoted 23 lines · Ingo Molnar

also, with latest tip/master the ia64 cross-build still fails:

/home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_handle_irq':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:498: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:500: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c: In function `ia64_process_pending_intr':
/home/mingo/tip/arch/ia64/kernel/irq_ia64.c:556: error: structure has no member named irqs' /home/mingo/tip/arch/ia64/kernel/irq_ia64.c:558: error: structure has no member named irqs' make[2]: *** [arch/ia64/kernel/irq_ia64.o] Error 1
make[2]: *** Waiting for unfinished jobs....

and so does the MIPS build:

/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c: In function 'indy_buserror_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-int.c:158: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-int.o] Error 1
make[2]: *** Waiting for unfinished jobs.... /home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c: In function 'indy_8254timer_irq':
/home/mingo/tip/arch/mips/sgi-ip22/ip22-time.c:125: error: 'struct kernel_stat' has no member named 'irqs' make[2]: *** [arch/mips/sgi-ip22/ip22-time.o] Error 1
make[1]: *** [arch/mips/sgi-ip22] Error 2
make[1]: *** Waiting for unfinished jobs....

Quoted 1 line

Ingo

Hi Ingo,

This appears to be a fallout of the sparse irqs changes. Here is a suggested patch.

Btw, my ia64 build fails under tip/cpus4096 because this commit is not present:

commit e65e49d0f3714f4a6a42f6f6a19926ba33fcda75

Author: Mike Travis <[email protected]>
Date:   Mon Jan 12 15:27:13 2009 -0800
Quoted 8 lines
Quoted 1 line

irq: update all arches for new irq_desc

it is present:

[mingo@hera tip]$ git log cpus4096 | grep e65e49d commit e65e49d0f3714f4a6a42f6f6a19926ba33fcda75

Ingo

Hmm, the exact same command on my work tree produces nothing. If I generate a whole new tip/cpus4096 tree, it's then there. Once again a victim of git remote updating - not! There must be something that I'm doing wrong:

Non-working tree:

21> git-describe
v2.6.29-rc1-19-g92296c6

22> git-status
# On branch cpus4096
# Your branch is behind 'tip/cpus4096' by 233 commits, and can be fast-forwarded.

23> git-remote update
Updating linus
Updating tip

24> git-status
# On branch cpus4096
# Your branch is behind 'tip/cpus4096' by 233 commits, and can be fast-forwarded.

25> git-describe
v2.6.29-rc1-19-g92296c6

New (working) tree:

2> git-describe
v2.6.29-rc1-252-g5cd7376

???

Thanks,
Mike

#11 lore raw
Quoted 6 lines · Mike Travis

Non-working tree:

21> git-describe
v2.6.29-rc1-19-g92296c6

22> git-status

why do you use git-dash commands? Latest git does not have them. Maybe you have an older Git version?

Ingo

#12 lore raw
In reply to Mike Travis
Quoted 3 lines · Mike Travis

23> git-remote update
Updating linus
Updating tip

This only updates the remotes, but does not merge anything into your local branch. You need to run "git merge tip" to do that.

Andreas.

Signature · 4 lines
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
#13 lore raw
Quoted 11 lines · Andreas Schwab
Quoted 3 lines · Mike Travis

23> git-remote update
Updating linus
Updating tip

This only updates the remotes, but does not merge anything into your local branch. You need to run "git merge tip" to do that.

Andreas.

Ahh, that's the secret ingredient!

In my particular instance it's:

git merge tip/cpus4096

(Git has been quite a learning experience... ;-)

Thanks!
Mike

#14 lore raw
Quoted 13 lines · Mike Travis
Quoted 11 lines · Andreas Schwab
Quoted 3 lines · Mike Travis

23> git-remote update
Updating linus
Updating tip

This only updates the remotes, but does not merge anything into your local branch. You need to run "git merge tip" to do that.

Andreas.

Quoted 7 lines

Ahh, that's the secret ingredient!

In my particular instance it's:

git merge tip/cpus4096

(Git has been quite a learning experience... ;-)

I wonder if git pull wouldn't work as well.

Andreas.

Signature · 4 lines
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Applied
#15 lore raw
In reply to Mike Travis
Quoted 1 line · Mike Travis

Subject: irq: fix build errors referencing old kstat.irqs array

i've picked this up into tip/cpus4096, thanks Mike,

Ingo

#16 lore raw

FYI, there's new warnings due to cpumask changes:

arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘show_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:710: warning: unused variable ‘mask’ arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘store_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:745: warning: unused variable ‘mask’

on 32-bit defconfig.

Ingo

#17 lore raw
Quoted 10 lines · Ingo Molnar

FYI, there's new warnings due to cpumask changes:

arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘show_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:710: warning: unused variable ‘mask’ arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘store_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:745: warning: unused variable ‘mask’

on 32-bit defconfig.

Ingo

Hi Ingo,

You can pull the following patch to fix this build warning.

Thanks!
Mike
---

The following changes since commit e46d51787e23a607cac5f593ac9926743a636dff:
Ingo Molnar (1):

        Merge branch 'master' of ssh://master.kernel.org/.../travis/linux-2.6-cpus4096-for-ingo into cpus4096

are available in the git repository at:

ssh://master.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo master

Mike Travis (1):
x86: fix build warning when CONFIG_NUMA not defined.

 arch/x86/include/asm/topology.h |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

commit f2a082711905312dc7b6675e913fee0c4689f7ae

Author: Mike Travis <[email protected]>
Date:   Thu Jan 15 09:19:32 2009 -0800

x86: fix build warning when CONFIG_NUMA not defined.

Impact: fix build warning

The macro cpu_to_node did not reference it's argument, and instead simply returned a 0. This causes a "unused variable" warning if it's the only reference in a function (show_cache_disable).

Replace it with the more correct inline function.

arch/x86/include/asm/topology.h +14 -3
index 4e2f2e0..d0c68e2 100644
@@ -192,9 +192,20 @@ extern int __node_distance(int, int);
 
 #else /* !CONFIG_NUMA */
 
-#define numa_node_id()		0
-#define	cpu_to_node(cpu)	0
-#define	early_cpu_to_node(cpu)	0
+static inline int numa_node_id(void)
+{
+	return 0;
+}
+
+static inline int cpu_to_node(int cpu)
+{
+	return 0;
+}
+
+static inline int early_cpu_to_node(int cpu)
+{
+	return 0;
+}
 
 static inline const cpumask_t *cpumask_of_node(int node)
 {
#18 lore raw
Quoted 8 lines · Mike Travis
Quoted 7 lines · Ingo Molnar

FYI, there's new warnings due to cpumask changes:

arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘show_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:710: warning: unused variable ‘mask’ arch/x86/kernel/cpu/intel_cacheinfo.c: In function ‘store_cache_disable’:
arch/x86/kernel/cpu/intel_cacheinfo.c:745: warning: unused variable ‘mask’

Quoted 7 lines
Quoted 3 lines

on 32-bit defconfig.

Ingo

Hi Ingo,

You can pull the following patch to fix this build warning.

pulled into tip/cpus4096, thanks Mike!

Ingo

#19 lore raw
In reply to Ingo Molnar
Quoted 7 lines · Ingo Molnar
Quoted 1 line · Mike Travis

Subject: irq: fix build errors referencing old kstat.irqs array

i've picked this up into tip/cpus4096, thanks Mike,

Ingo

I sent it as a patch because I wasn't sure if you wanted in the cpus4096 branch or the sparseirqs branch.

Thanks,
Mike