From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v2 04/23] xen/arm: sync_bitops Date: Tue, 7 Aug 2012 14:13:29 -0400 Message-ID: <20120807181329.GH15053@phenom.dumpdata.com> References: <1344263246-28036-4-git-send-email-stefano.stabellini@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1344263246-28036-4-git-send-email-stefano.stabellini-mvvWK6WmYclDPfheJLI6IQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linaro-dev-bounces-cunTk1MwBs8s++Sfvej+rw@public.gmane.org Errors-To: linaro-dev-bounces-cunTk1MwBs8s++Sfvej+rw@public.gmane.org To: Stefano Stabellini Cc: xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR@public.gmane.org, linaro-dev-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, Ian.Campbell-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, catalin.marinas-5wv7dgnIgG8@public.gmane.org, tim-LM2mM/qkH7s@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: xen-devel@lists.xenproject.org On Mon, Aug 06, 2012 at 03:27:07PM +0100, Stefano Stabellini wrote: > sync_bitops functions are equivalent to the SMP implementation of the > original functions, independently from CONFIG_SMP being defined. > > We need them because _set_bit etc are not SMP safe if !CONFIG_SMP. But > under Xen you might be communicating with a completely external entity > who might be on another CPU (e.g. two uniprocessor guests communicating > via event channels and grant tables). So we need a variant of the bit > ops which are SMP safe even on a UP kernel. Ack from me. > > Signed-off-by: Stefano Stabellini > --- > arch/arm/include/asm/sync_bitops.h | 27 +++++++++++++++++++++++++++ > 1 files changed, 27 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/include/asm/sync_bitops.h > > diff --git a/arch/arm/include/asm/sync_bitops.h b/arch/arm/include/asm/sync_bitops.h > new file mode 100644 > index 0000000..63479ee > --- /dev/null > +++ b/arch/arm/include/asm/sync_bitops.h > @@ -0,0 +1,27 @@ > +#ifndef __ASM_SYNC_BITOPS_H__ > +#define __ASM_SYNC_BITOPS_H__ > + > +#include > +#include > + > +/* sync_bitops functions are equivalent to the SMP implementation of the > + * original functions, independently from CONFIG_SMP being defined. > + * > + * We need them because _set_bit etc are not SMP safe if !CONFIG_SMP. But > + * under Xen you might be communicating with a completely external entity > + * who might be on another CPU (e.g. two uniprocessor guests communicating > + * via event channels and grant tables). So we need a variant of the bit > + * ops which are SMP safe even on a UP kernel. > + */ > + > +#define sync_set_bit(nr, p) _set_bit(nr, p) > +#define sync_clear_bit(nr, p) _clear_bit(nr, p) > +#define sync_change_bit(nr, p) _change_bit(nr, p) > +#define sync_test_and_set_bit(nr, p) _test_and_set_bit(nr, p) > +#define sync_test_and_clear_bit(nr, p) _test_and_clear_bit(nr, p) > +#define sync_test_and_change_bit(nr, p) _test_and_change_bit(nr, p) > +#define sync_test_bit(nr, addr) test_bit(nr, addr) > +#define sync_cmpxchg cmpxchg > + > + > +#endif > -- > 1.7.2.5