diff options
author | Bob Moore <robert.moore@intel.com> | 2006-06-08 16:29:00 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-06-14 02:45:47 -0400 |
commit | 4c90ece249992c7a2e3fc921e5cdb8eb92193067 (patch) | |
tree | e145ffe472802ef870ba1eaea150b688c19e45ca /include/acpi | |
parent | 4119532c95547821dbe72d6916dfa1b2148475b3 (diff) |
ACPI: ACPICA 20060608
Converted the locking mutex used for the ACPI hardware
to a spinlock. This change should eliminate all problems
caused by attempting to acquire a semaphore at interrupt
level, and it means that all ACPICA external interfaces
that directly access the ACPI hardware can be safely
called from interrupt level.
Fixed a regression introduced in 20060526 where the ACPI
device initialization could be prematurely aborted with
an AE_NOT_FOUND if a device did not have an optional
_INI method.
Fixed an IndexField issue where a write to the Data
Register should be limited in size to the AccessSize
(width) of the IndexField itself. (BZ 433, Fiodor Suietov)
Fixed problem reports (Valery Podrezov) integrated: - Allow
store of ThermalZone objects to Debug object.
http://bugzilla.kernel.org/show_bug.cgi?id=5369
http://bugzilla.kernel.org/show_bug.cgi?id=5370
Fixed problem reports (Fiodor Suietov) integrated: -
acpi_get_table_header() doesn't handle multiple instances
correctly (BZ 364)
Removed four global mutexes that were obsolete and were
no longer being used.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi')
-rw-r--r-- | include/acpi/acconfig.h | 11 | ||||
-rw-r--r-- | include/acpi/acglobal.h | 6 | ||||
-rw-r--r-- | include/acpi/aclocal.h | 55 |
3 files changed, 36 insertions, 36 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h index 8b52e44ad2ab..b9beceb33141 100644 --- a/include/acpi/acconfig.h +++ b/include/acpi/acconfig.h | |||
@@ -63,7 +63,7 @@ | |||
63 | 63 | ||
64 | /* Current ACPICA subsystem version in YYYYMMDD format */ | 64 | /* Current ACPICA subsystem version in YYYYMMDD format */ |
65 | 65 | ||
66 | #define ACPI_CA_VERSION 0x20060526 | 66 | #define ACPI_CA_VERSION 0x20060608 |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, | 69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, |
@@ -171,15 +171,8 @@ | |||
171 | #define ACPI_MAX_ADDRESS_SPACE 255 | 171 | #define ACPI_MAX_ADDRESS_SPACE 255 |
172 | 172 | ||
173 | /* Array sizes. Used for range checking also */ | 173 | /* Array sizes. Used for range checking also */ |
174 | #define ACPI_MAX_MATCH_OPCODE 5 | ||
175 | 174 | ||
176 | #if 0 | 175 | #define ACPI_MAX_MATCH_OPCODE 5 |
177 | #define ACPI_NUM_ACCESS_TYPES 6 | ||
178 | #define ACPI_NUM_UPDATE_RULES 3 | ||
179 | #define ACPI_NUM_LOCK_RULES 2 | ||
180 | #define ACPI_NUM_FIELD_NAMES 2 | ||
181 | #define ACPI_NUM_OPCODES 256 | ||
182 | #endif | ||
183 | 176 | ||
184 | /* RSDP checksums */ | 177 | /* RSDP checksums */ |
185 | 178 | ||
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h index 9297f293b2c0..14531d48f6b6 100644 --- a/include/acpi/acglobal.h +++ b/include/acpi/acglobal.h | |||
@@ -186,7 +186,7 @@ extern struct acpi_table_support acpi_gbl_table_data[ACPI_TABLE_ID_MAX + 1]; | |||
186 | * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. | 186 | * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. |
187 | * (The table maps local handles to the real OS handles) | 187 | * (The table maps local handles to the real OS handles) |
188 | */ | 188 | */ |
189 | ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[NUM_MUTEX]; | 189 | ACPI_EXTERN struct acpi_mutex_info acpi_gbl_mutex_info[ACPI_NUM_MUTEX]; |
190 | 190 | ||
191 | /***************************************************************************** | 191 | /***************************************************************************** |
192 | * | 192 | * |
@@ -314,7 +314,11 @@ ACPI_EXTERN struct acpi_fixed_event_handler | |||
314 | ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; | 314 | ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; |
315 | ACPI_EXTERN struct acpi_gpe_block_info | 315 | ACPI_EXTERN struct acpi_gpe_block_info |
316 | *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; | 316 | *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; |
317 | |||
318 | /* Spinlocks */ | ||
319 | |||
317 | ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock; | 320 | ACPI_EXTERN acpi_handle acpi_gbl_gpe_lock; |
321 | ACPI_EXTERN acpi_handle acpi_gbl_hardware_lock; | ||
318 | 322 | ||
319 | /***************************************************************************** | 323 | /***************************************************************************** |
320 | * | 324 | * |
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h index 98c697e3c486..1eeca7adca95 100644 --- a/include/acpi/aclocal.h +++ b/include/acpi/aclocal.h | |||
@@ -72,52 +72,55 @@ union acpi_parse_object; | |||
72 | * Predefined handles for the mutex objects used within the subsystem | 72 | * Predefined handles for the mutex objects used within the subsystem |
73 | * All mutex objects are automatically created by acpi_ut_mutex_initialize. | 73 | * All mutex objects are automatically created by acpi_ut_mutex_initialize. |
74 | * | 74 | * |
75 | * The acquire/release ordering protocol is implied via this list. Mutexes | 75 | * The acquire/release ordering protocol is implied via this list. Mutexes |
76 | * with a lower value must be acquired before mutexes with a higher value. | 76 | * with a lower value must be acquired before mutexes with a higher value. |
77 | * | 77 | * |
78 | * NOTE: any changes here must be reflected in the acpi_gbl_mutex_names table also! | 78 | * NOTE: any changes here must be reflected in the acpi_gbl_mutex_names |
79 | * table below also! | ||
79 | */ | 80 | */ |
80 | #define ACPI_MTX_EXECUTE 0 | 81 | #define ACPI_MTX_INTERPRETER 0 /* AML Interpreter, main lock */ |
81 | #define ACPI_MTX_INTERPRETER 1 | 82 | #define ACPI_MTX_CONTROL_METHOD 1 /* Control method termination [TBD: may no longer be necessary] */ |
82 | #define ACPI_MTX_PARSER 2 | 83 | #define ACPI_MTX_TABLES 2 /* Data for ACPI tables */ |
83 | #define ACPI_MTX_DISPATCHER 3 | 84 | #define ACPI_MTX_NAMESPACE 3 /* ACPI Namespace */ |
84 | #define ACPI_MTX_TABLES 4 | 85 | #define ACPI_MTX_EVENTS 4 /* Data for ACPI events */ |
85 | #define ACPI_MTX_OP_REGIONS 5 | 86 | #define ACPI_MTX_CACHES 5 /* Internal caches, general purposes */ |
86 | #define ACPI_MTX_NAMESPACE 6 | 87 | #define ACPI_MTX_MEMORY 6 /* Debug memory tracking lists */ |
87 | #define ACPI_MTX_EVENTS 7 | 88 | #define ACPI_MTX_DEBUG_CMD_COMPLETE 7 /* AML debugger */ |
88 | #define ACPI_MTX_HARDWARE 8 | 89 | #define ACPI_MTX_DEBUG_CMD_READY 8 /* AML debugger */ |
89 | #define ACPI_MTX_CACHES 9 | 90 | |
90 | #define ACPI_MTX_MEMORY 10 | 91 | #define ACPI_MAX_MUTEX 8 |
91 | #define ACPI_MTX_DEBUG_CMD_COMPLETE 11 | 92 | #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 |
92 | #define ACPI_MTX_DEBUG_CMD_READY 12 | ||
93 | |||
94 | #define MAX_MUTEX 12 | ||
95 | #define NUM_MUTEX MAX_MUTEX+1 | ||
96 | 93 | ||
97 | #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) | 94 | #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) |
98 | #ifdef DEFINE_ACPI_GLOBALS | 95 | #ifdef DEFINE_ACPI_GLOBALS |
99 | 96 | ||
100 | /* Names for the mutexes used in the subsystem */ | 97 | /* Debug names for the mutexes above */ |
101 | 98 | ||
102 | static char *acpi_gbl_mutex_names[] = { | 99 | static char *acpi_gbl_mutex_names[ACPI_NUM_MUTEX] = { |
103 | "ACPI_MTX_Execute", | ||
104 | "ACPI_MTX_Interpreter", | 100 | "ACPI_MTX_Interpreter", |
105 | "ACPI_MTX_Parser", | 101 | "ACPI_MTX_Method", |
106 | "ACPI_MTX_Dispatcher", | ||
107 | "ACPI_MTX_Tables", | 102 | "ACPI_MTX_Tables", |
108 | "ACPI_MTX_OpRegions", | ||
109 | "ACPI_MTX_Namespace", | 103 | "ACPI_MTX_Namespace", |
110 | "ACPI_MTX_Events", | 104 | "ACPI_MTX_Events", |
111 | "ACPI_MTX_Hardware", | ||
112 | "ACPI_MTX_Caches", | 105 | "ACPI_MTX_Caches", |
113 | "ACPI_MTX_Memory", | 106 | "ACPI_MTX_Memory", |
114 | "ACPI_MTX_DebugCmdComplete", | 107 | "ACPI_MTX_DebugCmdComplete", |
115 | "ACPI_MTX_DebugCmdReady", | 108 | "ACPI_MTX_DebugCmdReady" |
116 | }; | 109 | }; |
117 | 110 | ||
118 | #endif | 111 | #endif |
119 | #endif | 112 | #endif |
120 | 113 | ||
114 | /* | ||
115 | * Predefined handles for spinlocks used within the subsystem. | ||
116 | * These spinlocks are created by acpi_ut_mutex_initialize | ||
117 | */ | ||
118 | #define ACPI_LOCK_GPES 0 | ||
119 | #define ACPI_LOCK_HARDWARE 1 | ||
120 | |||
121 | #define ACPI_MAX_LOCK 1 | ||
122 | #define ACPI_NUM_LOCK ACPI_MAX_LOCK+1 | ||
123 | |||
121 | /* Owner IDs are used to track namespace nodes for selective deletion */ | 124 | /* Owner IDs are used to track namespace nodes for selective deletion */ |
122 | 125 | ||
123 | typedef u8 acpi_owner_id; | 126 | typedef u8 acpi_owner_id; |