aboutsummaryrefslogtreecommitdiff
path: root/README_system_device_tree.md
diff options
context:
space:
mode:
authorAyan Kumar Halder2022-01-21 11:10:40 +0000
committerStefano Stabellini2022-01-21 12:57:01 -0800
commit1393caa374db807b7ece3fef18c00a4bffb5fa57 (patch)
tree88380239981921028e85e6682d743f01a4e444ea /README_system_device_tree.md
parentf3c2be56f0cbdf220eca94d6ca58b94392768f37 (diff)
Added the lopper dts file to generate imagebuilder config from system-device-tree
Lopper parses the device tree for a "xen" label. It parses the sub nodes to determine the DOM0_VCPUS, DOM0_MEM, NUM_DOMUS, DOMU_VCPUS[], DOMU_MEM[] and DOMU_PASSTHROUGH_PATHS[] As an example, consider the following snippet of system-device-tree xen: domain@2 { compatible = "openamp,domain-v1","openamp,hypervisor-v1"; cpus = <&cpus_a72 0x3 0x00000002>; memory = <0x0 0x500000 0x0 0x7fb00000>; dom0: domain@3 { compatible = "openamp,domain-v1","xen,domain-v2"; cpus = <&cpus_a72 0x3 0x00000001>; memory = <0x0 0x501000 0x0 0x3faff000>; }; linux1: domain@4 { compatible = "openamp,domain-v1","xen,domain-v2"; cpus = <&cpus_a72 0x3 0x00000001>; memory = <0x0 0x501000 0x0 0x3faff000>; access = <&mmc0 0x0>; }; linux2: domain@5 { compatible = "openamp,domain-v1","xen,domain-v2"; cpus = <&cpus_a72 0x3 0x00000001>; memory = <0x0 0x40000000 0x0 0x40000000>; firewallconfig = <&linux1 1 0>; }; }; python3 _path_to_/lopper.py -f --enhanced -i path_to_/lop-xen.dts device-trees/system-device-tree-xen.dts > config The contents of the 'config' will be as follows :- NUM_DOMUS=2 DOM0_VCPUS = 2 DOM0_MEM = 1018 DOMU_VCPUS[0] = 2 DOMU_MEM[0] = 1018 DOMU_PASSTHROUGH_PATHS[0] = "/bus@f1000000/sdhci@f1050000" DOMU_VCPUS[1] = 2 DOMU_MEM[1] = 1024 This is provided as the input configuration file for the imagebuilder. Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com> Signed-off-by: Ayan Kumar Halder <ayankuma@xilinx.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> [stefano: minor style and grammar fixes] Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
Diffstat (limited to 'README_system_device_tree.md')
-rw-r--r--README_system_device_tree.md82
1 files changed, 82 insertions, 0 deletions
diff --git a/README_system_device_tree.md b/README_system_device_tree.md
new file mode 100644
index 0000000..5da8f06
--- /dev/null
+++ b/README_system_device_tree.md
@@ -0,0 +1,82 @@
+# ImageBuilder with System Device Tree
+
+Please refer to README.md to know more about ImageBuilder
+
+ImageBuilder can be used with System Device Tree to generate the
+scripts, binaries, etc required to boot Xen, Dom0 and DomU kernels on
+a hardware platform.
+The System Device Tree contains the hardware information as well as
+domain information.
+Refer https://gitenterprise.xilinx.com/stefanos/system-device-tree/blob/master/system-device-tree.dts
+for the system device tree example.
+
+## scripts/lop-xen.dts
+
+ImageBuilder derives its configuration from "domains" node in System
+Device Tree, e.g.:
+
+xen: domain@2 {
+ compatible = "openamp,domain-v1","openamp,hypervisor-v1";
+ cpus = <&cpus_a72 0x3 0x00000002>;
+ memory = <0x0 0x500000 0x0 0x7fb00000>;
+
+ dom0: domain@3 {
+ compatible = "openamp,domain-v1","xen,domain-v2";
+ cpus = <&cpus_a72 0x3 0x00000001>;
+ memory = <0x0 0x501000 0x0 0x3faff000>;
+ };
+
+ linux1: domain@4 {
+ compatible = "openamp,domain-v1","xen,domain-v2";
+ cpus = <&cpus_a72 0x3 0x00000001>;
+ memory = <0x0 0x501000 0x0 0x3faff000>;
+ access = <&mmc0 0x0>;
+ };
+
+ linux2: domain@5 {
+ compatible = "openamp,domain-v1","xen,domain-v2";
+ cpus = <&cpus_a72 0x3 0x00000001>;
+ memory = <0x0 0x40000000 0x0 0x40000000>;
+
+ firewallconfig = <&linux1 1 0>;
+ };
+};
+
+From the above snippet, ImageBuilder can deduce the number of domUs,
+count of virtual CPUs for Dom0, amount of memory for Dom0, count of
+virtual CPUs for each DomU, amount of memory for each DomU and device
+assigned to each DomU.
+
+lop-xen.dts is the lopper dts file to generate the ImageBuilder config
+file (containing the above information) from System Device Tree.
+
+To use it, one needs to checkout the following two repositories:
+
+```
+git clone git://github.com/devicetree-org/lopper
+git clone https://gitenterprise.xilinx.com/stefanos/system-device-tree.git
+```
+
+Note: One needs to add a 'dom0' label (as shown in the previous snippet)
+for the node which represents dom0.
+
+And then run the following command from the "lopper" directory:
+
+```
+python3 lopper.py -f --enhanced -i <path_to>/imagebuilder/scripts/lop-xen.dts \
+ <path_to>/system-device-tree/system-device-tree-xen.dts > config
+```
+
+For the dts snippet shown before, the following 'config' file will be
+generated:
+
+NUM_DOMUS=2
+DOM0_VCPUS = 2
+DOM0_MEM = 1018
+DOMU_VCPUS[0] = 2
+DOMU_MEM[0] = 1018
+DOMU_PASSTHROUGH_PATHS[0] = "/bus@f1000000/sdhci@f1050000"
+DOMU_VCPUS[1] = 2
+DOMU_MEM[1] = 1024
+
+Refer to README.md for a description of each of these options.