Messages in this thread | | | Date | Fri, 26 Sep 2014 10:05:52 +0200 | From | Thierry Reding <> | Subject | Re: [PATCH v3 00/17] Cross-architecture definitions of relaxed MMIO accessors |
| |
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 [unhandled content-type:application/pgp-signature] | |