Messages in this thread Patch in this message | | | Date | Tue, 07 Jan 2003 12:21:54 -0800 | From | "Martin J. Bligh" <> | Subject | [PATCH] (3/7) changes do_boot_cpu to return an error code |
| |
Changes do_boot_cpu to return an error code, instead of trying to work it out later by magic and voodoo. Removes the other usage of apicid->cpu which is hard to maintain cleanly.
diff -urpN -X /home/fletch/.diff.exclude 02-i386_caching_topo/arch/i386/kernel/smpboot.c 03-boot_error/arch/i386/kernel/smpboot.c --- 02-i386_caching_topo/arch/i386/kernel/smpboot.c Tue Jan 7 09:24:51 2003 +++ 03-boot_error/arch/i386/kernel/smpboot.c Tue Jan 7 09:25:53 2003 @@ -810,14 +810,15 @@ wakeup_secondary_cpu(int phys_apicid, un
extern unsigned long cpu_initialized;
-static void __init do_boot_cpu (int apicid) +static int __init do_boot_cpu(int apicid) /* * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad * (ie clustered apic addressing mode), this is a LOGICAL apic ID. + * Returns zero if CPU booted OK, else error code from wakeup_secondary_cpu. */ { struct task_struct *idle; - unsigned long boot_error = 0; + unsigned long boot_error; int timeout, cpu; unsigned long start_eip; unsigned short nmi_high, nmi_low; @@ -883,14 +884,9 @@ static void __init do_boot_cpu (int apic }
/* - * Status is now clean - */ - boot_error = 0; - - /* * Starting actual IPI sequence... */ - wakeup_secondary_cpu(apicid, start_eip); + boot_error = wakeup_secondary_cpu(apicid, start_eip);
if (!boot_error) { /* @@ -946,6 +942,7 @@ static void __init do_boot_cpu (int apic *((volatile unsigned short *) TRAMPOLINE_HIGH) = nmi_high; *((volatile unsigned short *) TRAMPOLINE_LOW) = nmi_low; } + return boot_error; }
cycles_t cacheflush_time; @@ -1117,13 +1114,7 @@ static void __init smp_boot_cpus(unsigne if (max_cpus <= cpucount+1) continue;
- do_boot_cpu(apicid); - - /* - * Make sure we unmap all failed CPUs - */ - if ((boot_apicid_to_cpu(apicid) == -1) && - (phys_cpu_present_map & (1 << bit))) + if (do_boot_cpu(apicid)) printk("CPU #%d not responding - cannot use it.\n", apicid); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |