1
linux/drivers/acpi/apei
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
..
apei-base.c ACPI, APEI, Fix error path for memory allocation 2010-09-29 14:02:35 -04:00
apei-internal.h ACPI, APEI, Add APEI generic error status printing support 2010-12-13 23:42:12 -05:00
cper.c ACPI, APEI, Add PCIe AER error information printing support 2011-03-21 22:59:08 -04:00
einj.c x86: remove 32-bit versions of readq()/writeq() 2011-05-25 08:39:44 -07:00
erst-dbg.c ACPI, APEI, Add ERST record ID cache 2011-03-21 22:59:06 -04:00
erst.c pstore: fix potential logic issue in pstore read interface 2011-05-16 11:05:08 -07:00
ghes.c Fix common misspellings 2011-03-31 11:26:23 -03:00
hest.c ACPI: Fix boot problem related to APEI with acpi_disabled set 2011-01-16 11:56:26 -08:00
Kconfig pstore: Fix Kconfig dependencies for apei->pstore 2011-05-20 10:34:35 -07:00
Makefile ACPI, APEI, ERST debug support 2010-08-14 22:47:55 -04:00