• Thomas Gleixner's avatar
    genirq: Always force thread affinity · 04aa530e
    Thomas Gleixner authored
    Sankara reported that the genirq core code fails to adjust the
    affinity of an interrupt thread in several cases:
    
     1) On request/setup_irq() the call to setup_affinity() happens before
        the new action is registered, so the new thread is not notified.
    
     2) For secondary shared interrupts nothing notifies the new thread to
        change its affinity.
    
     3) Interrupts which have the IRQ_NO_BALANCE flag set are not moving
        the thread either.
    
    Fix this by setting the thread affinity flag right on thread creation
    time. This ensures that under all circumstances the thread moves to
    the right place. Requires a check in irq_thread_check_affinity for an
    existing affinity mask (CONFIG_CPU_MASK_OFFSTACK=y)
    Reported-and-tested-by: default avatarSankara Muthukrishnan <sankara.m@gmail.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1209041738200.2754@ionosSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    04aa530e
manage.c 43.4 KB