[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V3] x86/xsaves: calculate the xstate_comp_offsets base on xcomp_bv
On Fri, Mar 04, 2016 at 06:56:35AM -0700, Jan Beulich wrote: > >>> On 04.03.16 at 12:00, <shuai.ruan@xxxxxxxxxxxxxxx> wrote: > > --- a/xen/arch/x86/domctl.c > > +++ b/xen/arch/x86/domctl.c > > @@ -934,8 +934,14 @@ long arch_do_domctl( > > goto vcpuextstate_out; > > } > > > > - expand_xsave_states(v, xsave_area, > > - size - 2 * sizeof(uint64_t)); > > + ret = expand_xsave_states(v, xsave_area, > > + size - 2 * sizeof(uint64_t)); > > + if ( ret ) > > + { > > + xfree(xsave_area); > > + vcpu_unpause(v); > > + goto vcpuextstate_out; > > + } > > Well, while this is one way to deal with the problem, it's certainly > not the most desirable one: We should try to avoid runtime > allocations, failures of which then cause other things to fail (in > perhaps not very graceful ways). And doing so is pretty simple > here, and you even have two options: Either allocate a per-CPU > array, or - considering that XCNTXT_MASK has only a limited > number of bits set - even use an on-stack array of suitable > (compile time determined from XCNTXT_MASK) size. If you Thanks. I will change it to on-stack array. For "size compile time determined from XCNTXT_MASK", hweight64(XCNTXT_MASK) can return the num of bits set. But we need to caculte the highest bit set in XCNTXT_MASK at compile time, is there any macro can be used here ? > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |