From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51611) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YdJON-0004OF-EV for qemu-devel@nongnu.org; Wed, 01 Apr 2015 10:13:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YdJOK-0002mL-6r for qemu-devel@nongnu.org; Wed, 01 Apr 2015 10:13:15 -0400 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:36440) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YdJOJ-0002m8-LH for qemu-devel@nongnu.org; Wed, 01 Apr 2015 10:13:12 -0400 Received: by wixo5 with SMTP id o5so50979863wix.1 for ; Wed, 01 Apr 2015 07:13:11 -0700 (PDT) Message-ID: <551BFCF4.1040206@gmail.com> Date: Wed, 01 Apr 2015 17:13:08 +0300 From: Marcel Apfelbaum MIME-Version: 1.0 References: <1427897284-31473-1-git-send-email-marcel@redhat.com> In-Reply-To: <1427897284-31473-1-git-send-email-marcel@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH for-2.3] util/qemu-config" fix regression of qmp_query_command_line_options Reply-To: marcel@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Marcel Apfelbaum , qemu-devel@nongnu.org, akrowiak@linux.vnet.ibm.com Cc: pbonzini@redhat.com, armbru@redhat.com I noticed the typo in subject :) maybe the maintainer that will take it can fix this if no further work is necessary, of course. On 04/01/2015 05:08 PM, Marcel Apfelbaum wrote: > Commit 49d2e64 (machine: remove qemu_machine_opts global list) made > machine machine options specific to machine sub-type, leaving > the qemu_machine_opts desc array empty. Sadly this is the place > qmp_query_command_line_options is looking for supported options. > > As a fix for for 2.3 the machine_qemu_opts are restored only > for the scope of qemu-config, bringing together all machines > properties. We need to find a better fix for 2.4. > > Reported-by: Tony Krowiak Hi Tony, I'll appreciate if you check that it works now. I checked query-command-line-options and it returns the machine options for now. No further changes should be necessary, Thanks, Marcel > Signed-off-by: Marcel Apfelbaum > --- > > I don't like this approach, but I wouldn't want to loose the > 'options per machine type' feature. We'll find something better for 2.4/ > > util/qemu-config.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 108 insertions(+) > > diff --git a/util/qemu-config.c b/util/qemu-config.c > index f3463df..9e8edda 100644 > --- a/util/qemu-config.c > +++ b/util/qemu-config.c > @@ -6,6 +6,7 @@ > #include "hw/qdev.h" > #include "qapi/error.h" > #include "qmp-commands.h" > +#include "hw/i386/pc.h" > > static QemuOptsList *vm_config_groups[32]; > static QemuOptsList *drive_config_groups[4]; > @@ -148,6 +149,111 @@ static CommandLineParameterInfoList *get_drive_infolist(void) > return head; > } > > +/* restore machine options that are now machine's properties */ > +static QemuOptsList machine_opts = { > + .merge_lists = true, > + .head = QTAILQ_HEAD_INITIALIZER(machine_opts.head), > + .desc = { > + { > + .name = "type", > + .type = QEMU_OPT_STRING, > + .help = "emulated machine" > + },{ > + .name = "accel", > + .type = QEMU_OPT_STRING, > + .help = "accelerator list", > + },{ > + .name = "kernel_irqchip", > + .type = QEMU_OPT_BOOL, > + .help = "use KVM in-kernel irqchip", > + },{ > + .name = "kvm_shadow_mem", > + .type = QEMU_OPT_SIZE, > + .help = "KVM shadow MMU size", > + },{ > + .name = "kernel", > + .type = QEMU_OPT_STRING, > + .help = "Linux kernel image file", > + },{ > + .name = "initrd", > + .type = QEMU_OPT_STRING, > + .help = "Linux initial ramdisk file", > + },{ > + .name = "append", > + .type = QEMU_OPT_STRING, > + .help = "Linux kernel command line", > + },{ > + .name = "dtb", > + .type = QEMU_OPT_STRING, > + .help = "Linux kernel device tree file", > + },{ > + .name = "dumpdtb", > + .type = QEMU_OPT_STRING, > + .help = "Dump current dtb to a file and quit", > + },{ > + .name = "phandle_start", > + .type = QEMU_OPT_NUMBER, > + .help = "The first phandle ID we may generate dynamically", > + },{ > + .name = "dt_compatible", > + .type = QEMU_OPT_STRING, > + .help = "Overrides the \"compatible\" property of the dt root node", > + },{ > + .name = "dump-guest-core", > + .type = QEMU_OPT_BOOL, > + .help = "Include guest memory in a core dump", > + },{ > + .name = "mem-merge", > + .type = QEMU_OPT_BOOL, > + .help = "enable/disable memory merge support", > + },{ > + .name = "usb", > + .type = QEMU_OPT_BOOL, > + .help = "Set on/off to enable/disable usb", > + },{ > + .name = "firmware", > + .type = QEMU_OPT_STRING, > + .help = "firmware image", > + },{ > + .name = "kvm-type", > + .type = QEMU_OPT_STRING, > + .help = "Specifies the KVM virtualization mode (HV, PR)", > + },{ > + .name = PC_MACHINE_MAX_RAM_BELOW_4G, > + .type = QEMU_OPT_SIZE, > + .help = "maximum ram below the 4G boundary (32bit boundary)", > + },{ > + .name = PC_MACHINE_VMPORT, > + .type = QEMU_OPT_STRING, > + .help = "Enable vmport (pc & q35)", > + },{ > + .name = "iommu", > + .type = QEMU_OPT_BOOL, > + .help = "Set on/off to enable/disable Intel IOMMU (VT-d)", > + },{ > + .name = "secure", > + .type = QEMU_OPT_BOOL, > + .help = "Set on/off to enable/disable the ARM " > + "Security Extensions (TrustZone)", > + },{ > + .name = "suppress-vmdesc", > + .type = QEMU_OPT_BOOL, > + .help = "Set on to disable self-describing migration", > + },{ > + .name = "aes-key-wrap", > + .type = QEMU_OPT_BOOL, > + .help = "enable/disable AES key wrapping using the " > + "CPACF wrapping key", > + },{ > + .name = "dea-key-wrap", > + .type = QEMU_OPT_BOOL, > + .help = "enable/disable DEA key wrapping using the " > + "CPACF wrapping key", > + }, > + { /* End of list */ } > + } > +}; > + > CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option, > const char *option, > Error **errp) > @@ -162,6 +268,8 @@ 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); >