diff options
author | Yun Wu <[email protected]> | 2015-03-06 16:37:48 +0000 |
---|---|---|
committer | Jason Cooper <[email protected]> | 2015-03-08 05:34:21 +0000 |
commit | 1d27704a26313b9ed7463d4bfc6eda29e2bb3180 (patch) | |
tree | 0bee2accab7a2a6f13322c685ae639e45ec71e0f | |
parent | 790b57aed156d22d6c7101a37adc78a621be1167 (diff) |
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 <[email protected]>
Signed-off-by: Yun Wu <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Jason Cooper <[email protected]>
-rw-r--r-- | drivers/irqchip/irq-gic-v3-its.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index 0fe25a97a5a9..ec20d4a942e0 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -828,6 +828,11 @@ static int its_alloc_tables(struct its_node *its) u32 ids = GITS_TYPER_DEVBITS(typer); 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; |