mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] irqchip/gicv3-its: ITS table size should not be smaller than PSZ
@ 2015-04-16  5:30 Minghuan Lian
  2015-04-21 10:19 ` Thomas Gleixner
  0 siblings, 1 reply; 2+ messages in thread
From: Minghuan Lian @ 2015-04-16  5:30 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-arm-kernel, Zang Roy-R61911, Hu Mingkai-B21284,
	Yoder Stuart-B08248, Thomas Gleixner, Jason Cooper, Marc Zyngier,
	Minghuan Lian

The default page size of ITS table has been changed to 64KB,
but for some platforms the real size of allocated memory which
calculated by DEVBITS of register GITS_TYPER may be smaller than
default size. In this case, the allocation size must be increased
to the default size, otherwise, the wrong page number will cause
kernel hang.

Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com>
---
v2-v1:
Increase allocation size instead of decreasing PSZ

 drivers/irqchip/irq-gic-v3-its.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 9687f8a..19ab86d 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -828,7 +828,8 @@ static int its_alloc_tables(struct its_node *its)
 			u64 typer = readq_relaxed(its->base + GITS_TYPER);
 			u32 ids = GITS_TYPER_DEVBITS(typer);
 
-			order = get_order((1UL << ids) * entry_size);
+			order = max(get_order((1UL << ids) * entry_size),
+				    order);
 			if (order >= MAX_ORDER) {
 				order = MAX_ORDER - 1;
 				pr_warn("%s: Device Table too large, reduce its page order to %u\n",
-- 
1.9.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-04-21 10:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-16  5:30 [PATCH v2] irqchip/gicv3-its: ITS table size should not be smaller than PSZ Minghuan Lian
2015-04-21 10:19 ` Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®