[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [xen-unstable test] 6947: regressions - trouble: broken/fail/pass
>>> On 02.05.11 at 14:13, Keir Fraser <keir.xen@xxxxxxxxx> wrote: > On 02/05/2011 13:00, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote: > >>> (2) Change the xmalloc lock to spin_lock_irqsave(). This would also have to >>> be transitively applied to at least the heap_lock in page_alloc.c. One issue >>> with this (and indeed with calling alloc_heap_pages at all with IRQs >>> disabled) is that alloc_heap_pages does actually assume IRQs are enabled >>> (for example, it calls flush_tlb_mask()) -- actually I think this limitation >>> probably predates the tsc rendezvous changes, and could be a source of >>> latent bugs in earlier Xen releases. >> >> (2b) Make only the xmalloc() lock disable IRQs, and don't allow it to >> go into the page allocator when IRQs were disabled on entry. Have >> a reserve page available on each pCPU (requires that in a single >> hypercall there can't be allocations adding up to more than PAGE_SIZE), >> and when consumed, re-fill this page e.g. from a softirq or tasklet. > > You'd have to release/acquire the xmalloc lock across the ->get_mem call. Not sure what you're trying to make me aware of - initial acquire would be spin_lock_irqsave(), prior to ->get_mem() it would spin_unlock_irqrestore(), and the ->get_mem() handler would be responsible for not calling into the page allocator when interrupts are (still) disabled (and instead use the per-CPU reserve page if populated, triggering its re-population). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |