[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Failing property setters + hardwired devices + -global = a bad day
From: |
Eduardo Habkost |
Subject: |
Re: Failing property setters + hardwired devices + -global = a bad day |
Date: |
Wed, 29 Apr 2020 12:23:47 -0400 |
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
- Failing property setters + hardwired devices + -global = a bad day, Markus Armbruster, 2020/04/29
- Re: Failing property setters + hardwired devices + -global = a bad day, Paolo Bonzini, 2020/04/29
- Re: Failing property setters + hardwired devices + -global = a bad day,
Eduardo Habkost <=
- Re: Failing property setters + hardwired devices + -global = a bad day, Daniel P . Berrangé, 2020/04/29
- Re: Failing property setters + hardwired devices + -global = a bad day, Markus Armbruster, 2020/04/30
- Re: Failing property setters + hardwired devices + -global = a bad day, Peter Maydell, 2020/04/30
- Configuring onboard devices (was: Failing property setters + hardwired devices + -global = a bad day), Markus Armbruster, 2020/04/30
- Re: Configuring onboard devices (was: Failing property setters + hardwired devices + -global = a bad day), Mark Cave-Ayland, 2020/04/30
- Re: Configuring onboard devices, Markus Armbruster, 2020/04/30
- Re: Configuring onboard devices, Mark Cave-Ayland, 2020/04/30
- Re: Configuring onboard devices, Markus Armbruster, 2020/04/30
- Re: Configuring onboard devices, Mark Cave-Ayland, 2020/04/30
- Re: Configuring onboard devices (was: Failing property setters + hardwired devices + -global = a bad day), Daniel P . Berrangé, 2020/04/30