]> err.no Git - linux-2.6/commitdiff
[POWERPC] Fix thinko in cpu_thread_mask_to_cores()
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 22 Feb 2008 03:26:43 +0000 (14:26 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 26 Feb 2008 11:17:03 +0000 (22:17 +1100)
The function cpu_thread_mask_to_cores() which returns a cpumask
of one and only one thread enabled for a given core has a bug
as it's shifting things in the wrong direction.

Note: The implementation is still sub-optimal in the sense that
for a given core, the thread set in the result may not be any of
the threads set in the input, which can lead to more IPIs then
strictly necessary, but it isn't incorrect per-se.  I'll improve
that later.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
include/asm-powerpc/cputhreads.h

index 8485c28b5f47efa58d0eb752d45f2c5a3a483661..fb11b0c459b832912cabee81141517a38d136ba6 100644 (file)
@@ -35,7 +35,7 @@ static inline cpumask_t cpu_thread_mask_to_cores(cpumask_t threads)
 
        res = CPU_MASK_NONE;
        for (i = 0; i < NR_CPUS; i += threads_per_core) {
-               cpus_shift_right(tmp, threads_core_mask, i);
+               cpus_shift_left(tmp, threads_core_mask, i);
                if (cpus_intersects(threads, tmp))
                        cpu_set(i, res);
        }