• Thomas Gleixner's avatar
    genirq/matrix: Handle CPU offlining proper · 651ca2c0
    Thomas Gleixner authored
    At CPU hotunplug the corresponding per cpu matrix allocator is shut down and
    the allocated interrupt bits are discarded under the assumption that all
    allocated bits have been either migrated away or shut down through the
    managed interrupts mechanism.
    
    This is not true because interrupts which are not started up might have a
    vector allocated on the outgoing CPU. When the interrupt is started up
    later or completely shutdown and freed then the allocated vector is handed
    back, triggering warnings or causing accounting issues which result in
    suspend failures and other issues.
    
    Change the CPU hotplug mechanism of the matrix allocator so that the
    remaining allocations at unplug time are preserved and global accounting at
    hotplug is correctly readjusted to take the dormant vectors into account.
    
    Fixes: 2f75d9e1 ("genirq: Implement bitmap matrix allocator")
    Reported-by: default avatarYuriy Vostrikov <delamonpansie@gmail.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarYuriy Vostrikov <delamonpansie@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180222112316.849980972@linutronix.de
    651ca2c0
Name
Last commit
Last update
..
Kconfig Loading commit data...
Makefile Loading commit data...
affinity.c Loading commit data...
autoprobe.c Loading commit data...
chip.c Loading commit data...
cpuhotplug.c Loading commit data...
debug.h Loading commit data...
debugfs.c Loading commit data...
devres.c Loading commit data...
dummychip.c Loading commit data...
generic-chip.c Loading commit data...
handle.c Loading commit data...
internals.h Loading commit data...
ipi.c Loading commit data...
irq_sim.c Loading commit data...
irqdesc.c Loading commit data...
irqdomain.c Loading commit data...
manage.c Loading commit data...
matrix.c Loading commit data...
migration.c Loading commit data...
msi.c Loading commit data...
pm.c Loading commit data...
proc.c Loading commit data...
resend.c Loading commit data...
settings.h Loading commit data...
spurious.c Loading commit data...
timings.c Loading commit data...