|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC/PATCH] XENMEM_claim_pages (subop of an existing) hypercall
On 14/11/2012 17:42, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> wrote:
>> It would be nice if d->tot_pages adjustments didn't take the global
>> heap_lock in this case. There's probably some way to bail out of those new
>> update functions before doing the locked work, in that case.
>
> I agree. I played with atomics for a bit but couldn't
> see a way it would work without races. The generic
> pseudo-code is
>
> if (A) {
> atomically {
> modify A
> modify d->B
> }
> } else {
> modify d->B
> }
>
> Any ideas?
E.g.,
/* Fast path (new). */
if ( !d->unclaimed_pages )
return d->tot_pages += pages;
/* Slower path (as in your patch). */
spin_lock(&heap_lock);
d->tot_pages += pages;
if ( d->unclaimed_pages )
....
The only danger is around any necessary interlocking with d->unclaimed_pages
becoming non-zero. But the fast-path test is still under d->page_alloc_lock,
and you set up d->unclaimed_pages under that lock, so it looks okay to me.
-- Keir
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |