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

Re: [PATCH] tools/init-dom0less: Fix cpus > 1 and xenstore entries


  • To: "Orzel, Michal" <michal.orzel@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jason Andryuk <jason.andryuk@xxxxxxx>
  • Date: Thu, 6 Mar 2025 09:47:51 -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=1heS64KgZ3r02jYamtEMX/Puq01EbLbBLG4OpDXOigY=; b=Y00MNGhu80DIVvgesQSI7WvmopQNOku3ExyD08r085voeRAWVYnurNcO6oaxEg84NFWm2pe0XchqPu4Vucsw6kboNl/CET8HBbxEKdrrY/tTD2ry9yIxShRsLBvIQbObaaVSRmisz3NZIG9iV5Yh4zuRSNtB00RMhoTkmyFAy5EziPUUsqxvDInuXh1SPt2JEHAYRybSeHM4iwdrcU/AGnuBhaJBO1epPhsjSMllY5N98XpTnxfbAQ0RidV8qatI91uv5JYbE+5O7+fjJhaYiGPkIHGAjcoUkOjH+Dn98ZEbVjI7x8921YG1/c8tcn5277eIsHO0fhjl/NbCkMqtCg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mIq/nyWOEztUz2mFyxpzwbmjrUg27dlz5Vid32FnlLOkFsY1HsGwZVzxz8f3EWviiAd6TkznMmcGT36SlcXOIaTkwnQMxAK9WLRdd/eU9STxGhPDxQqv79WN6H0SOCcwdNEcTNIJX1vhSdoEDYP1WdgZqV4iU3dp5N6jhrOZjsBp+g5FWZR9SnsY0vIgQNm3ECtm786e8zObVrFbAbXRcjQdn+xHle23E3OsZHq5Xejvq3H496TuFzRjZ+FvUhJyN4Fb86BRHDABp0fPIg8i5fnzcUFoMuaP+2Z01OtyEu3z8l/cPgZxNnIZe4BWtk/vECyaIGthd42nJ/WYpnQo0A==
  • Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx>
  • Delivery-date: Thu, 06 Mar 2025 14:48:09 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 2025-03-06 05:29, Orzel, Michal wrote:


On 05/03/2025 22:58, Jason Andryuk wrote:


The trailing / in the path is incorrect and generates an error when
writing to xenstore:
Checking domid: 1
Init dom0less domain: 1
init-dom0less: writing to xenstore: No error information

init-dom0less exits without finishing initialization.

vcpu_max_id is an inclusive value, so it should be included in the
loop's range to include all vcpus.  Without this, no xenstore entries
are created for a 1 vcpu domain.

Finally, use vcpu_online, the count of online vcpus, to determine online
vs. offline.  info->cpupool is a cpupool id and not a bitmask.

Fixes: ec53e0c4ea ("tools: add example application to initialize dom0less PV 
drivers")
Signed-off-by: Jason Andryuk <jason.andryuk@xxxxxxx>
---
  tools/helpers/init-dom0less.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/helpers/init-dom0less.c b/tools/helpers/init-dom0less.c
index 17579fe2e8..c569a890a0 100644
--- a/tools/helpers/init-dom0less.c
+++ b/tools/helpers/init-dom0less.c
@@ -182,13 +182,13 @@ retry_transaction:
      if (!do_xs_write_dom(xsh, t, domid, "vm", vm_val_str)) goto err;
      if (!do_xs_write_dom(xsh, t, domid, "name", dom_name_str)) goto err;
      if (!do_xs_write_dom(xsh, t, domid, "cpu", "")) goto err;
-    for (i = 0; i < info->vcpu_max_id; i++) {
-        rc = snprintf(cpu_str, STR_MAX_LENGTH, "cpu/%u/availability/", i);
+    for (i = 0; i <= info->vcpu_max_id; i++) {
+        rc = snprintf(cpu_str, STR_MAX_LENGTH, "cpu/%u/availability", i);
Up until this point:
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>

That said...

          if (rc < 0 || rc >= STR_MAX_LENGTH)
              goto err;
          rc = -EIO;
          if (!do_xs_write_dom(xsh, t, domid, cpu_str,
-                             (info->cpupool & (1 << i)) ? "online" : 
"offline"))
+                             i < info->vcpu_online ? "online" : "offline"))
I struggle with this one. Let's say that a dom0less domU starts with 4 vCPUs and
later on (before executing init-dom0less from dom0), decides to kill it's 2nd
vCPU. So domU is running vCPU{0,2,3}. With your patch, after executing the
script, the 4th vCPU will have its availability set to offline and domU will get
notified to kill its 4th vCPU. That does not sound right...

You are correct.

With xl create, cpus 0..vcpus-1 are marked online and vcpus...maxvcpus-1 are marked offline. I was trying to match that. To online or offline cpus, xl vcpu-set keeps them densely packed, 0..$m.

I think libxl_list_vcpu() should give the needed information to set these correctly. I'll try that.

Thanks for taking a look.

-Jason



 


Rackspace

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