qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH for-6.1] qemu-config: restore "machine" in qmp_query_command_


From: Paolo Bonzini
Subject: Re: [PATCH for-6.1] qemu-config: restore "machine" in qmp_query_command_line_options()
Date: Wed, 21 Jul 2021 18:46:05 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

On 21/07/21 17:10, Stefan Hajnoczi wrote:
Commit d8fb7d0969d5c32b3d1b9e20b63ec6c0abe80be4 ("vl: switch -M parsing
to keyval") stopped adding the "machine" QemuOptsList. This causes
"machine" options to not show up in QMP query-command-line-options
output. For example, libvirt cannot detect that kernel_irqchip support
is available.

Adjust the "machine" opts enumeration in
qmp_query_command_line_options() so that options are properly reported.

Fixes: d8fb7d0969d5 ("vl: switch -M parsing to keyval")
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
I'm not familiar with this code. Better solutions welcome!
---
  util/qemu-config.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/util/qemu-config.c b/util/qemu-config.c
index 84ee6dc4ea..52db5e743c 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -255,8 +255,6 @@ CommandLineOptionInfoList 
*qmp_query_command_line_options(bool has_option,
              info->option = g_strdup(vm_config_groups[i]->name);
              if (!strcmp("drive", vm_config_groups[i]->name)) {
                  info->parameters = get_drive_infolist();
-            } else if (!strcmp("machine", vm_config_groups[i]->name)) {
-                info->parameters = query_option_descs(machine_opts.desc);
              } else {
                  info->parameters =
                      query_option_descs(vm_config_groups[i]->desc);
@@ -265,6 +263,13 @@ CommandLineOptionInfoList 
*qmp_query_command_line_options(bool has_option,
          }
      }
+ if (!has_option || !strcmp(option, "machine")) {
+        info = g_malloc0(sizeof(*info));
+        info->option = g_strdup("machine");
+        info->parameters = query_option_descs(machine_opts.desc);
+        QAPI_LIST_PREPEND(conf_list, info);
+    }
+
      if (conf_list == NULL) {
          error_setg(errp, "invalid option name: %s", option);
      }


Given that there's an "if" either way, I guess it's easiest to do it this way. It may be even be possible (later) to build the info from the MachineClass properties instead.

Queued, thanks!

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]