From 7ba9b416b052b4272c8bfc4c4f630ba39d8c8dd3 Mon Sep 17 00:00:00 2001 From: Ayan Kumar Halder Date: Wed, 15 Dec 2021 17:39:28 +0000 Subject: Add support for compiling and merging partial device trees One can specify the repository and the directory holding the partial device trees via the config option PASSTHROUGH_DTS_REPO. This can be either a git url or a local directory containing the partial device trees. Also, the passthrough devices for each DOMU are specified via DOMU_PASSTHROUGH_PATHS config option. Imagebuilder will compile the partial device trees. The underlying assumption is that the name of the partial device tree should match to the name of the device specified in DOMU_PASSTHROUGH_PATHS. For example (in case of git repo) :- PASSTHROUGH_DTS_REPO="git@github.com:Xilinx/xen-passthrough-device-trees.git device-trees-2021.2" DOMU_PASSTHROUGH_PATHS[0]="/axi/serial@ff010000 /axi/mmc@ff170000" (This tells imagebuilder to clone the repo and use serial@ff010000.dts and mmc@ff170000.dts from device-trees-2021.2 folder, to compile and generate a partial dtb for DOMU[0]. If the files are absent, it will give an error. Also, if the files mismatching values for #address-cells and #size-cells, it will give an error. Signed-off-by: Ayan Kumar Halder Reviewed-by: Stefano Stabellini Signed-off-by: Stefano Stabellini --- README.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 1695c56..4b37db7 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ LOAD_CMD="tftpb" DEVICE_TREE="mpsoc.dtb" XEN="xen" XEN_CMD="console=dtuart dtuart=serial0 dom0_mem=1G dom0_max_vcpus=1 bootscrub=0 vwfi=native sched=null" -XEN_PASSTHROUGH_PATHS="/axi/ethernet@ff0e0000 /axi/serial@ff000000" +PASSTHROUGH_DTS_REPO="git@github.com:Xilinx/xen-passthrough-device-trees.git device-trees-2021.2" DOM0_KERNEL="Image-dom0" DOM0_CMD="console=hvc0 earlycon=xen earlyprintk=xen clk_ignore_unused" DOM0_RAMDISK="dom0-ramdisk.cpio" @@ -44,9 +44,9 @@ DT_OVERLAY[0]="host_dt_overlay.dtbo" NUM_DOMUS=2 DOMU_KERNEL[0]="zynqmp-dom1/Image-domU" +DOMU_PASSTHROUGH_PATHS[0]="/axi/ethernet@ff0e0000 /axi/serial@ff000000" DOMU_CMD[0]="console=ttyPS0 earlycon console=ttyPS0,115200 clk_ignore_unused rdinit=/sbin/init root=/dev/ram0 init=/bin/sh" DOMU_RAMDISK[0]="zynqmp-dom1/domU-ramdisk.cpio" -DOMU_PASSTHROUGH_DTB[0]="zynqmp-dom1/passthrough-example-part.dtb" DOMU_KERNEL[1]="zynqmp-dom2/Image-domU" DOMU_CMD[1]="console=ttyAMA0 clk_ignore_unused rdinit=/sbin/init root=/dev/ram0 init=/bin/sh" DOMU_RAMDISK[1]="zynqmp-dom2/domU-ramdisk.cpio" @@ -87,8 +87,11 @@ Where: - XEN_CMD specifies the command line arguments used for Xen. If not set, the default one will be used. -- XEN_PASSTHROUGH_PATHS specifies the passthrough devices (separated - by spaces). It adds "xen,passthrough" to the corresponding dtb nodes. +- PASSTHROUGH_DTS_REPO specifies the git repository and/or the directory + which contains the partial device trees. This is optional. However, if + this is specified, then XEN_PASSTHROUGH_PATHS need to be specified. + uboot-script-gen will compile the partial device trees which have + been specified in XEN_PASSTHROUGH_PATHS. - DOM0_KERNEL specifies the Dom0 kernel file to load. @@ -114,8 +117,21 @@ Where: - DOMU_RAMDISK[number] specifies the DomU ramdisk to use. -- DOMU_PASSTHROUGH_DTB[number] specifies the device assignment - configuration, see xen.git:docs/misc/arm/passthrough.txt +- DOMU_PASSTHROUGH_PATHS[number] specifies the passthrough devices ( + separated by spaces). It adds "xen,passthrough" to the corresponding + dtb nodes in xen device tree blob. + This option is valid only when PASSTHROUGH_DTS_REPO is provided. + With this option, the partial device trees (corresponding to the + passthrough devices) from the PASSTHROUGH_DTS_REPO, are compiled + merged and used as DOMU[number] device tree blob. + Note it assumes that the names of the partial device trees will match + to the names of the devices specified here. + +- DOMU_PASSTHROUGH_DTB[number] specifies the passthrough device trees + blob. This option is used when DOMU_PASSTHROUGH_PATHS[number] is not + specified by the user. + NOTE that with this option, user needs to manually set xen,passthrough + in xen.dtb. - DOMU_MEM[number] is the amount of memory for the VM in MB, default 512MB -- cgit v1.2.3