• Hitoshi Mitake's avatar
    asm-generic: architecture independent readq/writeq for 32bit environment · 797a796a
    Hitoshi Mitake authored
    This provides unified readq()/writeq() helper functions for 32-bit
    For some cases, readq/writeq without atomicity is harmful, and order of
    io access has to be specified explicitly.  So in this patch, new two
    header files which contain non-atomic readq/writeq are added.
     - <asm-generic/io-64-nonatomic-lo-hi.h> provides non-atomic readq/
       writeq with the order of lower address -> higher address
     - <asm-generic/io-64-nonatomic-hi-lo.h> provides non-atomic readq/
       writeq with reversed order
    This allows us to remove some readq()s that were added drivers when the
    default non-atomic ones were removed in commit dbee8a0a ("x86:
    remove 32-bit versions of readq()/writeq()")
    The drivers which need readq/writeq but can do with the non-atomic ones
    must add the line:
      #include <asm-generic/io-64-nonatomic-lo-hi.h> /* or hi-lo.h */
    But this will be nop in 64-bit environments, and no other #ifdefs are
    required.  So I believe that this patch can solve the problem of
     1. driver-specific readq/writeq
     2. atomicity and order of io access
    This patch is tested with building allyesconfig and allmodconfig as
    ARCH=x86 and ARCH=i386 on top of tip/master.
    Cc: Kashyap Desai <Kashyap.Desai@lsi.com>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Ravi Anand <ravi.anand@qlogic.com>
    Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
    Cc: Matthew Garrett <mjg@redhat.com>
    Cc: Jason Uhlenkott <juhlenko@akamai.com>
    Cc: James Bottomley <James.Bottomley@parallels.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Roland Dreier <roland@purestorage.com>
    Cc: James Bottomley <jbottomley@parallels.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Matthew Wilcox <matthew.r.wilcox@intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarHitoshi Mitake <h.mitake@gmail.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
io-64-nonatomic-lo-hi.h 536 Bytes