diff options
author | Bob Moore <robert.moore@intel.com> | 2005-11-02 00:00:00 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-12-10 00:26:05 -0500 |
commit | 96db255c8f014ae3497507104e8df809785a619f (patch) | |
tree | 79d2c506644370fd6c10d94bd40c419cd3bad148 /drivers/acpi/utilities/utxface.c | |
parent | 0897831bb54eb36fd9e2a22da7f0f64be1b20d09 (diff) |
[ACPI] ACPICA 20051102
Modified the subsystem initialization sequence to improve
GPE support. The GPE initialization has been split into
two parts in order to defer execution of the _PRW methods
(Power Resources for Wake) until after the hardware is
fully initialized and the SCI handler is installed. This
allows the _PRW methods to access fields protected by the
Global Lock. This will fix systems where a NO_GLOBAL_LOCK
exception has been seen during initialization.
Fixed a regression with the ConcatenateResTemplate()
ASL operator introduced in the 20051021 release.
Implemented support for "local" internal ACPI object
types within the debugger "Object" command and the
acpi_walk_namespace() external interfaces. These local
types include RegionFields, BankFields, IndexFields, Alias,
and reference objects.
Moved common AML resource handling code into a new file,
"utresrc.c". This code is shared by both the Resource
Manager and the AML Debugger.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/utilities/utxface.c')
-rw-r--r-- | drivers/acpi/utilities/utxface.c | 52 |
1 files changed, 38 insertions, 14 deletions
diff --git a/drivers/acpi/utilities/utxface.c b/drivers/acpi/utilities/utxface.c index f06bd5e5e9d1..57adc5bc02f3 100644 --- a/drivers/acpi/utilities/utxface.c +++ b/drivers/acpi/utilities/utxface.c | |||
@@ -178,10 +178,14 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
178 | /* | 178 | /* |
179 | * Initialize ACPI Event handling (Fixed and General Purpose) | 179 | * Initialize ACPI Event handling (Fixed and General Purpose) |
180 | * | 180 | * |
181 | * NOTE: We must have the hardware AND events initialized before we can | 181 | * Note1: We must have the hardware and events initialized before we can |
182 | * execute ANY control methods SAFELY. Any control method can require | 182 | * execute any control methods safely. Any control method can require |
183 | * ACPI hardware support, so the hardware MUST be initialized before | 183 | * ACPI hardware support, so the hardware must be fully initialized before |
184 | * execution! | 184 | * any method execution! |
185 | * | ||
186 | * Note2: Fixed events are initialized and enabled here. GPEs are | ||
187 | * initialized, but cannot be enabled until after the hardware is | ||
188 | * completely initialized (SCI and global_lock activated) | ||
185 | */ | 189 | */ |
186 | if (!(flags & ACPI_NO_EVENT_INIT)) { | 190 | if (!(flags & ACPI_NO_EVENT_INIT)) { |
187 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 191 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -193,8 +197,10 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
193 | } | 197 | } |
194 | } | 198 | } |
195 | 199 | ||
196 | /* Install the SCI handler and Global Lock handler */ | 200 | /* |
197 | 201 | * Install the SCI handler and Global Lock handler. This completes the | |
202 | * hardware initialization. | ||
203 | */ | ||
198 | if (!(flags & ACPI_NO_HANDLER_INIT)) { | 204 | if (!(flags & ACPI_NO_HANDLER_INIT)) { |
199 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 205 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
200 | "[Init] Installing SCI/GL handlers\n")); | 206 | "[Init] Installing SCI/GL handlers\n")); |
@@ -205,6 +211,24 @@ acpi_status acpi_enable_subsystem(u32 flags) | |||
205 | } | 211 | } |
206 | } | 212 | } |
207 | 213 | ||
214 | /* | ||
215 | * Complete the GPE initialization for the GPE blocks defined in the FADT | ||
216 | * (GPE block 0 and 1). | ||
217 | * | ||
218 | * Note1: This is where the _PRW methods are executed for the GPEs. These | ||
219 | * methods can only be executed after the SCI and Global Lock handlers are | ||
220 | * installed and initialized. | ||
221 | * | ||
222 | * Note2: Currently, there seems to be no need to run the _REG methods | ||
223 | * before execution of the _PRW methods and enabling of the GPEs. | ||
224 | */ | ||
225 | if (!(flags & ACPI_NO_EVENT_INIT)) { | ||
226 | status = acpi_ev_install_fadt_gpes(); | ||
227 | if (ACPI_FAILURE(status)) { | ||
228 | return (status); | ||
229 | } | ||
230 | } | ||
231 | |||
208 | return_ACPI_STATUS(status); | 232 | return_ACPI_STATUS(status); |
209 | } | 233 | } |
210 | 234 | ||
@@ -230,9 +254,9 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
230 | /* | 254 | /* |
231 | * Run all _REG methods | 255 | * Run all _REG methods |
232 | * | 256 | * |
233 | * NOTE: Any objects accessed | 257 | * Note: Any objects accessed by the _REG methods will be automatically |
234 | * by the _REG methods will be automatically initialized, even if they | 258 | * initialized, even if they contain executable AML (see the call to |
235 | * contain executable AML (see call to acpi_ns_initialize_objects below). | 259 | * acpi_ns_initialize_objects below). |
236 | */ | 260 | */ |
237 | if (!(flags & ACPI_NO_ADDRESS_SPACE_INIT)) { | 261 | if (!(flags & ACPI_NO_ADDRESS_SPACE_INIT)) { |
238 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 262 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -245,9 +269,9 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
245 | } | 269 | } |
246 | 270 | ||
247 | /* | 271 | /* |
248 | * Initialize the objects that remain uninitialized. This | 272 | * Initialize the objects that remain uninitialized. This runs the |
249 | * runs the executable AML that may be part of the declaration of these | 273 | * executable AML that may be part of the declaration of these objects: |
250 | * objects: operation_regions, buffer_fields, Buffers, and Packages. | 274 | * operation_regions, buffer_fields, Buffers, and Packages. |
251 | */ | 275 | */ |
252 | if (!(flags & ACPI_NO_OBJECT_INIT)) { | 276 | if (!(flags & ACPI_NO_OBJECT_INIT)) { |
253 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 277 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |
@@ -260,8 +284,8 @@ acpi_status acpi_initialize_objects(u32 flags) | |||
260 | } | 284 | } |
261 | 285 | ||
262 | /* | 286 | /* |
263 | * Initialize all device objects in the namespace | 287 | * Initialize all device objects in the namespace. This runs the device |
264 | * This runs the _STA and _INI methods. | 288 | * _STA and _INI methods. |
265 | */ | 289 | */ |
266 | if (!(flags & ACPI_NO_DEVICE_INIT)) { | 290 | if (!(flags & ACPI_NO_DEVICE_INIT)) { |
267 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, | 291 | ACPI_DEBUG_PRINT((ACPI_DB_EXEC, |