mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
The boot CPU pending table must use the memory attributes selected by ITS quirks. gicv3_lpi_init_host_lpis() is therefore called after gicv3_its_init(). However, gicv3_its_init() also programs and enables each ITS before host LPI state is allocated. No ITS commands are submitted at that point, but this ordering relies on that implementation detail. Split per-ITS initialization into preparation and activation phases. First map and disable every ITS and collect its quirks. Then initialize host LPI state. Only after that, allocate and program the ITS tables and command queue, and enable each ITS. The subsequent gicv3_cpu_init() sequence remains unchanged: it programs the Redistributor LPI tables, enables LPIs, and then submits the first MAPC and SYNC commands. Drop the now unreachable stub for gicv3_lpi_init_host_lpis(). Suggested-by: Julien Grall <julien@xen.org> Signed-off-by: Mykola Kvach <mykola_kvach@epam.com> Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Reviewed-by: Michal Orzel <michal.orzel@amd.com>