On Thu, Apr 24, 2025 at 01:51:55PM +0800, Xiaoyao Li wrote: > Date: Thu, 24 Apr 2025 13:51:55 +0800 > From: Xiaoyao Li <xiaoyao...@intel.com> > Subject: Re: [PATCH v8 31/55] i386/cpu: introduce > x86_confidential_guest_cpu_instance_init() > > Hi Paolo, > > On 4/1/2025 9:01 PM, Xiaoyao Li wrote: > ... > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > > index add6430f7edd..5c69d1489365 100644 > > --- a/target/i386/cpu.c > > +++ b/target/i386/cpu.c > > @@ -36,6 +36,7 @@ > > #include "hw/qdev-properties.h" > > #include "hw/i386/topology.h" > > #ifndef CONFIG_USER_ONLY > > +#include "confidential-guest.h" > > #include "system/reset.h" > > #include "qapi/qapi-commands-machine-target.h" > > #include "exec/address-spaces.h" > > @@ -8504,6 +8505,15 @@ static void x86_cpu_post_initfn(Object *obj) > > } > > accel_cpu_instance_init(CPU(obj)); > > + > > +#ifndef CONFIG_USER_ONLY > > + MachineState *ms = MACHINE(object_dynamic_cast(qdev_get_machine(), > > + TYPE_MACHINE)); > > It leads to > > qemu-system-x86_64: ../hw/core/qdev.c:824: qdev_get_machine: Assertion > `dev' failed. > Aborted (core dumped) > > for the case of "-cpu help" due to the assert(dev) in qdev_get_machine(). > > How do you want to resolve it? I can think of two: > 1. remove the assert() in qdev_get_machine(). or > 2. drop the callback introduce by this patch. Instead just do > > if (is_tdx_vm()) { > tdx_cpu_instance_init(); > }
Sorry I missed this mail when review this patch. What about checking `current_machine`? @@ -8541,10 +8541,8 @@ static void x86_cpu_post_initfn(Object *obj) accel_cpu_instance_init(CPU(obj)); #ifndef CONFIG_USER_ONLY - MachineState *ms = MACHINE(object_dynamic_cast(qdev_get_machine(), - TYPE_MACHINE)); - if (ms && ms->cgs) { - x86_confidential_guest_cpu_instance_init(X86_CONFIDENTIAL_GUEST(ms->cgs), + if (current_machine && current_machine->cgs) { + x86_confidential_guest_cpu_instance_init(X86_CONFIDENTIAL_GUEST(current_machine->cgs), (CPU(obj))); } #endif --- "-cpu help" is processed before machine creation. The cpu-core (cpu_core_instance_init) also checks current_machine to avoid similar issue. Regards, Zhao