aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/platform
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2014-05-20 03:39:41 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-05-27 12:13:08 -0400
commita238317ce8185519ed083e81e84260907fbbcf7f (patch)
treef5b228ac40941946db2e7427b1085a90c78c85b5 /include/acpi/platform
parent92985ef1db428cc6129a1d375a68c277aa05820b (diff)
ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem.
ACPICA doesn't include protections around address space checking, Linux build tests always complain increased sparse warnings around ACPICA internal acpi_os_map/unmap_memory() invocations. This patch tries to fix this issue permanently. There are 2 choices left for us to solve this issue: 1. Add __iomem address space awareness into ACPICA. 2. Remove sparse checker of __iomem from ACPICA source code. This patch chooses solution 2, because: 1. Most of the acpi_os_map/unmap_memory() invocations are used for ACPICA. table mappings, which in fact are not IO addresses. 2. The only IO addresses usage is for "system memory space" mapping code in: drivers/acpi/acpica/exregion.c drivers/acpi/acpica/evrgnini.c drivers/acpi/acpica/exregion.c The mapped address is accessed in the handler of "system memory space" - acpi_ex_system_memory_space_handler(). This function in fact can be changed to invoke acpi_os_read/write_memory() so that __iomem can always be type-casted in the OSL layer. According to the above investigation, we drew the following conclusion: It is not a good idea to introduce __iomem address space awareness into ACPICA mostly in order to protect non-IO addresses. We can simply remove __iomem for acpi_os_map/unmap_memory() to remove __iomem checker for ACPICA code. Then we need to enforce external usages to invoke other APIs that are aware of __iomem address space. The external usages are: drivers/acpi/apei/einj.c drivers/acpi/acpi_extlog.c drivers/char/tpm/tpm_acpi.c drivers/acpi/nvs.c This patch thus performs cleanups in this way: 1. Add acpi_os_map/unmap_iomem() to be invoked by non-ACPICA code. 2. Remove __iomem from acpi_os_map/unmap_memory(). Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/acpi/platform')
-rw-r--r--include/acpi/platform/aclinux.h6
-rw-r--r--include/acpi/platform/aclinuxex.h4
2 files changed, 0 insertions, 10 deletions
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index e70012956db3..cd1f052d55bb 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -128,8 +128,6 @@
128#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object 128#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
129#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id 129#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
130#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock 130#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
131#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_map_memory
132#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_unmap_memory
133 131
134/* 132/*
135 * OSL interfaces used by debugger/disassembler 133 * OSL interfaces used by debugger/disassembler
@@ -163,10 +161,6 @@
163#define __init 161#define __init
164#endif 162#endif
165 163
166#ifndef __iomem
167#define __iomem
168#endif
169
170/* Host-dependent types and defines for user-space ACPICA */ 164/* Host-dependent types and defines for user-space ACPICA */
171 165
172#define ACPI_FLUSH_CPU_CACHE() 166#define ACPI_FLUSH_CPU_CACHE()
diff --git a/include/acpi/platform/aclinuxex.h b/include/acpi/platform/aclinuxex.h
index cce0723d05a9..191e741cfa0e 100644
--- a/include/acpi/platform/aclinuxex.h
+++ b/include/acpi/platform/aclinuxex.h
@@ -102,10 +102,6 @@ static inline acpi_thread_id acpi_os_get_thread_id(void)
102 lock ? AE_OK : AE_NO_MEMORY; \ 102 lock ? AE_OK : AE_NO_MEMORY; \
103 }) 103 })
104 104
105void __iomem *acpi_os_map_memory(acpi_physical_address where, acpi_size length);
106
107void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size);
108
109/* 105/*
110 * OSL interfaces added by Linux 106 * OSL interfaces added by Linux
111 */ 107 */