Vitaly Kuznetsov <vkuzn...@redhat.com> writes: > I discovered that CPU0 offlining/onlining works only once: > > # echo 0 > /sys/devices/system/cpu/cpu0/online > # echo 1 > /sys/devices/system/cpu/cpu0/online > # echo 0 > /sys/devices/system/cpu/cpu0/online > -bash: echo: write error: No space left on device > > with the following in dmesg: > > [ ... ] CPU 0 has 4294967295 vectors, 589 available. Cannot disable CPU > > And the problem seems to be that irq_matrix_assign()/irq_matrix_free() calls > for PIC_CASCADE_IR are unbalanced, making cm->allocated go negative. > > RFC as I didn't quite get why we're making an exception for PIC_CASCADE_IR in > the first place. Surely it is special, but for the sake of consistency we'd > better not treat it as such. Or maybe I just misunderstood everything. >
If the RFC part is the only thing which scares everyone off I'm ready to drop it and pretend that I'm confident with the change) > Vitaly Kuznetsov (2): > x86/apic: Do not make an exception for PIC_CASCADE_IR when marking > legacy irqs in irq_matrix > genirq/matrix: WARN_ON_ONCE() when cm->allocated/m->total_allocated go > negative > > arch/x86/kernel/apic/vector.c | 3 +-- > kernel/irq/matrix.c | 11 +++++++++-- > 2 files changed, 10 insertions(+), 4 deletions(-) -- Vitaly