[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 06/11] x86/vmce: emulate MSR_IA32_MCG_EXT_CTL
>>> On 05.07.17 at 05:12, <haozhong.zhang@xxxxxxxxx> wrote: > @@ -878,6 +879,8 @@ long arch_do_domctl( > } > else > { > + static const unsigned long vmce_off = offsetof(typeof(*evc), > vmce); I'm unconvinced the static is useful (and not potentially harmful) here. I'm also not convinced this really needs to be unsigned long (unsigned int is generally more efficient to deal with). > @@ -917,9 +920,21 @@ long arch_do_domctl( > offsetof(struct xen_domctl_ext_vcpucontext, > vmce.caps)); > BUILD_BUG_ON(sizeof(evc->mcg_cap) != sizeof(evc->vmce.caps)); > - if ( evc->size >= offsetof(typeof(*evc), vmce) + > - sizeof(evc->vmce) ) > + if ( evc->size >= vmce_off + sizeof(evc->vmce) ) > ret = vmce_restore_vcpu(v, &evc->vmce); > + else if ( evc->size >= vmce_off + > + offsetof(typeof(evc->vmce), mcg_ext_ctl) ) > + { > + /* > + * If migrating from old Xen that uses a smaller 'struct > + * hvm_vmce_vcpu', only restore the components in the > + * old version. > + */ > + struct hvm_vmce_vcpu vmce = { 0 }; Just { } would suffice. > + memcpy(&vmce, &evc->vmce, evc->size - vmce_off); > + ret = vmce_restore_vcpu(v, &vmce); > + } > else if ( evc->size >= offsetof(typeof(*evc), mcg_cap) + > sizeof(evc->mcg_cap) ) > { So you really have two choices here: Either mirror/clone what's already there, or (preferable imo) carefully generalize the existing code. But please don't use yet another slightly different model. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |