fix smp_processor_id() use in the cache-hot autodetector
PATCH 1/1 fix smp_processor_id() use in the cache-hot autodetector
this patch 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 <[email protected]>
kernel/sched.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/sched.c +2 -2
@@ -5480,7 +5480,7 @@ __devinit static unsigned long long measvoid __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;