irqchip: gicv3-its: Add limitation to page order
When required size of Device Table is out of the page allocator's capability, the whole ITS will fail in probing. This actually is not the hardware's problem and is mainly a limitation of the kernel page allocator. This patch will keep ITS going on to the next initializaion stage with an explicit warning. Acked-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Yun Wu <wuyun.wu@huawei.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Link: https://lkml.kernel.org/r/1425659870-11832-10-git-send-email-marc.zyngier@arm.com Signed-off-by: Jason Cooper <jason@lakedaemon.net>
This commit is contained in:
parent
790b57aed1
commit
1d27704a26
|
@ -828,6 +828,11 @@ static int its_alloc_tables(struct its_node *its)
|
||||||
u32 ids = GITS_TYPER_DEVBITS(typer);
|
u32 ids = GITS_TYPER_DEVBITS(typer);
|
||||||
|
|
||||||
order = get_order((1UL << ids) * entry_size);
|
order = get_order((1UL << ids) * entry_size);
|
||||||
|
if (order >= MAX_ORDER) {
|
||||||
|
order = MAX_ORDER - 1;
|
||||||
|
pr_warn("%s: Device Table too large, reduce its page order to %u\n",
|
||||||
|
its->msi_chip.of_node->full_name, order);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc_size = (1 << order) * PAGE_SIZE;
|
alloc_size = (1 << order) * PAGE_SIZE;
|
||||||
|
|
Loading…
Reference in New Issue