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