From 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf Mon Sep 17 00:00:00 2001 From: takeshi_hoshina Date: Mon, 2 Nov 2020 11:07:33 +0900 Subject: basesystem-jj recipes --- .../documentation/xen-devicetree.md | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 bsp/meta-arm/meta-arm-autonomy/documentation/xen-devicetree.md (limited to 'bsp/meta-arm/meta-arm-autonomy/documentation/xen-devicetree.md') diff --git a/bsp/meta-arm/meta-arm-autonomy/documentation/xen-devicetree.md b/bsp/meta-arm/meta-arm-autonomy/documentation/xen-devicetree.md new file mode 100644 index 00000000..a44dca78 --- /dev/null +++ b/bsp/meta-arm/meta-arm-autonomy/documentation/xen-devicetree.md @@ -0,0 +1,104 @@ +Xen device tree +=============== + +Introduction +------------ + +xen-devicetree recipe can be used to modify an existing Device Tree Blob, +produced by Linux kernel or another recipe, to include in it entries required +to start Xen and a Dom0 Linux on top of it. + +The recipe will do the following processing: +- generate a xen.dtsi file with entries required for xen based on parameters +- turn DTBs in ${XEN_DEVICETREE_DTBS} back to dts +- include in xen.dtsi and all other dtsi from + ${XEN_DEVICETREE_DTSI_MERGE} (check Bitbake parameters for more information + on this). +- use dtc to create a new DTB file + +The recipe will generate new files in deploy/images and name them with the +extension "-xen.dtb". +For example **machine.dtb** will generate **machine-xen.dtb**. + +Entries added to the DTBs +------------------------- + +When a DTB is processed by the recipe, the following block is added: +``` + chosen { + xen,dom0-bootargs = "VAL"; + xen,xen-bootargs = "VAL"; + + modules { + #size-cells = <0x00000001>; + #address-cells = <0x00000001>; + + module@0 { + reg = ; + compatible = "multiboot,module"; + }; + }; + }; +``` +Each occurence of **VAL** is replaced by the content of the variables listed in +this documentation. + +Bitbake parameters +------------------ + +Several parameters are available to configure the xen-devicetree during Yocto +project compilation (those can be set in your project local.conf, for exmple). + +The following parameters are available: + +- XEN_DEVICETREE_DEPEND: This variable can be used to indicate which recipe + task is generating the DTBs that xen-devicetree will modify. This makes sure + the xen devicetrees are properly regenerated if the source DTBs are changed. + This variable is set by default to "virtual/kernel:do_deploy" to use DTBs + generated during the compilation of the Linux kernel. This must be changed + if the machine your are using is not using a DTB listed in KERNEL_DEVICETREE. + +- XEN_DEVICETREE_DTBS: This should be set to the list of DTBs you want to be + modified by xen-devicetree. Those must be files that xen-devicetree can find + in the ${DEPLOY_DIR_IMAGE} directory using only the basename of the entries. + For example "mydir/board.dtb" will make the recipe look for + ${DEPLOY_DIR_IMAGE}/board.dtb. + This variable is set by default to "${KERNEL_DEVICETREE}" to process the DTBs + generated by the Linux kernel. + +- XEN_DEVICETREE_DOM0_MEM: Memory size to allocate to Dom0. + This variable is only used if XEN_DEVICETREE_XEN_BOOTARGS has a value + containing "dom0_mem=${XEN_DEVICETREE_DOM0_MEM}" as the memory assigned to + dom0 is defined using Xen boot arguments. + This variable is set by default to "1024M". + +- XEN_DEVICETREE_DOM0_BOOTARGS: Boot arguments to pass to Dom0 Linux when + booting it. + This variable is set by default to "console=hvc0 earlycon=xen". + +- XEN_DEVICETREE_XEN_BOOTARGS: this variable should be set with the boot + arguments to be passed to Xen on boot. + This variable is set by default to + "noreboot dom0_mem=${XEN_DEVICETREE_DOM0_MEM}". + +- XEN_DEVICETREE_DOM0_ADDR: This is the address from which the Linux kernel to + be used for Dom0 will be copied. When using u-boot, this is the address at + which you will load the kernel Image before starting Xen. + This variable is set by default to "0x80080000". + +- XEN_DEVICETREE_DOM0_SIZE: This is the size of the kernel loaded at + ${XEN_DEVICETREE_DOM0_ADDR}. Xen will copy this amount of data inside the + guest before starting it so the size must be at least equal to the kernel + size but can be bigger. You must be careful not to have a value too big as it + could slow down boot or copy other parts with it (like the DTB). + You might need to increase this if you use a kernel with a bundled initramfs. + This variable is set by default to "0x01000000". + +- XEN_DEVICETREE_DTSI_MERGE: This variable contains the list of dtsi files that + must be included inside the generated DTB file. By default the only one + include is the "xen.dtsi" generated by the recipe. + If your board or project needs to include more fixes or entries in the DTB, + this variable can be appended from a bbappend file to include other dtsi. The + files must be inside the recipe workspace during Yocto compilation. + You can check xen-devicetree.bbappend for an example. + -- cgit 1.2.3-korg