irqchip/gic-v4.1: Ensure L2 vPE table is allocated at RD level
authorZenghui Yu <yuzenghui@huawei.com>
Thu, 6 Feb 2020 07:57:08 +0000 (15:57 +0800)
committerMarc Zyngier <maz@kernel.org>
Sat, 8 Feb 2020 10:01:33 +0000 (10:01 +0000)
commit4e6437f12d6e929e802f5599a2d50dfcf92d0f50
treeb45df6503a6f78144befaf910cf1e093b15e488e
parent8b718d403c5cdc7f0ea492c33ec88169f3e76462
irqchip/gic-v4.1: Ensure L2 vPE table is allocated at RD level

In GICv4, we will ensure that level2 vPE table memory is allocated
for the specified vpe_id on all v4 ITS, in its_alloc_vpe_table().
This still works well for the typical GICv4.1 implementation, where
the new vPE table is shared between the ITSs and the RDs.

To make it explicit, let us introduce allocate_vpe_l2_table() to
make sure that the L2 tables are allocated on all v4.1 RDs. We're
likely not need to allocate memory in it because the vPE table is
shared and (L2 table is) already allocated at ITS level, except
for the case where the ITS doesn't share anything (say SVPET == 0,
practically unlikely but architecturally allowed).

The implementation of allocate_vpe_l2_table() is mostly copied from
its_alloc_table_entry().

Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200206075711.1275-4-yuzenghui@huawei.com
drivers/irqchip/irq-gic-v3-its.c