summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2021-02-28 21:10:22 +0000
committerpatrick <patrick@openbsd.org>2021-02-28 21:10:22 +0000
commit1d276ec2d0c11592a5e08931cad92c4cdd9d06d4 (patch)
treef69cc0c6de8655cc340e844ab050a056251916a7
parentImplement IOMMU OFW API for on-SoC/non-PCI devices. (diff)
downloadwireguard-openbsd-1d276ec2d0c11592a5e08931cad92c4cdd9d06d4.tar.xz
wireguard-openbsd-1d276ec2d0c11592a5e08931cad92c4cdd9d06d4.zip
Issue call to IOMMU OFW API to collect an IOMMU-sprinkled DMA tag.
ok kettenis@
-rw-r--r--sys/arch/arm64/dev/mainbus.c5
-rw-r--r--sys/arch/arm64/dev/simplebus.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/sys/arch/arm64/dev/mainbus.c b/sys/arch/arm64/dev/mainbus.c
index 2a257ac6300..b40c2169da8 100644
--- a/sys/arch/arm64/dev/mainbus.c
+++ b/sys/arch/arm64/dev/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.19 2020/08/26 03:29:05 visa Exp $ */
+/* $OpenBSD: mainbus.c,v 1.20 2021/02/28 21:10:22 patrick Exp $ */
/*
* Copyright (c) 2016 Patrick Wildt <patrick@blueri.se>
* Copyright (c) 2017 Mark Kettenis <kettenis@openbsd.org>
@@ -25,6 +25,7 @@
#include <machine/fdt.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/fdt.h>
+#include <dev/ofw/ofw_misc.h>
#include <dev/ofw/ofw_thermal.h>
#include <arm64/arm64/arm64var.h>
@@ -267,6 +268,8 @@ mainbus_attach_node(struct device *self, int node, cfmatch_t submatch)
fa.fa_dmat->_flags |= BUS_DMA_COHERENT;
}
+ fa.fa_dmat = iommu_device_map(fa.fa_node, fa.fa_dmat);
+
if (submatch == NULL && sc->sc_early == 0)
print = mainbus_print;
if (submatch == NULL)
diff --git a/sys/arch/arm64/dev/simplebus.c b/sys/arch/arm64/dev/simplebus.c
index 1777fa7665f..5ff303dcd72 100644
--- a/sys/arch/arm64/dev/simplebus.c
+++ b/sys/arch/arm64/dev/simplebus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: simplebus.c,v 1.12 2020/11/19 17:42:59 kettenis Exp $ */
+/* $OpenBSD: simplebus.c,v 1.13 2021/02/28 21:10:22 patrick Exp $ */
/*
* Copyright (c) 2016 Patrick Wildt <patrick@blueri.se>
*
@@ -21,8 +21,10 @@
#include <sys/device.h>
#include <sys/malloc.h>
+#include <machine/fdt.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/fdt.h>
+#include <dev/ofw/ofw_misc.h>
#include <arm64/fdt.h>
#include <arm64/dev/simplebusvar.h>
@@ -252,6 +254,8 @@ simplebus_attach_node(struct device *self, int node)
fa.fa_dmat->_flags |= BUS_DMA_COHERENT;
}
+ fa.fa_dmat = iommu_device_map(fa.fa_node, fa.fa_dmat);
+
child = config_found_sm(self, &fa, sc->sc_early ? NULL :
simplebus_print, simplebus_submatch);