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

Re: [PATCH 07/15] x86/hyperlaunch: initial support for hyperlaunch device tree


  • To: Jason Andryuk <jason.andryuk@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: "Daniel P. Smith" <dpsmith@xxxxxxxxxxxxxxxxxxxx>
  • Date: Wed, 11 Dec 2024 07:49:43 -0500
  • Arc-authentication-results: i=1; mx.zohomail.com; dkim=pass header.i=apertussolutions.com; spf=pass smtp.mailfrom=dpsmith@xxxxxxxxxxxxxxxxxxxx; dmarc=pass header.from=<dpsmith@xxxxxxxxxxxxxxxxxxxx>
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1733921387; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=kK0++IHAxwDlZnYWDMNx2hSGO3o1dKumlrnPUHek3ZM=; b=L2TresWJl26OzM+AkMB2qc0E/1A15AsRL8OY7qKHv7TRKsJNko8MnjWdUj+28RM1FEPwHyI9/88+jj1Xuvqaa1Q0yvhwHB0XVyTc70nDfye9a+l90W8X56PWSYbcIuJs7rfFsBC/19uD9flXK060T04JZW28MdxO7n+gYnKqEKE=
  • Arc-seal: i=1; a=rsa-sha256; t=1733921387; cv=none; d=zohomail.com; s=zohoarc; b=QmGQxh8A+hpECqzG4Rgrp+hLqIvAtC+hCt+skPtGEOVzCYrNpL4xKVMdtYhRQ5oxEiSvmItsoyI8lmFYenPciaitH4ert1LchoM2aCGvQFentuNQOIjwSl3OcoZPU2GGsrIqwHp6U6kjM5whneDR8N68RTwIWv3hrKm0drudYvc=
  • Cc: christopher.w.clark@xxxxxxxxx, stefano.stabellini@xxxxxxx, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Wed, 11 Dec 2024 12:50:12 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 11/25/24 15:11, Jason Andryuk wrote:
On 2024-11-23 13:20, Daniel P. Smith wrote:
Add the ability to detect both a formal hyperlaunch device tree or a dom0less device tree. If the hyperlaunch device tree is found, then count the number of
domain entries, reporting if more than one is found.

Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
---
  xen/arch/x86/domain_builder/core.c  | 14 +++++++
  xen/arch/x86/domain_builder/fdt.c   | 64 ++++++++++++++++++++++++++++-
  xen/arch/x86/domain_builder/fdt.h   |  5 +++
  xen/arch/x86/include/asm/bootinfo.h |  1 +
  4 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/domain_builder/core.c b/xen/arch/x86/ domain_builder/core.c
index 211359895d84..a80f3711c306 100644
--- a/xen/arch/x86/domain_builder/core.c
+++ b/xen/arch/x86/domain_builder/core.c
@@ -40,7 +40,21 @@ void __init builder_init(struct boot_info *bi)
                     ret);
              bi->hyperlaunch_enabled = false;
          }
+    }
+
+    if ( bi->hyperlaunch_enabled )
+    {
+        int ret;
+
+        printk(XENLOG_INFO "Hyperlauch configuration:\n");

Hyperlaunch

Ack.

+        if ( (ret = walk_hyperlaunch_fdt(bi)) < 0 )
+        {
+            printk(XENLOG_INFO "  walk of device tree failed (%d)\n", ret);
+            bi->hyperlaunch_enabled = false;
+            return;
+        }
+        printk(XENLOG_INFO "  Number of domains: %d\n", bi->nr_domains);
      }
  }
diff --git a/xen/arch/x86/domain_builder/fdt.c b/xen/arch/x86/ domain_builder/fdt.c
index 3f9dda8c34c3..ff1ba58b6907 100644
--- a/xen/arch/x86/domain_builder/fdt.c
+++ b/xen/arch/x86/domain_builder/fdt.c

+int __init walk_hyperlaunch_fdt(struct boot_info *bi)
+{
+    int ret = 0, hv_node, node;
+    void *fdt = bootstrap_map_bm(&bi->mods[HYPERLAUNCH_MODULE_IDX]);
+
+    if ( unlikely(!fdt) )
+        return -EINVAL;
+
+    hv_node = find_hyperlaunch_node(fdt);
+    if ( hv_node < 0 )
+    {
+        ret = hv_node;
+        goto err_out;
+    }
+
+    fdt_for_each_subnode(node, fdt, hv_node)
+    {
+        ret = fdt_node_check_compatible(fdt, node, "xen,domain");
+        if ( ret == 0 )
+            bi->nr_domains++;
+    }
+
+    /* Until multi-domain construction is added, throw an error */
+    if ( !bi->nr_domains || bi->nr_domains > 1 )
+        printk(XENLOG_ERR "Hyperlaunch only supports dom0 construction\n");

You continue execution - is that intended?  It'll take the next module as the kernel and try to boot?  Would you rather panic?

Yes, it was intended, and as of this commit, it will use the next module as the kernel. That is the boot convention at this point. In this scenario, the system was given a valid HL device tree that happen to have multiple domains defined in it. At this point in the series, a domain definition literally has zero effect on the boot process, so there is no reason to panic.

v/r,
dps



 


Rackspace

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