Xen ARM with Virtualization Extensions/Salvator-X

From Xen
Jump to navigationJump to search

General information

This wiki talks about Xen on Renesas Salvator-X board Salvator-X(Cortex-A57 quad core + Cortex-A53 quadcore, code name r8a7795).

Icon Ambox.png Only core-image-minimal configuration are now supported


Known limitations

In current state (Linux kernel 4.6) there is impossible to use same device tree, as used for non-Xen environment.

  1. 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
  2. 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:

  1. BL2 bootloader - from on we leave bootloaders in EL2 mode
  2. 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

Resources

Salvator-X elinux resource Board support patch series