summaryrefslogtreecommitdiffstats
path: root/sys/arm64
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2016-02-02 16:32:44 +0000
committerandrew <andrew@FreeBSD.org>2016-02-02 16:32:44 +0000
commit80defbca6b1280bd85e38b31455b6e3af0158dd0 (patch)
treeb8b78c1a1daf1e3f160d3d423c31aca30dc66deb /sys/arm64
parent9de256aba3ba3d52b2a60731d976ad88ae302fe7 (diff)
downloadFreeBSD-src-80defbca6b1280bd85e38b31455b6e3af0158dd0.zip
FreeBSD-src-80defbca6b1280bd85e38b31455b6e3af0158dd0.tar.gz
Only look for the ranges property when we have children. This fixes booting
on systems with a gicv2, but no PCIe so no gicv2m. Sponsored by: ABT Systems Ltd
Diffstat (limited to 'sys/arm64')
-rw-r--r--sys/arm64/arm64/gic_fdt.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/arm64/arm64/gic_fdt.c b/sys/arm64/arm64/gic_fdt.c
index 924a08b..075f1d6 100644
--- a/sys/arm64/arm64/gic_fdt.c
+++ b/sys/arm64/arm64/gic_fdt.c
@@ -158,12 +158,17 @@ arm_gic_fdt_attach(device_t dev)
OF_getencprop(root, "#size-cells", &sc->sc_size_cells,
sizeof(sc->sc_size_cells));
+ /* If we have no children don't probe for them */
+ child = OF_child(root);
+ if (child == 0)
+ return (0);
+
if (gic_fill_ranges(root, sc) < 0) {
device_printf(dev, "could not get ranges\n");
return (ENXIO);
}
- for (child = OF_child(root); child != 0; child = OF_peer(child)) {
+ for (; child != 0; child = OF_peer(child)) {
dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO);
if (ofw_bus_gen_setup_devinfo(&dinfo->obdinfo, child) != 0) {
OpenPOWER on IntegriCloud