[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IMAGEBUILDER PATCH] Add domain capabilities


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jason Andryuk <jason.andryuk@xxxxxxx>
  • Date: Thu, 6 Mar 2025 17:13:10 -0500
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TaJNdntK/qgZ8HTPyL3RyCw3rWdNqE2r7A8d00ZRWjw=; b=kjKk4o+FLd889ZdP8LUjdnu503JYod2KLMynhPBHeHvhjeePuePiuIJdPNbMMBs94dG2sE1+Q7VtOTvFtrELrS7OVO/mXALIKc3FLp3ho6ACe6tfUSW+UWEXeQDO0GRzKAPPu0bqRDM8IHD2WudMROwiX5rWCNUFrnI6W+wMYp4J1LdvAKrfc360xK5oyco/a8Z8uAnyvdZoupHEdI951BfPd7pBwpaCM6AkN0d2ahqYk3z5EFf05zjp9hUO4CecDOVUm7UtMkHH9n63sVinEv3uMsYm8zx4N47TOMJvNyuvqQxKxHcseohXPQVJHs3cnkfwVzrqoWqVQpefbntqAQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oxp0p9dOU+3BOeAvjM5QmSANGC0xDaghUTvzLeiQSCrRLawmtYvhOxx2mDPyv6R/KsnkU0+cvNSFMH8n+QOnE21q6z0I1IUkn8pl5/1LSjo2lBX51Lxr1yAJwc5G531osCZIdP7I1sL20ZGZR7XMk5qd9P8GpprEoU2lZzKdM8oteNBFUnTmnE1u47hFzkr8p2gtUw4WRi4CXw0NqVZqIFSrpzEGOr3fyPb6JV5oJC5zUpRLgCDU2Yt6JnZgg4J0gx0x5FS2wH88IdPyIdHnU/6ndR0cML7BSdwa00gGoshtRt+n8bW3REfR2MVGa2il/BouOHURxiN5a6+GNwNS2w==
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jason Andryuk <jason.andryuk@xxxxxxx>
  • Delivery-date: Thu, 06 Mar 2025 22:13:31 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Add domain capabilities to creating disaggregated systems.

Signed-off-by: Jason Andryuk <jason.andryuk@xxxxxxx>
---
 README.md                | 16 ++++++++++++++
 scripts/uboot-script-gen | 47 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/README.md b/README.md
index ae2fdfd..25c9b6e 100644
--- a/README.md
+++ b/README.md
@@ -250,6 +250,22 @@ Where:
   Set driver_domain in xl config file. This option is only available for
   the disk_image script.
 
+- DOMU_CAPS[number] = "string" or "hex" (optional)
+  A "|"-concatentated string of capabilities:
+    - control
+    - hardware
+    - xenstore
+    - dom0 (All of the above)
+    - none
+
+  e.g. "control|hardware"
+
+  Or a numeric bitwise flags to specify domain capabilities:
+  0: None
+  1: Control
+  2: Hardware
+  4: Xenstore
+
 - LINUX is optional but specifies the Linux kernel for when Xen is NOT
   used.  To enable this set any LINUX\_\* variables and do NOT set the
   XEN variable.
diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index db2c011..397d73b 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -309,6 +309,43 @@ function add_device_tree_cpupools()
     done
 }
 
+function parse_domain_caps()
+{
+    local caps_str="$1"
+    local caps=0
+
+    for x in $( echo $caps_str | sed 's/|/ /g' | tr '[:upper:]' '[:lower:]' )
+    do
+        case "$x" in
+        none)
+            caps=$(( caps | 0 ))
+            ;;
+        control)
+            caps=$(( caps | 0x1 ))
+            ;;
+        hardware)
+            caps=$(( caps | 0x2 ))
+            ;;
+        xenstore)
+            caps=$(( caps | 0x4 ))
+            ;;
+        dom0|domain0)
+            caps=$(( caps | 0x7 ))
+            ;;
+        [0-9]*|0x[0-9a-fA-f]*)
+            caps=$(( caps | $x ))
+            ;;
+        *)
+            return 1
+            ;;
+        esac
+    done
+
+    echo "$caps"
+
+    return 0
+}
+
 function xen_device_tree_editing()
 {
     dt_set "/chosen" "#address-cells" "hex" "0x2"
@@ -386,6 +423,16 @@ function xen_device_tree_editing()
         then
             dt_set "/chosen/domU$i" "max_maptrack_frames" "int" 
"${DOMU_MAPTRACK_FRAMES[i]}"
         fi
+        if test -n "${DOMU_CAPS[i]}"
+        then
+            local caps
+
+            if ! caps=$( parse_domain_caps ${DOMU_CAPS[i]} ) ; then
+                echo "Invalid DOMU_CAPS[$i] \"${DOMU_CAPS[i]}\""
+                cleanup_and_return_err
+            fi
+            dt_set "/chosen/domU$i" "capabilities" "int" "$caps"
+        fi
 
         if test -n "${DOMU_SHARED_MEM[i]}"
         then
-- 
2.48.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.