x86/tsc: Use topology functions
authorThomas Gleixner <tglx@linutronix.de>
Thu, 18 Feb 2016 19:53:43 +0000 (20:53 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 21 Feb 2016 20:11:22 +0000 (21:11 +0100)
It's simpler to look at the topology mask than iterating over all online cpus
to find a cpu on the same package.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
arch/x86/kernel/tsc.c

index 3d743da828d38acff0013600ed582c8b14ef81b3..5a6cb4684e0f63850679da61e338e2c3aa93a440 100644 (file)
@@ -1246,14 +1246,14 @@ void __init tsc_init(void)
  */
 unsigned long calibrate_delay_is_known(void)
 {
-       int i, cpu = smp_processor_id();
+       int sibling, cpu = smp_processor_id();
 
        if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC))
                return 0;
 
-       for_each_online_cpu(i)
-               if (cpu_data(i).phys_proc_id == cpu_data(cpu).phys_proc_id)
-                       return cpu_data(i).loops_per_jiffy;
+       sibling = cpumask_any_but(topology_core_cpumask(cpu), cpu);
+       if (sibling < nr_cpu_ids)
+               return cpu_data(sibling).loops_per_jiffy;
        return 0;
 }
 #endif