diff options
author | Stefano Stabellini | 2022-06-17 18:19:33 -0700 |
---|---|---|
committer | Stefano Stabellini | 2022-06-17 18:19:33 -0700 |
commit | 6f5ecb4a9d780378ed3733a7c838b10e5d0a832d (patch) | |
tree | de5974f42af4406abb348cafea950a785dd420c1 | |
parent | 66b9bd9f5e20c168ebcad4b08ac29cf6a90b666d (diff) |
Add support for cache coloring
Generate the coloring information for Xen, dom0 and domUs based on
information on the config file.
Cache coloring is not upstreaming but it was published to xen-devel
already. It is very useful to be able to provide a cache coloring
configuration via config file instead of manually editing boot.source.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
-rw-r--r-- | README.md | 10 | ||||
-rwxr-xr-x | scripts/uboot-script-gen | 26 |
2 files changed, 35 insertions, 1 deletions
@@ -49,6 +49,7 @@ 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_COLORS[0]="6-14" 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" @@ -86,6 +87,9 @@ Where: - XEN specifies the Xen hypervisor binary to load. Note that it has to be a regular Xen binary, not a u-boot binary. +- XEN_COLORS specifies the colors (cache coloring) to be used for Xen + and is in the format startcolor-endcolor + - XEN_CMD specifies the command line arguments used for Xen. If not set, the default one will be used. @@ -103,6 +107,9 @@ Where: - DOM0_VCPUS specifies the number of VCPUs for Dom0. The default is 1. This is only applicable when XEN_CMD is not specified. +- DOM0_COLORS specifies the colors (cache coloring) to be used for dom0 + and is in the format startcolor-endcolor + - DOM0_CMD specifies the command line arguments for Dom0's Linux kernel. If "root=" isn't set, imagebuilder will try to determine it. If not set at all, the default one is used. @@ -150,6 +157,9 @@ Where: - DOMU_VCPUS[number] is the number of vcpus for the VM, default 1 +- DOMU_COLORS[number] specifies the colors (cache coloring) to be used + for the domain and is in the format startcolor-endcolor + - DOMU_NOBOOT[number]: if specified, the DomU is not started automatically at boot as dom0-less guest. It can still be created later from Dom0. diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen index 001f6ed..48b36a3 100755 --- a/scripts/uboot-script-gen +++ b/scripts/uboot-script-gen @@ -203,6 +203,21 @@ function xen_device_tree_editing() add_device_tree_static_mem "/chosen/domU$i" "${DOMU_STATIC_MEM[$i]}" fi dt_set "/chosen/domU$i" "vpl011" "hex" "0x1" + + if test "${DOMU_COLORS[$i]}" + then + local startcolor=$(echo "${DOMU_COLORS[$i]}" | cut -d "-" -f 1) + local endcolor=$(echo "${DOMU_COLORS[$i]}" | cut -d "-" -f 2) + local bitcolors=0 + local bit=$startcolor + while test $bit -le $endcolor + do + bitcolors=$(( $bitcolors | $(( 1 << $bit)) )) + bit=$(( $bit + 1 )) + done + dt_set "/chosen/domU$i" "colors" "hex" "$(printf "0x%x" $bitcolors)" + fi + add_device_tree_kernel "/chosen/domU$i" ${domU_kernel_addr[$i]} ${domU_kernel_size[$i]} "${DOMU_CMD[$i]}" if test "${domU_ramdisk_addr[$i]}" then @@ -384,7 +399,16 @@ function xen_config() DOM0_VCPUS="1" fi - XEN_CMD="console=dtuart dtuart=serial0 dom0_mem=${DOM0_MEM}M dom0_max_vcpus=${DOM0_VCPUS} bootscrub=0 vwfi=native sched=null" + if test "$DOM0_COLORS" + then + DOM0_COLORS="dom0_colors=$DOM0_COLORS" + fi + if test "$XEN_COLORS" + then + XEN_COLORS="xen_colors=$XEN_COLORS" + fi + + XEN_CMD="console=dtuart dtuart=serial0 dom0_mem=${DOM0_MEM}M dom0_max_vcpus=${DOM0_VCPUS} bootscrub=0 vwfi=native sched=null $XEN_COLORS $DOM0_COLORS" else if [ "$DOM0_MEM" ] || [ "$DOM0_VCPUS" ] then |