• Neil Horman's avatar
    x86/apic/vector: Warn when vector space exhaustion breaks affinity · 743dac49
    Neil Horman authored
    On x86, CPUs are limited in the number of interrupts they can have affined
    to them as they only support 256 interrupt vectors per CPU. 32 vectors are
    reserved for the CPU and the kernel reserves another 22 for internal
    purposes. That leaves 202 vectors for assignement to devices.
    
    When an interrupt is set up or the affinity is changed by the kernel or the
    administrator, the vector assignment code attempts to honor the requested
    affinity mask. If the vector space on the CPUs in that affinity mask is
    exhausted the code falls back to a wider set of CPUs and assigns a vector
    on a CPU outside of the requested affinity mask silently.
    
    While the effective affinity is reflected in the corresponding
    /proc/irq/$N/effective_affinity* files the silent breakage of the requested
    affinity can lead to unexpected behaviour for administrators.
    
    Add a pr_warn() when this happens so that adminstrators get at least
    informed about it in the syslog.
    
    [ tglx: Massaged changelog and made the pr_warn() more informative ]
    
    Reported-by: djuran@redhat.com
    Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: djuran@redhat.com
    Link: https://lkml.kernel.org/r/20190822143421.9535-1-nhorman@tuxdriver.com
    743dac49
vector.c 33 KB