[PATCH v2 1/4] ARM: CSR: add rtc i/o bridge interface for SiRFprimaII
Arnd Bergmann
arnd at arndb.de
Tue Aug 23 11:59:19 EDT 2011
On Tuesday 23 August 2011, Jamie Iles wrote:
> On Tue, Aug 23, 2011 at 05:33:39PM +0800, Barry Song wrote:
> > 2011/8/23 Jamie Iles <jamie at jamieiles.com>:
> > > On Mon, Aug 22, 2011 at 11:15:49PM -0700, Barry Song wrote:
> [...]
> > >> +void sirfsoc_rtc_iobrg_wait_sync(void)
> > >> +{
> > >> + while (readl_relaxed(sirfsoc_rtciobrg_base + SIRFSOC_CPUIOBRG_CTRL))
> > >> + continue;
> > >
> > > It might be worth using cpu_relax() here as it includes a memory barrier
> > > that's what many busy wait loops do.
> >
> > yes. generically people add a cpu_relax() in busy wait and that makes
> > lots of senses. it seems readl_relaxed() can keep the execution
> > sequence even without the barrier?
>
> Well readl_relaxed() uses __raw_readl() which marks the dereference as
> volatile, so you should be okay without the cpu_relax() here. Having
> said that, cpu_relax() is a little more explicit, so whatever you think
> most appropriate I guess.
I agree with Jamie, mostly because using cpu_relax in busy loops is
a well-known idiom in the kernel. It's more for documentation purposes
than technically needed here.
Arnd
More information about the linux-arm-kernel
mailing list