On Tue, May 20, 2025 at 01:30:11PM +0200, Magnus Kulke wrote: > Write CPU register state to MSHV vCPUs. Various mapping functions to > prepare the payload for the HV call have been implemented. > > Signed-off-by: Magnus Kulke <magnusku...@linux.microsoft.com> > --- [...] > + > +static void populate_hv_table_reg(const struct SegmentCache *seg, > + hv_x64_table_register *hv_reg) > +{ > + hv_reg->base = seg->base; > + hv_reg->limit = seg->limit; > + memset(hv_reg->pad, 0, sizeof(hv_reg->pad));
I'm not sure if the compiler will optimize this function call out. It is straightforward to write *hv_reg = { .base = seg->base, .limit = seg->limit }; > +} > + > +static int set_special_regs(const CPUState *cpu) > +{ > + X86CPU *x86cpu = X86_CPU(cpu); > + CPUX86State *env = &x86cpu->env; > + int cpu_fd = mshv_vcpufd(cpu); > + struct hv_register_assoc *assocs; > + size_t n_regs = sizeof(SPECIAL_REGISTER_NAMES) / > sizeof(hv_register_name); > + int ret; > + > + assocs = g_new0(struct hv_register_assoc, n_regs); The allocation here can be removed, since we know for sure how many elements are in `SPECIAL_REGISTER_NAMES`. It should be fine to use an on-stack array. There are probably other places you can optimize. Thanks, Wei.