[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Xen 4.6.0-rc1 build with lock_profile=y crash_debug=y, frame_pointer=y and domain.c:241: error: negative width in bit-field â<anonymous>â



>>> On 25.08.15 at 21:54, <konrad.wilk@xxxxxxxxxx> wrote:
> On Tue, Aug 25, 2015 at 03:52:15PM -0400, Konrad Rzeszutek Wilk wrote:
>> On Tue, Aug 25, 2015 at 06:41:06PM +0100, Andrew Cooper wrote:
>> > On 25/08/15 18:09, Konrad Rzeszutek Wilk wrote:
>> > > --- a/xen/arch/x86/domain.c
>> > > +++ b/xen/arch/x86/domain.c
>> > > @@ -238,7 +238,9 @@ struct domain *alloc_domain_struct(void)
>> > >      if ( unlikely(!bits) )
>> > >           bits = _domain_struct_bits();
>> > >  
>> > > +#ifndef LOCK_PROFILE
>> > >      BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
>> > > +#endif
>> > >      d = alloc_xenheap_pages(0, MEMF_bits(bits));
>> > >      if ( d != NULL )
>> > >          clear_page(d);
>> > >
>> > > (not compile tested nor runtime tested)
>> > 
>> > Either remove it locally for debugging, or use something like
> 
> I forgot to mention that by removing it locally Xen ends up halting at:
> 
> (XEN) Detected 3292.657 MHz processor.

Sure - as Andrew said on irc, neither simply removing it nor replacing
it by vmalloc() can actually work. At the very least you'd want the
above to become

#ifndef LOCK_PROFILE
    BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
    d = alloc_xenheap_pages(0, MEMF_bits(bits));
#else
    BUILD_BUG_ON(sizeof(*d) > 2 * PAGE_SIZE);
    d = alloc_xenheap_pages(1, MEMF_bits(bits));
#endif

But preferably we'd find ways to shrink struct domain back to a size
where all build options work.

Jan


_______________________________________________
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®.