aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2023-03-07 06:15:32 +0000
committerKyle Evans <kevans@FreeBSD.org>2023-03-07 06:15:32 +0000
commitd71a00e9f5db2379d1f267a151b90f1c19dce24d (patch)
treeeb0a6c41649e748acc82287572ef76badbf7764f
parent7741a5c4dc5e318dcaabf5e336dfa9cf3f3b6805 (diff)
downloadsrc-d71a00e9f5db2379d1f267a151b90f1c19dce24d.tar.gz
src-d71a00e9f5db2379d1f267a151b90f1c19dce24d.zip
arm64: ofw: respect the nonposted-mmio prop in OF_decode_addr()
This is the only mapping remaining which needs to respect nonposted-mmio to avoid breaking the boot on Apple silicon. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D38920
-rw-r--r--sys/arm64/arm64/ofw_machdep.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/arm64/arm64/ofw_machdep.c b/sys/arm64/arm64/ofw_machdep.c
index 3941c1d35617..61aa4c1a1208 100644
--- a/sys/arm64/arm64/ofw_machdep.c
+++ b/sys/arm64/arm64/ofw_machdep.c
@@ -43,7 +43,8 @@ OF_decode_addr(phandle_t dev, int regno, bus_space_tag_t *tag,
{
bus_addr_t addr;
bus_size_t size;
- int err;
+ phandle_t parent;
+ int err, flags;
err = ofw_reg_to_paddr(dev, regno, &addr, &size, NULL);
if (err != 0)
@@ -54,5 +55,10 @@ OF_decode_addr(phandle_t dev, int regno, bus_space_tag_t *tag,
if (sz != NULL)
*sz = size;
- return (bus_space_map(*tag, addr, size, 0, handle));
+ flags = 0;
+ parent = OF_parent(dev);
+ if (parent > 0 && OF_hasprop(parent, "nonposted-mmio"))
+ flags |= BUS_SPACE_MAP_NONPOSTED;
+
+ return (bus_space_map(*tag, addr, size, flags, handle));
}