linux/drivers/edac
Roland Dreier dbee8a0aff x86: remove 32-bit versions of readq()/writeq()
The presense of a writeq() implementation on 32-bit x86 that splits the
64-bit write into two 32-bit writes turns out to break the mpt2sas driver
(and in general is risky for drivers as was discussed in
<http://lkml.kernel.org/r/adaab6c1h7c.fsf@cisco.com>).  To fix this,
revert 2c5643b1c5 ("x86: provide readq()/writeq() on 32-bit too") and
follow-on cleanups.

This unfortunately leads to pushing non-atomic definitions of readq() and
write() to various x86-only drivers that in the meantime started using the
definitions in the x86 version of <asm/io.h>.  However as discussed
exhaustively, this is actually the right thing to do, because the right
way to split a 64-bit transaction is hardware dependent and therefore
belongs in the hardware driver (eg mpt2sas needs a spinlock to make sure
no other accesses occur in between the two halves of the access).

Build tested on 32- and 64-bit x86 allmodconfig.

Link: http://lkml.kernel.org/r/x86-32-writeq-is-broken@mdm.bga.com
Acked-by: Hitoshi Mitake <h.mitake@gmail.com>
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>
Acked-by: James Bottomley <James.Bottomley@parallels.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-05-25 08:39:44 -07: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
amd64_edac.c amd64_edac: Erratum #637 workaround 2011-04-26 16:18:56 +02:00
amd64_edac.h amd64_edac: Erratum #637 workaround 2011-04-26 16:18:56 +02:00
amd76x_edac.c PCI: fix typos pci_device_dis/enable to pci_dis/enable_device in comments 2010-05-18 14:59:08 -07:00
amd8111_edac.c edac: add edac_device_alloc_index() 2009-06-18 13:03:56 -07:00
amd8111_edac.h
amd8131_edac.c edac: AMD8111 & AMD8131 use dev_name() 2009-05-29 08:40:03 -07:00
amd8131_edac.h tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
cell_edac.c tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
cpc925_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
e7xxx_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
e752x_edac.c EDAC: Fixup scrubrate manipulation 2011-01-07 11:38:31 +01:00
edac_core.h Fix common misspellings 2011-03-31 11:26:23 -03:00
edac_device_sysfs.c Fix common misspellings 2011-03-31 11:26:23 -03:00
edac_device.c Fix common misspellings 2011-03-31 11:26:23 -03:00
edac_mc_sysfs.c EDAC: Remove debugging output in scrub rate handling 2011-04-21 12:44:58 +02:00
edac_mc.c Fix common misspellings 2011-03-31 11:26:23 -03:00
edac_mce.c i7core_edac: Add edac_mce glue 2010-05-10 11:44:50 -03:00
edac_module.c EDAC: Export edac sysfs class to users. 2010-10-21 14:47:59 +02:00
edac_module.h EDAC: Export edac sysfs class to users. 2010-10-21 14:47:59 +02:00
edac_pci_sysfs.c Fix common misspellings 2011-03-31 11:26:23 -03:00
edac_pci.c edac: core: remove completion-wait for complete with rcu_barrier 2009-09-24 07:21:05 -07:00
edac_stub.c EDAC: Export edac sysfs class to users. 2010-10-21 14:47:59 +02:00
i7core_edac.c Fix common misspellings 2011-03-31 11:26:23 -03: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 x86: remove 32-bit versions of readq()/writeq() 2011-05-25 08:39:44 -07:00
i5000_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i5100_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i5400_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i7300_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i82443bxgx_edac.c Fix common misspellings 2011-03-31 11:26:23 -03:00
i82860_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
i82875p_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
i82975x_edac.c edac: correct i82975x error-info reported 2011-02-17 16:47:04 +01:00
Kconfig Fix common misspellings 2011-03-31 11:26:23 -03:00
Makefile drivers/edac: provide support for tile architecture 2011-03-10 13:30:14 -05:00
mce_amd_inj.c Fix common misspellings 2011-03-31 11:26:23 -03:00
mce_amd.c amd64_edac: Enable driver on F15h 2011-03-17 14:46:26 +01:00
mce_amd.h amd64_edac: Simplify decoding path 2011-03-17 14:46:19 +01:00
mpc85xx_edac.c edac/mpc85xx: Limit setting/clearing of HID1[RFXE] to e500v1/v2 cores 2011-04-04 09:31:35 -05:00
mpc85xx_edac.h edac: mpc85xx mask ecc syndrome correctly 2010-03-12 15:52:40 -08: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
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 drivercore: revert addition of of_match to struct device 2011-05-18 12:32:23 -06:00
ppc4xx_edac.h
r82600_edac.c Fix common misspellings 2011-03-31 11:26:23 -03: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