[lkml]   [2009]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [RFC] Correct behaviour of irq affinity?
    On Mon, Mar 23, 2009 at 10:49 PM, Rusty Russell <> wrote:
    > The effect of setting desc->affinity (ie. from userspace via sysfs) has varied
    > over time.  In 2.6.27, the 32-bit code anded the value with cpu_online_map,
    > and both 32 and 64-bit did that anding whenever a cpu was unplugged.
    > 2.6.29 consolidated this into one routine (and fixed hotplug) but introduced
    > another variation: anding the affinity with cfg->domain.  Is this right, or
    > should we just set it to what the user said?  Or as now, indicate that we're
    > restricting it.
    > If we should change it, here's what the patch looks like against x86 tip
    > (cpu_mask_to_apicid_and already takes cpu_online_mask into account):
    > diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
    > index 86827d8..30906cd 100644
    > --- a/arch/x86/kernel/apic/io_apic.c
    > +++ b/arch/x86/kernel/apic/io_apic.c
    > @@ -592,10 +592,10 @@ set_desc_affinity(struct irq_desc *desc, const struct cpumask *mask)
    >        if (assign_irq_vector(irq, cfg, mask))
    >                return BAD_APICID;
    > -       cpumask_and(desc->affinity, cfg->domain, mask);
    > +       cpumask_copy(desc->affinity, mask);
    >        set_extra_move_desc(desc, mask);
    > -       return apic->cpu_mask_to_apicid_and(desc->affinity, cpu_online_mask);
    > +       return apic->cpu_mask_to_apicid_and(desc->affinity, cfg->domain);
    >  }
    >  static void
    cfg->domain for logical flat: will be ALL_CPUS
    for phys flat (aka bigsmp on 32bit) will be one cpu set mask.

    so desc->affinity: for logical will be not changed, but
    set_desc_affinity() return will be changed. ( not add with
    cpu_online_mask anymore)
    when mask is 0x0f
    for phys flat, desc->affinity will be changed to 0x0f from
    0x01/0x02/0x04/08, return set_desc_affinity is not changed.
    so /proc/irq/xx/smp_affinity will be changed. and it does reflect that
    actually affinity.

    so this patch looks not right.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2009-03-24 08:25    [W:0.024 / U:0.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site