• Eric W. Biederman's avatar
    [PATCH] x86-64: Only look at per_cpu data for online cpus. · 70a0a535
    Eric W. Biederman authored
    When I generalized __assign_irq_vector I failed to pay attention
    to what happens when you access a per cpu data structure for
    a cpu that is not online.   It is an undefined case making any
    code that does it have undefined behavior as well.
    The code still needs to be able to allocate a vector across cpus
    that are not online to properly handle combinations like lowest
    priority interrupt delivery and cpu_hotplug.  Not that we can do
    that today but the infrastructure shouldn't prevent it.
    So this patch updates the places where we touch per cpu data
    to only touch online cpus, it makes cpu vector allocation
    an atomic operation with respect to cpu hotplug, and it updates
    the cpu start code to properly initialize vector_irq so we
    don't have inconsistencies.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
io_apic.c 50.8 KB