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

Re: [Xen-devel] [PATCH RFC] domain: Compile with lock_profile=y enabled.



>>> On 06.11.15 at 20:39, <konrad.wilk@xxxxxxxxxx> wrote:
> On Thu, Nov 05, 2015 at 10:12:26AM -0700, Jan Beulich wrote:
>> >>> On 02.11.15 at 18:12, <konrad.wilk@xxxxxxxxxx> wrote:
>> > @@ -247,10 +248,12 @@ struct domain *alloc_domain_struct(void)
>> >           bits = _domain_struct_bits();
>> >  #endif
>> >  
>> > -    BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
>> 
>> Not unconditionally (i.e. at least non-debug builds should continue
>> to have this).
> 
> The profile=y does not mandate debug=y?
> 
> Meaning if we leave this for non-debug builds with lock_profile=y
> we will have an compile issue.

Good point, but still calling for this not to be done unconditionally
(even if not a true dependency, I don't expect production builds
to enable lock profiling).

>> > -    d = alloc_xenheap_pages(0, MEMF_bits(bits));
>> > +    d = alloc_xenheap_pages(order, MEMF_bits(bits));
>> >      if ( d != NULL )
>> > -        clear_page(d);
>> > +    {
>> > +        for ( ; order >= 0; order-- )
>> > +            clear_page((void *)d + PAGE_SIZE*order);
>> 
>> This loop works for orders 0 and 1, but not anything else (not
>> clearing all of the pages).
> 
> Right. This below should do it:

Yes, except that ...

> @@ -243,10 +244,18 @@ struct domain *alloc_domain_struct(void)
>           bits = _domain_struct_bits();
>  #endif
>  
> +
> +#ifndef LOCK_PROFILE
>      BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
> -    d = alloc_xenheap_pages(0, MEMF_bits(bits));
> +#endif
> +    d = alloc_xenheap_pages(order, MEMF_bits(bits));
>      if ( d != NULL )
> -        clear_page(d);
> +    {
> +        unsigned int sz;
> +
> +        for ( sz = 0; sz < (1 << order) * PAGE_SIZE; sz += PAGE_SIZE )

... this wants to be simplified to PAGE_SIZE << order.

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