On 10 December 2014 at 23:05, Marcel Apfelbaum <marce...@redhat.com> wrote:
> On Wed, 2014-12-10 at 16:59 -0600, Greg Bellows wrote: > > > > > > On 10 December 2014 at 07:19, Marcel Apfelbaum <marce...@redhat.com> > > wrote: > > QEMU has support for options per machine, keeping > > a global list of options is no longer necessary. > > > > Signed-off-by: Marcel Apfelbaum <marce...@redhat.com> > > --- > > hw/core/machine.c | 45 +++++++++++++++++++++++++++++ > > hw/i386/pc.c | 7 +++++ > > hw/ppc/spapr.c | 3 ++ > > vl.c | 84 > > ++++--------------------------------------------------- > > 4 files changed, 61 insertions(+), 78 deletions(-) > > > > diff --git a/hw/core/machine.c b/hw/core/machine.c > > index 19d3e3a..a0ae5f9 100644 > > --- a/hw/core/machine.c > > +++ b/hw/core/machine.c > > @@ -291,48 +291,93 @@ static void machine_initfn(Object *obj) > > > > object_property_add_str(obj, "accel", > > machine_get_accel, > > machine_set_accel, NULL); > > + object_property_set_description(obj, "accel", > > + "Accelerator list", > > + NULL); > > > Hi Greg, > Thank you for your review! > > > > > If this is a common combination of calls would it make sense to create > > a wrapper routine that just does both of these steps together for > > readability and convenience? Maybe something like: > > > > > > object_property_add_str_with_desc(obj, "accel", "Accelerator > > list" > > machine_get_accel, > > machine_set_accel, > > NULL); > I really thought about it, but one wrapper would not be enough, > we need also one for object_property_add_bool, object_property_add and so > on. > The code needed would be twice as this one and for the moment this > series is the only reason for that, maybe is not enough. > I'm fine either way, just thought it may cut down on the repetitiveness. > > If you or anyone else things we should still go for it, I'll be glad to. > > > > > object_property_add_bool(obj, "kernel-irqchip", > > machine_get_kernel_irqchip, > > machine_set_kernel_irqchip, > > NULL); > > + object_property_set_description(obj, "kernel-irqchip", > > + "Use KVM in-kernel > > irqchip", > > + NULL); > > object_property_add(obj, "kvm-shadow-mem", "int", > > machine_get_kvm_shadow_mem, > > machine_set_kvm_shadow_mem, > > NULL, NULL, NULL); > > + object_property_set_description(obj, "kvm-shadow-mem", > > + "KVM shadow MMU size", > > + NULL); > > object_property_add_str(obj, "kernel", > > machine_get_kernel, > > machine_set_kernel, NULL); > > + object_property_set_description(obj, "kernel", > > + "Linux kernel image > > file", > > + NULL); > > object_property_add_str(obj, "initrd", > > machine_get_initrd, > > machine_set_initrd, NULL); > > + object_property_set_description(obj, "initrd", > > + "Linux initial ramdisk > > file", > > + NULL); > > object_property_add_str(obj, "append", > > machine_get_append, > > machine_set_append, NULL); > > + object_property_set_description(obj, "append", > > + "Linux kernel command > > line", > > + NULL); > > object_property_add_str(obj, "dtb", > > machine_get_dtb, machine_set_dtb, > > NULL); > > + object_property_set_description(obj, "dtb", > > + "Linux kernel device tree > > file", > > + NULL); > > object_property_add_str(obj, "dumpdtb", > > machine_get_dumpdtb, > > machine_set_dumpdtb, NULL); > > + object_property_set_description(obj, "dumpdtb", > > + "Dump current dtb to a > > file and quit", > > + NULL); > > object_property_add(obj, "phandle-start", "int", > > machine_get_phandle_start, > > machine_set_phandle_start, > > NULL, NULL, NULL); > > + object_property_set_description(obj, "phandle-start", > > + "The first phandle ID we > > may generate dynamically", > > + NULL); > > object_property_add_str(obj, "dt-compatible", > > machine_get_dt_compatible, > > machine_set_dt_compatible, > > NULL); > > + object_property_set_description(obj, "dt-compatible", > > + "Overrides the > > \"compatible\" property of the dt root node", > > + NULL); > > object_property_add_bool(obj, "dump-guest-core", > > machine_get_dump_guest_core, > > machine_set_dump_guest_core, > > NULL); > > + object_property_set_description(obj, "dump-guest-core", > > + "Include guest memory in > > a core dump", > > > > > > FWIW, there is an extra space in the desc string that can probably be > > corrected. > Thanks! Copied exactly from the original :) > I'll correct it if I send another version. > Sounds good. > > > > > + NULL); > > object_property_add_bool(obj, "mem-merge", > > machine_get_mem_merge, > > machine_set_mem_merge, NULL); > > + object_property_set_description(obj, "mem-merge", > > + "Enable/disable memory > > merge support", > > + NULL); > > object_property_add_bool(obj, "usb", > > machine_get_usb, > > machine_set_usb, NULL); > > + object_property_set_description(obj, "usb", > > + "Set on/off to > > enable/disable usb", > > + NULL); > > object_property_add_str(obj, "firmware", > > machine_get_firmware, > > machine_set_firmware, NULL); > > + object_property_set_description(obj, "firmware", > > + "Firmware image", > > + NULL); > > object_property_add_bool(obj, "iommu", > > machine_get_iommu, > > machine_set_iommu, NULL); > > + object_property_set_description(obj, "iommu", > > + "Set on/off to > > enable/disable Intel IOMMU (VT-d)", > > + NULL); > > > > /* Register notifier when init is done for sysbus sanity > > checks */ > > ms->sysbus_notifier.notify = machine_init_notify; > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > > index f31d55e..01ddd70 100644 > > --- a/hw/i386/pc.c > > +++ b/hw/i386/pc.c > > @@ -1804,17 +1804,24 @@ static void pc_machine_initfn(Object > > *obj) > > object_property_add(obj, PC_MACHINE_MEMHP_REGION_SIZE, > > "int", > > > > pc_machine_get_hotplug_memory_region_size, > > NULL, NULL, NULL, NULL); > > + > > pcms->max_ram_below_4g = 1ULL << 32; /* 4G */ > > object_property_add(obj, PC_MACHINE_MAX_RAM_BELOW_4G, > > "size", > > pc_machine_get_max_ram_below_4g, > > pc_machine_set_max_ram_below_4g, > > NULL, NULL, NULL); > > + object_property_set_description(obj, > > PC_MACHINE_MAX_RAM_BELOW_4G, > > + "Maximum ram below the 4G > > boundary (32bit boundary)", > > + NULL); > > > > pcms->vmport = ON_OFF_AUTO_AUTO; > > object_property_add(obj, PC_MACHINE_VMPORT, "OnOffAuto", > > pc_machine_get_vmport, > > pc_machine_set_vmport, > > NULL, NULL, NULL); > > + object_property_set_description(obj, PC_MACHINE_VMPORT, > > + "Enable vmport (pc & > > q35)", > > + NULL); > > > > pcms->enforce_aligned_dimm = true; > > object_property_add_bool(obj, > > PC_MACHINE_ENFORCE_ALIGNED_DIMM, > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > index 30de25d..08401e0 100644 > > --- a/hw/ppc/spapr.c > > +++ b/hw/ppc/spapr.c > > @@ -1655,6 +1655,9 @@ static void spapr_machine_initfn(Object > > *obj) > > { > > object_property_add_str(obj, "kvm-type", > > spapr_get_kvm_type, > > spapr_set_kvm_type, NULL); > > + object_property_set_description(obj, "kvm-type", > > + "Specifies the KVM > > virtualization mode (HV, PR)", > > + NULL); > > } > > > > static void ppc_cpu_do_nmi_on_cpu(void *arg) > > diff --git a/vl.c b/vl.c > > index eb89d62..80d30dd 100644 > > --- a/vl.c > > +++ b/vl.c > > @@ -311,84 +311,12 @@ static QemuOptsList qemu_machine_opts = > > { > > .merge_lists = true, > > .head = QTAILQ_HEAD_INITIALIZER(qemu_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)", > > - }, > > - { /* End of list */ } > > + /* > > + * no elements => accept any > > + * sanity checking will happen later > > + * when setting machine properties > > + */ > > + { } > > }, > > }; > > > > -- > > 1.9.3 > > > > > > > > Otherwise... > > > > > > Reviewed-by: Greg Bellows <greg.bell...@linaro.org> > Appreciated. > > Thanks, > Marcel > > > >