On Tue, Apr 01, 2025 at 09:01:41AM -0400, Xiaoyao Li wrote: > Date: Tue, 1 Apr 2025 09:01:41 -0400 > From: Xiaoyao Li <xiaoyao...@intel.com> > Subject: [PATCH v8 31/55] i386/cpu: introduce > x86_confidential_guest_cpu_instance_init() > X-Mailer: git-send-email 2.34.1 > > To allow execute confidential guest specific cpu init operations. > > Signed-off-by: Xiaoyao Li <xiaoyao...@intel.com> > --- > Changes in v6: > - new patch; > --- > target/i386/confidential-guest.h | 11 +++++++++++ > target/i386/cpu.c | 10 ++++++++++ > 2 files changed, 21 insertions(+) > > diff --git a/target/i386/confidential-guest.h > b/target/i386/confidential-guest.h > index 164be7633a20..a86c42a47558 100644 > --- a/target/i386/confidential-guest.h > +++ b/target/i386/confidential-guest.h > @@ -39,6 +39,7 @@ struct X86ConfidentialGuestClass { > > /* <public> */ > int (*kvm_type)(X86ConfidentialGuest *cg); > + void (*cpu_instance_init)(X86ConfidentialGuest *cg, CPUState *cpu); > uint32_t (*mask_cpuid_features)(X86ConfidentialGuest *cg, uint32_t > feature, uint32_t index, > int reg, uint32_t value); > }; > @@ -59,6 +60,16 @@ static inline int > x86_confidential_guest_kvm_type(X86ConfidentialGuest *cg) > } > } > > +static inline void > x86_confidential_guest_cpu_instance_init(X86ConfidentialGuest *cg, > + CPUState *cpu)
Well, it's a so long function name. Or maybe we can call it as "x86_confidential_guest_cpu_init" and rename the hook as "cpu_init"? > +{ > + X86ConfidentialGuestClass *klass = X86_CONFIDENTIAL_GUEST_GET_CLASS(cg); > + > + if (klass->cpu_instance_init) { > + klass->cpu_instance_init(cg, cpu); > + } > +} > + > /** > * x86_confidential_guest_mask_cpuid_features: > * > 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)); There's no need to use object_dynamic_cast(), to cast to the basic machine type. MACHINE(qdev_get_machine()) is enough. > + if (ms && ms->cgs) { > + > x86_confidential_guest_cpu_instance_init(X86_CONFIDENTIAL_GUEST(ms->cgs), > + (CPU(obj))); > + } > +#endif > } > Others are fine for me, Reviewed-by: Zhao Liu <zhao1....@intel.com>