From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [xen-unstable test] 6947: regressions - trouble: broken/fail/pass Date: Mon, 02 May 2011 13:13:00 +0100 Message-ID: References: <4DBEB8FA020000780003F276@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4DBEB8FA020000780003F276@vpn.id2.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On 02/05/2011 13:00, "Jan Beulich" 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. -- Keir