On 14/11/19 10:53, Marc-André Lureau wrote: >> include/qom/object.h | 1 + >> qom/object.c | 23 +++++++++++++++++++++-- >> vl.c | 10 +++------- >> 3 files changed, 25 insertions(+), 9 deletions(-) >> >> diff --git a/include/qom/object.h b/include/qom/object.h >> index 128d00c..230b18f 100644 >> --- a/include/qom/object.h >> +++ b/include/qom/object.h >> @@ -679,6 +679,7 @@ void object_apply_global_props(Object *obj, const >> GPtrArray *props, >> Error **errp); >> void object_set_machine_compat_props(GPtrArray *compat_props); >> void object_set_accelerator_compat_props(GPtrArray *compat_props); >> +void object_register_sugar_prop(const char *driver, const char *prop, const >> char *value); > > Or simply > > void object_add_global_prop(const char *typename, ...) ?
This is actually how I called it first, but I didn't like it because it's prioritized _below_ -global, and it's easy to confuse it with object_add_global_prop. >> /* >> * Set machine's global property defaults to @compat_props. >> @@ -445,7 +464,7 @@ void object_apply_compat_props(Object *obj) >> >> for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) { >> object_apply_global_props(obj, object_compat_props[i], >> - &error_abort); >> + i == 2 ? &error_fatal : &error_abort); > > Isn't error_abort() appropriate in all cases? Unfortunately not, because otherwise "-accel tcg,tb-size=foo" would crash. >> } >> } >> >> diff --git a/vl.c b/vl.c >> index 843b263..cb993dd 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -896,13 +896,9 @@ static void configure_rtc(QemuOpts *opts) >> value = qemu_opt_get(opts, "driftfix"); >> if (value) { >> if (!strcmp(value, "slew")) { >> - static GlobalProperty slew_lost_ticks = { >> - .driver = "mc146818rtc", >> - .property = "lost_tick_policy", >> - .value = "slew", >> - }; >> - >> - qdev_prop_register_global(&slew_lost_ticks); >> + object_register_sugar_prop("mc146818rtc", >> + "lost_tick_policy", >> + "slew"); > > Why do you convert this since it's a device? Not strictly necessary, but it's more compact and it more or less matches the usecase for this function. Paolo