Skip to content

Commit 3ad2a5f

Browse files
Minghuan LianKAGA-KOKO
authored andcommitted
irqchip/gicv3-its: ITS table size should not be smaller than PSZ
When allocating a device table, if the requested allocation is smaller than the default granule size of the ITS then, we need to round up to the default size. Signed-off-by: Minghuan Lian <[email protected]> [ stuart: Added comments and massaged changelog ] Signed-off-by: Stuart Yoder <[email protected]> Reviewed-by: Marc Zygnier <[email protected]> Cc: <[email protected]> Cc: <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Thomas Gleixner <[email protected]>
1 parent e260818 commit 3ad2a5f

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

drivers/irqchip/irq-gic-v3-its.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,14 @@ static int its_alloc_tables(struct its_node *its)
828828
u64 typer = readq_relaxed(its->base + GITS_TYPER);
829829
u32 ids = GITS_TYPER_DEVBITS(typer);
830830

831-
order = get_order((1UL << ids) * entry_size);
831+
/*
832+
* 'order' was initialized earlier to the default page
833+
* granule of the the ITS. We can't have an allocation
834+
* smaller than that. If the requested allocation
835+
* is smaller, round up to the default page granule.
836+
*/
837+
order = max(get_order((1UL << ids) * entry_size),
838+
order);
832839
if (order >= MAX_ORDER) {
833840
order = MAX_ORDER - 1;
834841
pr_warn("%s: Device Table too large, reduce its page order to %u\n",

0 commit comments

Comments
 (0)