From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: Re: [patch 21/26] Xen-paravirt_ops: Use the hvc console infrastructure for Xen console Date: Fri, 16 Mar 2007 09:28:41 +0000 Message-ID: References: <20070316085451.GE23174@elte.hu> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20070316085451.GE23174@elte.hu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ingo Molnar , Jeremy Fitzhardinge Cc: Zachary Amsden , xen-devel@lists.xensource.com, Andi Kleen , Rusty Russell , linux-kernel@vger.kernel.org, Chris Wright , virtualization@lists.osdl.org, Andrew Morton List-Id: xen-devel@lists.xenproject.org On 16/3/07 08:54, "Ingo Molnar" wrote: >> + prod = intf->in_prod; >> + mb(); >> + BUG_ON((prod - cons) > sizeof(intf->in)); > > such mb()'s are typically a sign of "i have no clear idea what SMP > serialization rules apply here, but something is needed because > otherwise it breaks" ? These mb()'s are pretty standard for lock-free producer/consumer rings. Write descriptor /then/ write the updated producer. Read the producer /then/ read any descriptors revealed by this new producer value. All our ring protocols (and we have a few) require memory barriers. Those that use our standard set of ring macros have the memory barriers hidden from view, but they're still there. -- Keir