diff options
author | Myron Stowe <mstowe@redhat.com> | 2012-01-20 21:13:24 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-01-21 01:08:17 -0500 |
commit | e615bf5b5519862ab66172f4dec7455d6543a578 (patch) | |
tree | c6d37861dc376b55bc5c4ece88f57faf9d51e99a /include | |
parent | dcd6c92267155e70a94b3927bce681ce74b80d1f (diff) |
ACPI, APEI: Add 64-bit read/write support for APEI on i386
Base ACPI (CA) currently does not support atomic 64-bit reads and writes
(acpi_read() and acpi_write() split 64-bit loads/stores into two
32-bit transfers) yet APEI expects 64-bit transfer capability, even
when running on 32-bit systems.
This patch implements 64-bit read and write routines for APEI usage.
This patch re-factors similar functionality introduced in commit
04c25997c97, bringing it into the ACPI subsystem in preparation for
removing ./drivers/acpi/atomicio.[ch]. In the implementation I have
replicated acpi_os_read_memory() and acpi_os_write_memory(), creating
64-bit versions for APEI to utilize, as opposed to something more
elegant. My thinking is that we should attempt to see if we can get
ACPI's CA/OSL changed so that the existing acpi_read() and acpi_write()
interfaces are natively 64-bit capable and then subsequently remove the
replication.
Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/acpi/acpiosxf.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h index 2fe8639b3ae7..7c9aebe8a7aa 100644 --- a/include/acpi/acpiosxf.h +++ b/include/acpi/acpiosxf.h | |||
@@ -218,9 +218,13 @@ acpi_status acpi_os_write_port(acpi_io_address address, u32 value, u32 width); | |||
218 | */ | 218 | */ |
219 | acpi_status | 219 | acpi_status |
220 | acpi_os_read_memory(acpi_physical_address address, u32 * value, u32 width); | 220 | acpi_os_read_memory(acpi_physical_address address, u32 * value, u32 width); |
221 | acpi_status | ||
222 | acpi_os_read_memory64(acpi_physical_address address, u64 *value, u32 width); | ||
221 | 223 | ||
222 | acpi_status | 224 | acpi_status |
223 | acpi_os_write_memory(acpi_physical_address address, u32 value, u32 width); | 225 | acpi_os_write_memory(acpi_physical_address address, u32 value, u32 width); |
226 | acpi_status | ||
227 | acpi_os_write_memory64(acpi_physical_address address, u64 value, u32 width); | ||
224 | 228 | ||
225 | /* | 229 | /* |
226 | * Platform and hardware-independent PCI configuration space access | 230 | * Platform and hardware-independent PCI configuration space access |