|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [ImageBuilder][PATCH] uboot-script-gen: add ability to cfg vcpu hard affinity
From: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
Add DOMU_VCPU_HARD_AFFINITY[number,vcpu] configuration file string option
specifying the hard affinity configuration for the VM vCPU(vcpu) in DT.
The format is a comma-separated list of pCPUs or ranges of pCPUs. Ranges
are hyphen-separated intervals (such as 0-4) and are inclusive on both
sides. The numbers refer to logical pCPU ids.
For example:
DOMU_VCPUS[0]="2"
DOMU_VCPU_HARD_AFFINITY[0,0]="1"
will be reflected in domU0/vcpu0 DT node with "hard-affinity" set:
vcpu0 {
hard-affinity = "1";
id = <0x00000000>;
compatible = "xen,vcpu";
};
Signed-off-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
---
README.md | 11 +++++++++++
scripts/uboot-script-gen | 4 ++++
scripts/xen_dt_domu | 39 +++++++++++++++++++++++++++++++++++++++
3 files changed, 54 insertions(+)
create mode 100644 scripts/xen_dt_domu
diff --git a/README.md b/README.md
index 5b75018ea956..262022c665be 100644
--- a/README.md
+++ b/README.md
@@ -186,6 +186,17 @@ Where:
- DOMU_VCPUS[number] is the number of vcpus for the VM, default 1
+- DOMU_VCPU_HARD_AFFINITY[number,vcpu] optional, is the A string
+ specifying the hard affinity configuration for the VM vCPU(vcpu):
+ a comma-separated list of pCPUs or ranges of pCPUs is used.
+ Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive
+ on both sides. The numbers refer to logical pCPU ids. Below is an example:
+```
+ DOMU_VCPUS[number]=2
+ DOMU_VCPU_HARD_AFFINITY[number,0]="0-2"
+ DOMU_VCPU_HARD_AFFINITY[number,1]="3"
+```
+
- DOMU_COLORS[number] specifies the colors (cache coloring) to be used
for the domain and is in the format startcolor-endcolor
diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index 74e3b076910c..9229f9af567b 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -392,6 +392,8 @@ function xen_device_tree_editing()
dt_set "/chosen/domU$i" "colors" "hex" "$(printf "0x%x"
$bitcolors)"
fi
+ xen_dt_domu_add_vcpu_nodes "/chosen/domU$i" $i ${DOMU_VCPUS[$i]}
+
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
@@ -1164,10 +1166,12 @@ fi
check_depends
+declare -A DOMU_VCPU_HARD_AFFINITY
source "$cfg_file"
SCRIPT_PATH=$(dirname "$0")
source "$SCRIPT_PATH/common"
+source "$SCRIPT_PATH/xen_dt_domu"
# command line overrides
LOAD_CMD=${load_opt:-$LOAD_CMD}
diff --git a/scripts/xen_dt_domu b/scripts/xen_dt_domu
new file mode 100644
index 000000000000..e1cb2376c37e
--- /dev/null
+++ b/scripts/xen_dt_domu
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# uses:
+# DOMU_VCPU_HARD_AFFINITY
+function xen_dt_domu_add_vcpu_nodes()
+{
+ # $1 - dt path
+ local path=$1
+ # $2 - domain number
+ local dom_num=$2
+ # $3 - number of vcpus for the domain
+ local vcpus=$3
+ local hard_affinity=""
+ local gen_vcpu=""
+
+ for (( vcpu=0; vcpu<${vcpus}; vcpu++ ))
+ do
+ gen_vcpu=""
+ if test "${DOMU_VCPU_HARD_AFFINITY[$dom_num,$vcpu]}"
+ then
+ hard_affinity=${DOMU_VCPU_HARD_AFFINITY[$dom_num,$vcpu]}
+ gen_vcpu="1"
+ fi
+
+ if test -z $gen_vcpu
+ then
+ continue
+ fi
+
+ dt_mknode "${path}" "vcpu$vcpu"
+ dt_set "${path}/vcpu$vcpu" "compatible" "str_a" "xen,vcpu"
+ dt_set "${path}/vcpu$vcpu" "id" "int" "$vcpu"
+
+ if test -n $hard_affinity
+ then
+ dt_set "${path}/vcpu$vcpu" "hard-affinity" "str" "$hard_affinity"
+ fi
+ done
+}
--
2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |