OpenCloudOS-Kernel/drivers/edac
Hitoshi Mitake 797a796a13 asm-generic: architecture independent readq/writeq for 32bit environment
This provides unified readq()/writeq() helper functions for 32-bit
drivers.

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 dbee8a0aff ("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: Hitoshi Mitake <h.mitake@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-02-21 16:47:28 -08:00
..
Kconfig edac: Only build sb_edac on 64-bit 2011-11-03 11:22:44 -07:00
Makefile edac: sb_edac: Add it to the building system 2011-11-01 10:01:54 -02:00
amd64_edac.c amd64_edac: Cleanup return type of amd64_determine_edac_cap() 2011-10-06 12:35:46 +02:00
amd64_edac.h amd64_edac: Erratum #637 workaround 2011-04-26 16:18:56 +02:00
amd64_edac_dbg.c EDAC, MCE: Rework MCE injection 2010-10-21 14:47:59 +02:00
amd64_edac_inj.c amd64_edac: Add support for F15h DCT PCI config accesses 2011-03-17 14:46:11 +01:00
amd76x_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
amd8111_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
amd8111_edac.h edac: AMD8111 driver header file 2009-04-02 19:05:03 -07:00
amd8131_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
amd8131_edac.h tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
cell_edac.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
cpc925_edac.c cpc925_edac: Support single-processor configurations 2011-09-01 16:00:18 +10:00
e7xxx_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
e752x_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
edac_core.h edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_device.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_device_sysfs.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_mc.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_mc_sysfs.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_module.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
edac_module.h edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_pci.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_pci_sysfs.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edac_stub.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
i7core_edac.c x86, mce: Add wrappers for registering on the decode chain 2011-12-14 12:50:12 +01:00
i3000_edac.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
i3200_edac.c asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
i5000_edac.c Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
i5100_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i5400_edac.c Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
i7300_edac.c i7300_edac: Fix error cleanup logic 2011-11-01 10:01:53 -02:00
i82443bxgx_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i82860_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
i82875p_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
i82975x_edac.c edac:i82975x fix 32bit compile and cleanup 2011-10-29 21:29:42 +02:00
mce_amd.c x86, mce: Add wrappers for registering on the decode chain 2011-12-14 12:50:12 +01:00
mce_amd.h EDAC, MCE, AMD: Simplify NB MCE decoder interface 2011-10-06 12:34:04 +02:00
mce_amd_inj.c edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
mpc85xx_edac.c drivers/edac/mpc85xx_edac.c: fix memory controller compatible for edac 2011-11-24 01:59:38 -06:00
mpc85xx_edac.h edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
mv64x60_edac.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mv64x60_edac.h edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
pasemi_edac.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ppc4xx_edac.c treewide: Fix typos in various parts of the kernel, and fix some comments. 2011-12-02 14:57:31 +01:00
ppc4xx_edac.h edac: new ppc4xx driver module 2009-04-02 19:05:03 -07:00
r82600_edac.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sb_edac.c Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-06 15:02:37 -08:00
tile_edac.c drivers/edac: provide support for tile architecture 2011-03-10 13:30:14 -05:00
x38_edac.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00