irqchip/gic-v3-its: Honor hypervisor enforced LPI range
A recent extension to the GIC architecture allows a hypervisor to arbitrarily reduce the number of LPIs available to a guest, no matter what the GIC says about the valid range of IntIDs. Let's factor in this information when computing the number of available LPIs Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Tento commit je obsažen v:
@@ -1541,8 +1541,17 @@ out:
|
||||
static int __init its_lpi_init(u32 id_bits)
|
||||
{
|
||||
u32 lpis = (1UL << id_bits) - 8192;
|
||||
u32 numlpis;
|
||||
int err;
|
||||
|
||||
numlpis = 1UL << GICD_TYPER_NUM_LPIS(gic_rdists->gicd_typer);
|
||||
|
||||
if (numlpis > 2 && !WARN_ON(numlpis > lpis)) {
|
||||
lpis = numlpis;
|
||||
pr_info("ITS: Using hypervisor restricted LPI range [%u]\n",
|
||||
lpis);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initializing the allocator is just the same as freeing the
|
||||
* full range of LPIs.
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele