[PATCH 0/3] irqchip/gic-v3-its: Fix the ITT pool's alignment, zeroing and growth
From: Fuad Tabba
Date: Fri Nov 06 2026 - 04:33:55 EST
Hi folks,
Three fixes to the ITT pool that took over sub-page ITTs from
kzalloc_node(). It doesn't align them to 256 bytes, though MAPD now
relies on it to. It doesn't zero the ITTs it reuses either, and it
leaks pages when it fails to grow.
The first gives the pool a 256-byte granule. With its 1-byte granule,
ITTs stay aligned only while every size is a multiple of 256, which
holds for power-of-two ITE sizes but not for QEMU's 12-byte ones. On
QEMU, two devices with 32 MSI-X vectors each are enough to put the
second device's ITT at an address MAPD truncates into the first's.
The second zeroes an ITT reused from the pool, as MAPD requires. The
third frees the page when gen_pool_add() fails.
Based on Linux 7.4-rc1 (6628e7d4c6b25).
Cheers,
/fuad
Fuad Tabba (3):
irqchip/gic-v3-its: Align sub-page ITTs to 256 bytes
irqchip/gic-v3-its: Zero ITTs reused from the ITT pool
irqchip/gic-v3-its: Free the page when gen_pool_add() fails
drivers/irqchip/irq-gic-v3-its.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
--
2.47.3