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

Re: [XEN][RFC PATCH v4 16/16] tools/xl: Add new xl command overlay for device tree overlay support


  • To: Anthony PERARD <anthony.perard@xxxxxxxxxx>
  • From: Vikram Garhwal <vikram.garhwal@xxxxxxx>
  • Date: Wed, 1 Feb 2023 09:24:01 -0800
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=OexwS3EpqzFx25dS57WVA010nSmNvsdKxI61GuOTzQg=; b=InrT+1M84HNstYAFzufkW1F9RsdX+R2MiHuBR4Z8nRzz010QmR6RMpzfa34O7B+ylE/YCei/xq3FxOj+OZsRz1Wovf4aCJ47/S7jRzFKUdvJVzlTTnXlA/6zwubsrQqxjWNxCFpjczCNGfOpsJPOps+eJi8ML8GEgB1BRIyANmQWbDuS7ULyAoWwTUyLcei/vwFD38Cs/d8ciarC+P8bhE7AwAfySNMifjFJBKJXjNzpZuE3/Q88z4FHHhAh5R6JM8myyyN+jH7fsTIpacDFAeHFE+gU2q4M/JBoLrSFtcUqUd9S0EmjtjsUeHGHT8e8eTrGkm5mfNlXREL6dZfl6Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eGSW8OWujuZuGjZcsqsXLG0eUR/hLu8bvGEbQN/Buo+/mrNMXVTkdM1dZbmtg6s1zOqEBV6iO4XCuRmrCxNkGGiNhl5tILGdwsmbKVY0Mjo4sj9Z9ovzMUg8MrNDWvOlg+5eRwsw8pSGVDlgMu4fj/giElSGrMrLP2vjxYpF9mLRjUPxKejY6xkBU4s4aK31Qc48msfTO+yBuAiyq5+DX+WS8lvwzZF+RcV21AmBsMVMmznKs26F0BTzxUkgt5Uxv0xS8mn94KbwvVN1cs58Hut7g58mBapVUVpWlNSlDRwFlMxCTHrDD6srNkqSB9VZRLeSmooOeUQYywqouqQyWQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx, sstabellini@xxxxxxxxxx, julien@xxxxxxx, Luca.Fancellu@xxxxxxx, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Wed, 01 Feb 2023 17:24:21 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi Anthony,

On 12/9/22 9:55 AM, Anthony PERARD wrote:
On Tue, Dec 06, 2022 at 10:18:15PM -0800, Vikram Garhwal wrote:
diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c
index 35182ca196..868364c58d 100644
--- a/tools/xl/xl_cmdtable.c
+++ b/tools/xl/xl_cmdtable.c
@@ -630,6 +630,12 @@ const struct cmd_spec cmd_table[] = {
        "Issue a qemu monitor command to the device model of a domain",
        "<Domain> <Command>",
      },
+    { "dt_overlay",
Command with multiple words are using '-' instead of '_', could you
rename the command to "dt-overlay"?
understood.

+      &main_dt_overlay, 0, 1,
+      "Add/Remove a device tree overlay",
+      "add/remove <.dtbo>"
+      "-h print this help\n"
+    },
  };
const int cmdtable_len = ARRAY_SIZE(cmd_table);
diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c
index 5518c78dc6..b5f04e2741 100644
--- a/tools/xl/xl_vmcontrol.c
+++ b/tools/xl/xl_vmcontrol.c
@@ -1265,6 +1265,54 @@ int main_create(int argc, char **argv)
      return 0;
  }
+int main_dt_overlay(int argc, char **argv)
+{
+    const char *overlay_ops = NULL;
+    const char *overlay_config_file = NULL;
+    void *overlay_dtb = NULL;
+    int rc;
+    uint8_t op;
+    int overlay_dtb_size = 0;
+    const int overlay_add_op = 1;
+    const int overlay_remove_op = 2;
+
+    if (argc < 2) {
+        help("dt_overlay");
+        return EXIT_FAILURE;
+    }
+
+    overlay_ops = argv[1];
+    overlay_config_file = argv[2];
+
+    if (strcmp(overlay_ops, "add") == 0)
+        op = overlay_add_op;
+    else if (strcmp(overlay_ops, "remove") == 0)
+        op = overlay_remove_op;
+    else {
+        fprintf(stderr, "Invalid dt overlay operation\n");
+        return ERROR_FAIL;
ERROR_FAIL isn't really a value to be used when exiting the programme,
it's value is -3. It's from libxl API.

Instead, could you return EXIT_FAILURE?
Will address this in next version.
+    }
+
+    if (overlay_config_file) {
+        rc = libxl_read_file_contents(ctx, overlay_config_file,
+                                      &overlay_dtb, &overlay_dtb_size);
+
+        if (rc) {
+            fprintf(stderr, "failed to read the overlay device tree file %s\n",
+                    overlay_config_file);
+            free(overlay_dtb);
+            return ERROR_FAIL;
+        }
+    } else {
+        fprintf(stderr, "overlay dtbo file not provided\n");
+        return ERROR_FAIL;
+    }
+
+    rc = libxl_dt_overlay(ctx, overlay_dtb, overlay_dtb_size, op);
Value returned by libxl_*() are going to be negative when there's an
error, so not something to be return by main(). Could you check if
there's an error and return EXIT_FAILURE instead?
Okay.
+    free(overlay_dtb);
+    return rc;
+}
Thanks,




 


Rackspace

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