Xen ARM with Virtualization Extensions/Salvator-X
General information
This wiki talks about Xen on Renesas Salvator-X board Salvator-X(Cortex-A57 quad core + Cortex-A53 quadcore, code name r8a7795).
Known limitations
In current state (Linux kernel 4.6) there is impossible to use same device tree, as used for non-Xen environment.
- Some on device addresses (avs, reset, pll modules) are hardcoded in board specific files, so Xen doesn't know about them nothing - we have to create nodes for this in DTS. This is solved follow patch
- CMA, ADSP, Multimedia & lossy_decompression memory regions are disabled in current state - they use predefined addresses, but it can't guarantee that Dom0 will be allocated within required memory ranges. This limitation is under investigation & planned to be resolved in future releases.
Setup
Follow setup are based & tested on official Renesas Yocto 2.12.0 release (https://github.com/renesas-rcar/meta-renesas/releases/tag/Renesas-Yocto-v2.12.0)
- Checkout on follow commits
poky - 40376446904ae3529be41737fed9a0b650ed167d meta-linaro - 9b1fd178309544dff1f7453e796a9437125bc0d9 meta-openembedded - 8ab04afbffb4bc5184cfe0655049de6f44269990 meta-renesas - 522efd09043aa8af1eec01af2b9e025df424d9a5
- Clone some additional yocto layers are required
meta-selinux - 4c75d9cbcf1d75043c7c5ab315aa383d9b227510 meta-virtualizaion - 042425c1d98bdd7e44a62789bd03b375045266f5
- Clone meta-platform-xen repository in the same directory
git clone https://github.com/qbeeukraine/meta-platform-xen.git -b 2.12/minimal
- Initialize yocto build environment
source poky/oe-init-build-env
- Copy local.conf & bblayers.conf from supplied xen layer
cp meta-platform-xen/meta-rcar-gen3-xen/docs/sample/conf/salvator-x/linaro-gcc/bsp/*.conf ./conf/
- Build yocto
bitbake core-image-minimal
- Target images will be located in follow folder
build/tmp/deploy/images/salvator-x-xen
BL2 & U-boot update procedure
Please reference to recent version of board manual for this procedure. Follow bootloaders should be updated:
- BL2 bootloader - from on we leave bootloaders in EL2 mode
- U-boot - don't disable SCIF clock & don't update memory nodes in DTS file
Check u-boot environment variables
Set follow configuration in u-boot command prompt.
bootargs=dom0_mem=512M console=dtuart dtuart=serial0 dom0_max_vcpus=1 bootscrub=0 flask_enforcing=1 bootcmd=tftp 0x78080000 xen-salvator-x-xen.uImage; tftp 0x73800000 Image-r8a7795-salvator-x-dom0.dtb; tftp 0x7a000000 Image; tftp 0x7c000000 xenpolicy-salvator-x-xen; bootm 0x78080000 - 0x73800000
Dom0 rootfs setup
By default (as it recommended by Renesas manual) rootfs should be located on nfs drive with ip gained by dhcp. But this behavior can be changed by editing follow file:
build/tmp/work-shared/salvator-x-xen/kernel-source/arch/arm64/boot/dts/renesas/r8a7795-salvator-x-dom0.dts
or additional patch can be added to follow file
meta-rcar-gen3-xen/recipes-kernel/linux/linux-renesas/xen_dom0.scc