xen/docs: Document how to do passthrough without IOMMU
authorStefano Stabellini <sstabellini@kernel.org>
Mon, 14 Feb 2022 03:19:56 +0000 (03:19 +0000)
committerJulien Grall <jgrall@amazon.com>
Thu, 17 Feb 2022 19:43:02 +0000 (19:43 +0000)
This commit creates a new doc to document how to do passthrough without IOMMU.

Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Penny Zheng <penny.zheng@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Tested-by: Stefano Stabellini <sstabellini@kernel.org>
docs/misc/arm/passthrough-noiommu.txt [new file with mode: 0644]

diff --git a/docs/misc/arm/passthrough-noiommu.txt b/docs/misc/arm/passthrough-noiommu.txt
new file mode 100644 (file)
index 0000000..3e2ef21
--- /dev/null
@@ -0,0 +1,52 @@
+Request Device Assignment without IOMMU support
+===============================================
+
+*WARNING:
+Users should be aware that it is not always secure to assign a device without
+IOMMU protection.
+When the device is not protected by the IOMMU, the administrator should make
+sure that:
+ 1. The device is assigned to a trusted guest.
+ 2. Users have additional security mechanism on the platform.
+
+This document assumes that the IOMMU is absent from the system or it is
+disabled (status = "disabled" in device tree).
+
+Add xen,force-assign-without-iommu; to the device tree snippet:
+
+ethernet: ethernet@ff0e0000 {
+       compatible = "cdns,zynqmp-gem";
+       xen,path = "/amba/ethernet@ff0e0000";
+       xen,reg = <0x0 0xff0e0000 0x1000 0x0 0xff0e0000>;
+       xen,force-assign-without-iommu;
+};
+
+Request 1:1 memory mapping for the domain on static allocation
+==============================================================
+
+Add a direct-map property under the appropriate /chosen/domU node which
+is also statically allocated with physical memory ranges through
+xen,static-mem property as its guest RAM.
+
+Below is an example on how to specify the 1:1 memory mapping for the domain
+on static allocation in the device-tree:
+
+/ {
+       chosen {
+               domU1 {
+                       compatible = "xen,domain";
+                       #address-cells = <0x2>;
+                       #size-cells = <0x2>;
+                       cpus = <2>;
+                       memory = <0x0 0x80000>;
+                       #xen,static-mem-address-cells = <0x1>;
+                       #xen,static-mem-size-cells = <0x1>;
+                       xen,static-mem = <0x30000000 0x20000000>;
+                       direct-map;
+                       ...
+               };
+       };
+};
+
+Besides reserving a 512MB region starting at the host physical address
+0x30000000 to DomU1, it also requests 1:1 memory mapping.