Files
xen/docs/misc/arm/passthrough.txt
T
Julien Grall 0b24160656 docs/misc: arm: Add documentation about Device Tree passthrough
Note that the example is done on Midway whose SMMU driver is not
supported on Xen upstream.

Currently, I don't have other platform where I can test Device Tree
passthrough.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-05-21 15:12:09 +01:00

63 lines
1.9 KiB
Plaintext

Passthrough a device described in the Device Tree to a guest
============================================================
The example will use the secondary network card for the midway server.
1) Mark the device to let Xen know the device will be used for passthrough.
This is done in the device tree node describing the device by adding the
property "xen,passthrough". The command to do it in U-Boot is:
fdt set /soc/ethernet@fff51000 xen,passthrough
2) Create a partial device tree describing the device. The IRQ are mapped
1:1 to the guest (i.e VIRQ == IRQ). For MMIO, you will have to find a hole
in the guest memory layout (see xen/include/public/arch-arm.h, note that
the layout is not stable and can change between versions of Xen).
/dts-v1/;
/ {
/* #*cells are here to keep DTC happy */
#address-cells = <2>;
#size-cells = <2>;
aliases {
net = &mac0;
};
passthrough {
compatible = "simple-bus";
ranges;
#address-cells = <2>;
#size-cells = <2>;
mac0: ethernet@10000000 {
compatible = "calxeda,hb-xgmac";
reg = <0 0x10000000 0 0x1000>;
interrupts = <0 80 4 0 81 4 0 82 4>;
};
};
};
Note:
* The interrupt-parent property will be added by the toolstack in the
root node;
* The following properties are mandatory with the /passthrough node:
- compatible: It should always contain "simple-bus"
- ranges
- #address-cells
- #size-cells
* See http://www.devicetree.org/Device_Tree_Usage for more
information about device tree.
3) Compile the partial guest device with dtc (Device Tree Compiler).
For our purpose, the compiled file will be called guest-midway.dtb and
placed in /root in DOM0.
3) Add the following options in the guest configuration file:
device_tree = "/root/guest-midway.dtb"
dtdev = [ "/soc/ethernet@fff51000" ]
irqs = [ 112, 113, 114 ]
iomem = [ "0xfff51,1@0x10000" ]