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    [W:0.025 / U:30.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site