aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Stabellini2022-06-17 18:19:33 -0700
committerStefano Stabellini2022-06-17 18:19:33 -0700
commit6f5ecb4a9d780378ed3733a7c838b10e5d0a832d (patch)
treede5974f42af4406abb348cafea950a785dd420c1
parent66b9bd9f5e20c168ebcad4b08ac29cf6a90b666d (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.md10
-rwxr-xr-xscripts/uboot-script-gen26
2 files changed, 35 insertions, 1 deletions
diff --git a/README.md b/README.md
index 876e46d..c52e4b9 100644
--- a/README.md
+++ b/README.md
@@ -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