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