Skip to content

Commit 666740f

Browse files
mpredfearnMarc Zyngier
authored andcommitted
irqchip: mips-gic: Print warning if inherited GIC base is used
If the physical address of the GIC resource cannot be read from device tree, then the code falls back to reading it from the gcr_gic_base register. Hopefully this has been set to a sane value by the bootloader or some platform code, but is defined by the hardware manual to have "undefined" reset state. Using it as the address at which the GIC will be mapped into physical memory space can therefore be risky if it has not been initialised, since it may result in the GIC being mapped to an effectively random address anywhere in physical memory, where it might conflict with peripherals or RAM and lead to weird crashes. Since a "sane value" is very platform specific because it is particular to the platform's memory map, it is difficult to test for. At the very least, a warning message should be printed in the case that we trust the inherited value. Reported-by: Amit Kama <[email protected]> Signed-off-by: Matt Redfearn <[email protected]> Reviewed-by: Paul Burton <[email protected]> Signed-off-by: Marc Zyngier <[email protected]>
1 parent 1f19aee commit 666740f

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/irqchip/irq-mips-gic.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,8 @@ static int __init gic_of_init(struct device_node *node,
701701
gic_base = read_gcr_gic_base() &
702702
~CM_GCR_GIC_BASE_GICEN;
703703
gic_len = 0x20000;
704+
pr_warn("Using inherited base address %pa\n",
705+
&gic_base);
704706
} else {
705707
pr_err("Failed to get memory range\n");
706708
return -ENODEV;

0 commit comments

Comments
 (0)