- alpha-smp-irq-routing-fix.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     alpha: SMP IRQ routing fix

has been  the -mm tree.  Its filename is

     alpha-smp-irq-routing-fix.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
Subject: alpha: SMP IRQ routing fix
From: Ivan Kokshaysky <ink@xxxxxxxxxxxxxxxxxxxx>


After removal of fixup_cpu_present_map() function Alpha ended up with an empty
cpu_present_map, so secondary CPUs on SMP systems are not being started.

Worse, on some platforms we route interrupts to secondary CPUs using
cpu_possible_map which is still populated properly.  As a result, these
interrupts go nowhere so the machines like DP264 aren't able to boot even with
a primary CPU.

Fixed basically by s/cpu_present_mask/cpu_present_map/.

Thanks to Ernst Herzberg for reporting the bug and testing the fix.

Cc: Ernst Herzberg <list-lkml@xxxxxxxx>
Cc: Richard Henderson <rth@xxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 arch/alpha/kernel/alpha_ksyms.c |    1 -
 arch/alpha/kernel/process.c     |    6 +++---
 arch/alpha/kernel/smp.c         |   14 ++++----------
 arch/alpha/kernel/sys_titan.c   |    2 +-
 include/asm-alpha/smp.h         |    4 +---
 5 files changed, 9 insertions(+), 18 deletions(-)

diff -puN arch/alpha/kernel/alpha_ksyms.c~alpha-smp-irq-routing-fix arch/alpha/kernel/alpha_ksyms.c
--- devel/arch/alpha/kernel/alpha_ksyms.c~alpha-smp-irq-routing-fix	2006-06-04 02:51:15.000000000 -0700
+++ devel-akpm/arch/alpha/kernel/alpha_ksyms.c	2006-06-04 02:51:15.000000000 -0700
@@ -182,7 +182,6 @@ EXPORT_SYMBOL(smp_num_cpus);
 EXPORT_SYMBOL(smp_call_function);
 EXPORT_SYMBOL(smp_call_function_on_cpu);
 EXPORT_SYMBOL(_atomic_dec_and_lock);
-EXPORT_SYMBOL(cpu_present_mask);
 #endif /* CONFIG_SMP */
 
 /*
diff -puN arch/alpha/kernel/process.c~alpha-smp-irq-routing-fix arch/alpha/kernel/process.c
--- devel/arch/alpha/kernel/process.c~alpha-smp-irq-routing-fix	2006-06-04 02:51:15.000000000 -0700
+++ devel-akpm/arch/alpha/kernel/process.c	2006-06-04 02:51:15.000000000 -0700
@@ -94,7 +94,7 @@ common_shutdown_1(void *generic_ptr)
 	if (cpuid != boot_cpuid) {
 		flags |= 0x00040000UL; /* "remain halted" */
 		*pflags = flags;
-		clear_bit(cpuid, &cpu_present_mask);
+		cpu_clear(cpuid, cpu_present_map);
 		halt();
 	}
 #endif
@@ -120,8 +120,8 @@ common_shutdown_1(void *generic_ptr)
 
 #ifdef CONFIG_SMP
 	/* Wait for the secondaries to halt. */
-	cpu_clear(boot_cpuid, cpu_possible_map);
-	while (cpus_weight(cpu_possible_map))
+	cpu_clear(boot_cpuid, cpu_present_map);
+	while (cpus_weight(cpu_present_map))
 		barrier();
 #endif
 
diff -puN arch/alpha/kernel/smp.c~alpha-smp-irq-routing-fix arch/alpha/kernel/smp.c
--- devel/arch/alpha/kernel/smp.c~alpha-smp-irq-routing-fix	2006-06-04 02:51:15.000000000 -0700
+++ devel-akpm/arch/alpha/kernel/smp.c	2006-06-04 02:51:15.000000000 -0700
@@ -68,7 +68,6 @@ enum ipi_message_type {
 static int smp_secondary_alive __initdata = 0;
 
 /* Which cpus ids came online.  */
-cpumask_t cpu_present_mask;
 cpumask_t cpu_online_map;
 
 EXPORT_SYMBOL(cpu_online_map);
@@ -439,7 +438,7 @@ setup_smp(void)
 			if ((cpu->flags & 0x1cc) == 0x1cc) {
 				smp_num_probed++;
 				/* Assume here that "whami" == index */
-				cpu_set(i, cpu_present_mask);
+				cpu_set(i, cpu_present_map);
 				cpu->pal_revision = boot_cpu_palrev;
 			}
 
@@ -450,11 +449,10 @@ setup_smp(void)
 		}
 	} else {
 		smp_num_probed = 1;
-		cpu_set(boot_cpuid, cpu_present_mask);
 	}
 
-	printk(KERN_INFO "SMP: %d CPUs probed -- cpu_present_mask = %lx\n",
-	       smp_num_probed, cpu_possible_map.bits[0]);
+	printk(KERN_INFO "SMP: %d CPUs probed -- cpu_present_map = %lx\n",
+	       smp_num_probed, cpu_present_map.bits[0]);
 }
 
 /*
@@ -473,7 +471,7 @@ smp_prepare_cpus(unsigned int max_cpus)
 
 	/* Nothing to do on a UP box, or when told not to.  */
 	if (smp_num_probed == 1 || max_cpus == 0) {
-		cpu_present_mask = cpumask_of_cpu(boot_cpuid);
+		cpu_present_map = cpumask_of_cpu(boot_cpuid);
 		printk(KERN_INFO "SMP mode deactivated.\n");
 		return;
 	}
@@ -486,10 +484,6 @@ smp_prepare_cpus(unsigned int max_cpus)
 void __devinit
 smp_prepare_boot_cpu(void)
 {
-	/*
-	 * Mark the boot cpu (current cpu) as online
-	 */ 
-	cpu_set(smp_processor_id(), cpu_online_map);
 }
 
 int __devinit
diff -puN arch/alpha/kernel/sys_titan.c~alpha-smp-irq-routing-fix arch/alpha/kernel/sys_titan.c
--- devel/arch/alpha/kernel/sys_titan.c~alpha-smp-irq-routing-fix	2006-06-04 02:51:15.000000000 -0700
+++ devel-akpm/arch/alpha/kernel/sys_titan.c	2006-06-04 02:51:15.000000000 -0700
@@ -66,7 +66,7 @@ titan_update_irq_hw(unsigned long mask)
 	register int bcpu = boot_cpuid;
 
 #ifdef CONFIG_SMP
-	cpumask_t cpm = cpu_present_mask;
+	cpumask_t cpm = cpu_present_map;
 	volatile unsigned long *dim0, *dim1, *dim2, *dim3;
 	unsigned long mask0, mask1, mask2, mask3, dummy;
 
diff -puN include/asm-alpha/smp.h~alpha-smp-irq-routing-fix include/asm-alpha/smp.h
--- devel/include/asm-alpha/smp.h~alpha-smp-irq-routing-fix	2006-06-04 02:51:15.000000000 -0700
+++ devel-akpm/include/asm-alpha/smp.h	2006-06-04 02:51:15.000000000 -0700
@@ -45,10 +45,8 @@ extern struct cpuinfo_alpha cpu_data[NR_
 #define hard_smp_processor_id()	__hard_smp_processor_id()
 #define raw_smp_processor_id()	(current_thread_info()->cpu)
 
-extern cpumask_t cpu_present_mask;
-extern cpumask_t cpu_online_map;
 extern int smp_num_cpus;
-#define cpu_possible_map	cpu_present_mask
+#define cpu_possible_map	cpu_present_map
 
 int smp_call_function_on_cpu(void (*func) (void *info), void *info,int retry, int wait, cpumask_t cpu);
 
_

Patches currently in -mm which might be from ink@xxxxxxxxxxxxxxxxxxxx are

alpha-agp-warning-fix.patch
remove-duplicate-symbol-exports-on-alpha.patch
alpha-generic-hweight-build-fix.patch
insert-identical-resources-above-existing-resources.patch
make-sure-nobodys-leaking-resources.patch
fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch
adjust-handle_irr_event-return-type.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux