[PATCH v3] irqchip/gic-v4.1: Use local 4_1 ITS to generate VSGI

Marc Zyngier maz at kernel.org
Thu May 15 00:16:25 PDT 2025


On Thu, 15 May 2025 15:53:59 +0100,
Nianyao Tang <tangnianyao at huawei.com> wrote:
> 
> On multi-node GICv4.1 system, VSGI senders always use one certain 4_1 ITS,
> because find_4_1_its return the first its_node in list, regardless of
> which node the VSGI sender is on. This brings guest vsgi performance drop
> when VM is not running on the same node as this returned ITS.
> 
> On a 2-socket environment, each with one ITS and 32 cpu, GICv4.1 enabled,
> 4U8G guest, 4 vcpu is running on same socket.
> When VM on socket0, kvm-unit-tests ipi_hw result is 850ns.
> When VM on socket1, it is 750ns. The reason is VSGI sender always
> use the last reported ITS(that on socket1) to inject VSGI. The access
> from cpu to other-socket ITS will cost 100ns more compared to cpu to
> local ITS.
> 
> By using a local ITS, we can get 12% reduction in IPI latency.
> 
> Modify find_4_1_its to first return per-cpu local_4_1_its, which is
> init when inherit the VPE table from the ITS or from another CPU.
> If fail to find local 4_1 ITS, return any 4_1 ITS like before.
> 
> Signed-off-by: Nianyao Tang <tangnianyao at huawei.com>
> Suggested-by: Marc Zyngier <maz at kernel.org>

Link: https://lore.kernel.org/all/87tthgrt7s.wl-maz@kernel.org
Reviewed-by: Marc Zyngier <maz at kernel.org>

	M.

-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list