Re: [PATCH] irqchip/gic-v3-its: Don't acquire rt_spin_lock in allocate_vpe_l1_table()
From: Thomas Gleixner <tglx@kernel.org>
Date: 2026-01-08 22:11:37
Also in:
linux-rt-devel, lkml
From: Thomas Gleixner <tglx@kernel.org>
Date: 2026-01-08 22:11:37
Also in:
linux-rt-devel, lkml
On Thu, Jan 08 2026 at 08:26, Marc Zyngier wrote:
Err, no. That's horrible. I can see three ways to address this in a more appealing way: - you give RT a generic allocator that works for (small) atomic allocations. I appreciate that's not easy, and even probably contrary to the RT goals. But I'm also pretty sure that the GIC code is not the only pile of crap being caught doing that. - you pre-compute upfront how many cpumasks you are going to require, based on the actual GIC topology. You do that on CPU0, outside of the hotplug constraints, and allocate what you need. This is difficult as you need to ensure the RD<->CPU matching without the CPUs having booted, which means wading through the DT/ACPI gunk to try and guess what you have. - you delay the allocation of L1 tables to a context where you can perform allocations, and before we have a chance of running a guest on this CPU. That's probably the simplest option (though dealing with late onlining while guests are already running could be interesting...).
At the point where a CPU is brought up, the topology should be known
already, which means this can be allocated on the control CPU _before_
the new CPU comes up, no?
Thanks,
tglx