From: Ingo Molnar This fixes the DEBUG_PREEMPT warnings reported by Paul Jackson. The reason why raw_smp_processor_id() is fine here is that we dont care about the _precise_ CPU ID the boot process happens on, only about the quad. (the reason for this whole code is that NUMAQ doesnt like being migrated to a non-boot quad.) So we mark whatever CPU ID we happen to be on, and migrate back to it once calibration has finished. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton --- kernel/sched.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN kernel/sched.c~scheduler-cache-hot-autodetect-fix kernel/sched.c --- devel/kernel/sched.c~scheduler-cache-hot-autodetect-fix 2005-11-15 00:55:34.000000000 -0800 +++ devel-akpm/kernel/sched.c 2005-11-15 00:55:34.000000000 -0800 @@ -5480,7 +5480,7 @@ __devinit static unsigned long long meas void __devinit calibrate_migration_costs(void) { - int cpu1 = -1, cpu2 = -1, cpu, orig_cpu = smp_processor_id(); + int cpu1 = -1, cpu2 = -1, cpu, orig_cpu = raw_smp_processor_id(); struct sched_domain *sd; unsigned long distance, max_distance = 0; unsigned long long cost; @@ -5567,7 +5567,7 @@ void __devinit calibrate_migration_costs * Move back to the original CPU. NUMA-Q gets confused * if we migrate to another quad during bootup. */ - if (smp_processor_id() != orig_cpu) { + if (raw_smp_processor_id() != orig_cpu) { cpumask_t mask = cpumask_of_cpu(orig_cpu), saved_mask = current->cpus_allowed; _