patch-2.1.88 linux/arch/i386/kernel/smp.c

Next file: linux/arch/i386/kernel/traps.c
Previous file: linux/arch/i386/kernel/ptrace.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.87/linux/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c
@@ -878,8 +878,14 @@
 			else
 				printk("Not responding.\n");
 		}
-	}
 	SMP_PRINTK(("CPU has booted.\n"));
+	}
+	else
+	{
+		__cpu_logical_map[cpucount] = -1;
+		cpu_number_map[i] = -1;
+		cpucount--;
+	}
 
 	swapper_pg_dir[0]=maincfg;
 	local_flush_tlb();
@@ -1031,9 +1037,11 @@
 		 *	Make sure we unmap all failed CPUs
 		 */
 		
-		if (cpu_number_map[i] == -1)
+		if (cpu_number_map[i] == -1 && (cpu_present_map & (1 << i))) {
+			printk("CPU #%d not responding. Removing from cpu_present_map.\n",i);
 			cpu_present_map &= ~(1 << i);
-	}
+                }
+        }
 
 	/*
 	 *	Cleanup possible dangling ends...

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov