[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210219113101.967508-1-vkuznets@redhat.com>
Date: Fri, 19 Feb 2021 12:30:59 +0100
From: Vitaly Kuznetsov <vkuznets@...hat.com>
To: Thomas Gleixner <tglx@...utronix.de>, x86@...nel.org
Cc: Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
"H. Peter Anvin" <hpa@...or.com>, linux-kernel@...r.kernel.org
Subject: [PATCH RFC 0/2] x86/apic: Avoid cm->allocated going negative in irq_matrix
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 everythin.
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(-)
--
2.29.2
Powered by blists - more mailing lists