On Wed, Apr 29, 2020 at 05:39:20PM +0200, Paolo Bonzini wrote: > On 29/04/20 17:28, Markus Armbruster wrote: > > When an object gets created, its memory is zeroed, and then any class > > properties with an ->init() are initialized with > > > > obj->init(obj, prop); > > > > We have just one ->init(): > > > > void object_property_init_defval(Object *obj, ObjectProperty *prop) > > > > It initializes from ->defval using ->set(). > > > > Aside: feels overengineered, but let's move on. > > > > For TYPE_DEVICE objects, "static" properties get initialized the same. > > > > Aside: if I know what "static" means, I'll be hanged. > > Originally these were the only properties that were part of the class > rather than the object (so, not dynamic --> static). > > > I'd love to deprecate -global wholesale, but we can't as long as we > > don't have better means to configure onboard devices. Can we deprecate > > its use with backend properties at least? > > I wouldn't mind deprecating -global wholesale, leaving the global/compat > props code only for internal usage.
I would absolutely love to get rid of -global, but we need to provide an alternative for users that rely on it. libvirt, for example, has at least 15 virCommandAddArg*(..., "-global", ...) calls in src/qemu/qemu_command.c: src/qemu/qemu_command.c:2344: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-2345- virCommandAddArgFormat(cmd, "isa-fdc.%s", backendStr); src/qemu/qemu_command.c-2346- } src/qemu/qemu_command.c-2347- src/qemu/qemu_command.c-2348- if (bootindexStr) { src/qemu/qemu_command.c:2349: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-2350- virCommandAddArgFormat(cmd, "isa-fdc.%s", bootindexStr); src/qemu/qemu_command.c-2351- } src/qemu/qemu_command.c-2352- } else { src/qemu/qemu_command.c-2353- virBufferStrcat(&fdc_opts, backendStr, ",", NULL); -- src/qemu/qemu_command.c:4174: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4175- optstr = qemuBuildNVRAMDevStr(def->nvram); src/qemu/qemu_command.c-4176- if (!optstr) src/qemu/qemu_command.c-4177- return -1; src/qemu/qemu_command.c-4178- -- src/qemu/qemu_command.c:4568: * --global option and for that we need to specify the device src/qemu/qemu_command.c-4569- * name the same as for --device option and for that we need to src/qemu/qemu_command.c-4570- * use 'qemuDeviceVideo'. src/qemu/qemu_command.c-4571- * src/qemu/qemu_command.c-4572- * See 'Graphics Devices' section in docs/qdev-device-use.txt in -- src/qemu/qemu_command.c:4586: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4587- virCommandAddArgFormat(cmd, "%s.ram_size=%u", src/qemu/qemu_command.c-4588- dev, ram * 1024); src/qemu/qemu_command.c-4589- } src/qemu/qemu_command.c-4590- if (vram) { src/qemu/qemu_command.c:4591: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4592- virCommandAddArgFormat(cmd, "%s.vram_size=%u", src/qemu/qemu_command.c-4593- dev, vram * 1024); src/qemu/qemu_command.c-4594- } src/qemu/qemu_command.c-4595- if (vram64 && -- src/qemu/qemu_command.c:4597: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4598- virCommandAddArgFormat(cmd, "%s.vram64_size_mb=%u", src/qemu/qemu_command.c-4599- dev, vram64 / 1024); src/qemu/qemu_command.c-4600- } src/qemu/qemu_command.c-4601- if (vgamem && -- src/qemu/qemu_command.c:4603: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4604- virCommandAddArgFormat(cmd, "%s.vgamem_mb=%u", src/qemu/qemu_command.c-4605- dev, vgamem / 1024); src/qemu/qemu_command.c-4606- } src/qemu/qemu_command.c-4607- if (heads && -- src/qemu/qemu_command.c:4609: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4610- virCommandAddArgFormat(cmd, "%s.max_outputs=%u", src/qemu/qemu_command.c-4611- dev, heads); src/qemu/qemu_command.c-4612- } src/qemu/qemu_command.c-4613- } -- src/qemu/qemu_command.c:4622: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-4623- virCommandAddArgFormat(cmd, "%s.vgamem_mb=%u", src/qemu/qemu_command.c-4624- dev, vram / 1024); src/qemu/qemu_command.c-4625- } src/qemu/qemu_command.c-4626- -- src/qemu/qemu_command.c:6278: virCommandAddArgList(cmd, "-global", src/qemu/qemu_command.c-6279- "kvm-pit.lost_tick_policy=delay", NULL); src/qemu/qemu_command.c-6280- break; src/qemu/qemu_command.c-6281- case VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP: src/qemu/qemu_command.c-6282- /* Do nothing - qemuDomainDefValidateClockTimers handled -- src/qemu/qemu_command.c:6287: virCommandAddArgList(cmd, "-global", src/qemu/qemu_command.c-6288- "kvm-pit.lost_tick_policy=discard", NULL); src/qemu/qemu_command.c-6289- break; src/qemu/qemu_command.c-6290- case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE: src/qemu/qemu_command.c-6291- /* no way to support this mode for pit in qemu */ -- src/qemu/qemu_command.c:6346: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-6347- virCommandAddArgFormat(cmd, "%s.disable_s3=%d", src/qemu/qemu_command.c-6348- pm_object, def->pm.s3 == VIR_TRISTATE_BOOL_NO); src/qemu/qemu_command.c-6349- } src/qemu/qemu_command.c-6350- -- src/qemu/qemu_command.c:6358: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-6359- virCommandAddArgFormat(cmd, "%s.disable_s4=%d", src/qemu/qemu_command.c-6360- pm_object, def->pm.s4 == VIR_TRISTATE_BOOL_NO); src/qemu/qemu_command.c-6361- } src/qemu/qemu_command.c-6362- -- src/qemu/qemu_command.c:6508: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-6509- virCommandAddArgFormat(cmd, "%s.pci-hole64-size=%luK", hoststr, src/qemu/qemu_command.c-6510- cont->opts.pciopts.pcihole64size); src/qemu/qemu_command.c-6511- } src/qemu/qemu_command.c-6512- } -- src/qemu/qemu_command.c:7191: virCommandAddArg(cmd, "-global"); src/qemu/qemu_command.c-7192- src/qemu/qemu_command.c-7193- /* PostParse callback guarantees that the size is divisible by 1 MiB */ src/qemu/qemu_command.c-7194- virCommandAddArgFormat(cmd, "mch.extended-tseg-mbytes=%llu", src/qemu/qemu_command.c-7195- def->tseg_size >> 20); -- src/qemu/qemu_command.c:9109: "-global", src/qemu/qemu_command.c-9110- "driver=cfi.pflash01,property=secure,value=on", src/qemu/qemu_command.c-9111- NULL); src/qemu/qemu_command.c-9112- } src/qemu/qemu_command.c-9113- -- Eduardo