On Fri, Apr 09, 2021 at 06:03:39PM +0200, Greg Kurz wrote: > Calling qdev_get_machine() from a QOM instance_init function is > fragile because we can't be sure the machine object actually > exists. And this happens to break when passing ",help" on the > command line to get the list of properties for a CPU core > device types : > > $ ./qemu-system-ppc64 -device power8_v2.0-spapr-cpu-core,help > qemu-system-ppc64: ../../hw/core/machine.c:1290: > qdev_get_machine: Assertion `machine != NULL' failed. > Aborted (core dumped) > > This used to work before QEMU 5.0, but commit 3df261b6676b > unwillingly introduced a subtle regression : the above command > line needs to create an instance but the instance_init function > of the base class calls qdev_get_machine() before > qemu_create_machine() has been called, which is a programming bug. > > Use current_machine instead. It is okay to skip the setting of > nr_thread in this case since only its type is displayed. > > Reported-by: Thomas Huth <th...@redhat.com> > Fixes: 3df261b6676b ("softmmu/vl.c: Handle '-cpu help' and '-device help' > before 'no default machine'") > Cc: peter.mayd...@linaro.org > Signed-off-by: Greg Kurz <gr...@kaod.org>
Thanks! I'm queueing this one (without patch 1/2) for QEMU 6.0. -- Eduardo