From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Hering Subject: Re: [PATCH] mem_event: use wait queue when ring is full Date: Mon, 5 Dec 2011 12:33:16 +0100 Message-ID: <20111205113316.GA29024@aepfle.de> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Mon, Dec 05, Olaf Hering wrote: > Wakeup will take the number of free slots into account. This is not entirely tree unless this additional change is applied: diff -r cd163bcd0f06 xen/arch/x86/mm/mem_event.c --- a/xen/arch/x86/mm/mem_event.c +++ b/xen/arch/x86/mm/mem_event.c @@ -235,6 +235,7 @@ void mem_event_wake_requesters(struct me mem_event_ring_lock(med); free_req = RING_FREE_REQUESTS(&med->front_ring); + free_req -= med->foreign_producers; if ( free_req ) wake_up_nr(&med->wq, free_req); And perhaps the wake_up should be done outside the ring lock? Olaf