lkml.org 
[lkml]   [2012]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v7 8/8] x86/tlb: just do tlb flush on one of siblings of SMT
>>> On 23.05.12 at 16:15, Alex Shi <alex.shi@intel.com> wrote:
> + /* doing flush on both siblings of SMT is just wasting time */
> + cpumask_copy(&flush_mask, cpumask);
> + if (likely(smp_num_siblings > 1)) {
> + rand = jiffies;
> + /* See "Numerical Recipes in C", second edition, p. 284 */
> + rand = rand * 1664525L + 1013904223L;
> + rand &= 0x1;
> +
> + for_each_cpu(cpu, &flush_mask) {
> + sblmask = cpu_sibling_mask(cpu);
> + if (cpumask_subset(sblmask, &flush_mask)) {
> + if (rand == 0)
> + cpu_clear(cpu, flush_mask);
> + else
> + cpu_clear(cpumask_next(cpu, sblmask),
> + flush_mask);
> + }
> + }
> + }
> +

There is no comment or anything else indicating that this is
suitable for dual-thread CPUs only - when there are more than
2 threads per core, the intended effect won't be achieved. I'd
recommend making the logic generic from the beginning, but if
that doesn't seem feasible to you, at least a comment stating
the limitation should be added imo.

Jan



\
 
 \ /
  Last update: 2012-05-23 19:42    [from the cache]
©2003-2011 Jasper Spaans