• Thomas Gleixner's avatar
    xen/events: Only force affinity mask for percpu interrupts · f7a6f994
    Thomas Gleixner authored
    All event channel setups bind the interrupt on CPU0 or the target CPU for
    percpu interrupts and overwrite the affinity mask with the corresponding
    cpumask. That does not make sense.
    
    The XEN implementation of irqchip::irq_set_affinity() already picks a
    single target CPU out of the affinity mask and the actual target is stored
    in the effective CPU mask, so destroying the user chosen affinity mask
    which might contain more than one CPU is wrong.
    
    Change the implementation so that the channel is bound to CPU0 at the XEN
    level and leave the affinity mask alone. At startup of the interrupt
    affinity will be assigned out of the affinity mask and the XEN binding will
    be updated. Only keep the enforcement for real percpu interrupts.
    
    On resume the overwrite is not required either because info->cpu and the
    affinity mask are still the same as at the time of suspend. Same for
    rebind_evtchn_irq().
    
    This also prepares for proper interrupt spreading.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Stefano Stabellini <sstabellini@kernel.org>
    Link: https://lore.kernel.org/r/20201210194045.250321315@linutronix.de
    
    f7a6f994
events_base.c 47.9 KB