Steve Sistare <steven.sist...@oracle.com> writes: > Make all global and compat properties available before the first objects > are created. Set accelerator compatibility properties in > configure_accelerators, when the accelerator is chosen, and call > configure_accelerators earlier. Set machine options earlier. > > Signed-off-by: Steve Sistare <steven.sist...@oracle.com> > --- > accel/accel-system.c | 2 -- > system/vl.c | 34 ++++++++++++++++++---------------- > 2 files changed, 18 insertions(+), 18 deletions(-) > > diff --git a/accel/accel-system.c b/accel/accel-system.c > index f6c947d..c8aeae4 100644 > --- a/accel/accel-system.c > +++ b/accel/accel-system.c > @@ -41,8 +41,6 @@ int accel_init_machine(AccelState *accel, MachineState *ms) > ms->accelerator = NULL; > *(acc->allowed) = false; > object_unref(OBJECT(accel)); > - } else { > - object_set_accelerator_compat_props(acc->compat_props); > } > return ret; > } > diff --git a/system/vl.c b/system/vl.c > index b94a6b9..bca2292 100644 > --- a/system/vl.c > +++ b/system/vl.c > @@ -2346,6 +2346,7 @@ static int do_configure_accelerator(void *opaque, > QemuOpts *opts, Error **errp) > goto bad; > } > > + object_set_accelerator_compat_props(ac->compat_props); > acs->accel = accel; > return 1; > > @@ -3728,29 +3729,14 @@ void qemu_init(int argc, char **argv) > parse_memory_options(); > > qemu_create_machine(machine_opts_dict); > - > - suspend_mux_open(); > - > - qemu_disable_default_devices(); > - qemu_setup_display(); > - qemu_create_default_devices(); > - qemu_create_early_backends(); > - > qemu_apply_legacy_machine_options(machine_opts_dict); > qemu_apply_machine_options(machine_opts_dict); > qobject_unref(machine_opts_dict); > - phase_advance(PHASE_MACHINE_CREATED); > > - /* > - * Note: uses machine properties such as kernel-irqchip, must run > - * after qemu_apply_machine_options. > - */ > accel = configure_accelerators(argv[0]); > - create_accelerator(accel); > - phase_advance(PHASE_ACCEL_CREATED); > > /* > - * Beware, QOM objects created before this point miss global and > + * QOM objects created after this point see all global and > * compat properties. > * > * Global properties get set up by qdev_prop_register_global(), > @@ -3765,6 +3751,22 @@ void qemu_init(int argc, char **argv) > * called from do_configure_accelerator(). > */ > > + suspend_mux_open(); > + > + qemu_disable_default_devices(); > + qemu_setup_display(); > + qemu_create_default_devices(); > + qemu_create_early_backends(); > + > + phase_advance(PHASE_MACHINE_CREATED); > + > + /* > + * Note: uses machine properties such as kernel-irqchip, must run > + * after qemu_apply_machine_options. > + */ > + create_accelerator(accel); > + phase_advance(PHASE_ACCEL_CREATED); > + > machine_class = MACHINE_GET_CLASS(current_machine); > if (!qtest_enabled() && machine_class->deprecation_reason) { > warn_report("Machine type '%s' is deprecated: %s",
Hi Steve, after this commit: $ QTEST_QEMU_BINARY=./qemu-system-aarch64 ./tests/qtest/xlnx-can-test # random seed: R02Saf9b44f2d88dd417052905692ee79981 1..5 # Start of aarch64 tests # Start of net tests # Start of can tests # starting QEMU: exec ./qemu-system-aarch64 -qtest unix:/tmp/qtest-2396.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-2396.qmp,id=char0 -mon chardev=char0,mode=control -display none -audio none -machine xlnx-zcu102 -object can-bus,id=canbus -machine canbus0=canbus -machine canbus1=canbus -accel qtest qemu-system-aarch64: Device 'canbus' not found I tried briefly to figure out what the issue is, but I don't really understand the dependencies involved. Hope you can tell us.