Re: [PATCH v3 00/17] Cross-architecture definitions of relaxed MMIO accessors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 25, 2014 at 05:15:14PM +0200, Arnd Bergmann wrote:
> On Thursday 25 September 2014 17:07:47 Arnd Bergmann wrote:
> 
> > The current version doesn't let you do that, so I'll keel the #ifdef
> > sections separate. This also means that I won't apply your patch 17:
> > we will keep needing the #ifdef to support all three relevant combinations:
> > 
> > a) architectures that provide neither and want to get the defaults
> >    from asm-generic
> > b) architectures that provide the non-relaxed versions and want tog
> >    to get just the relaxed version from asm-generic
> > c) architectures that provide both
> > 
> 
> And here is the new version I applied:
> 
> diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
> index 508a57257de5..3e976be3bdd4 100644
> --- a/include/asm-generic/io.h
> +++ b/include/asm-generic/io.h
> @@ -174,6 +174,43 @@ static inline void writeq(u64 value, void __iomem *addr)
>  #endif /* CONFIG_64BIT */
>  
>  /*
> + * {read,write}{b,w,l,q}_relaxed() are like the regular version, but
> + * are not guaranteed to provide ordering against spinlocks or memory
> + * accesses.
> + */
> +#ifndef readb_relaxed
> +#define readb_relaxed readb
> +#endif

My original patch to consolidate the read*/write*() and friends
explicitly avoided the use of macros to do this. The reason was that if
we have static inline functions in asm-generic/io.h it defines the
canonical prototype of these functions, so that architectures that want
to override them can just copy the prototype from there.

So for consistency the above would become:

	#ifndef readb_relaxed
	#define readb_relaxed readb_relaxed
	static inline u8 readb_relaxed(const void __iomem *addr)
	{
		return readb(addr);
	}
	#endif

And analogously for the others. For the *_relaxed variants it's perhaps
not as important because the signature is the same as for the plain
variants, so I'm not objecting very strongly to the plain macros.

Thierry

Attachment: pgp_fgSwYDwqf.pgp
Description: PGP signature


[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux