[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.