blob: 4a5dcaa268de1e6898903e88beea953b454f4852 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/******************************************************************************
2 *
3 * Module Name: utglobal - Global variables for the ACPI subsystem
4 *
5 *****************************************************************************/
6
7/*
Bob Moorea8357b02010-01-22 19:07:36 +08008 * Copyright (C) 2000 - 2010, Intel Corp.
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#define DEFINE_ACPI_GLOBALS
45
Linus Torvalds1da177e2005-04-16 15:20:36 -070046#include <acpi/acpi.h>
Len Browne2f7a772009-01-09 00:30:03 -050047#include "accommon.h"
48#include "acnamesp.h"
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
50#define _COMPONENT ACPI_UTILITIES
Bob Mooree97d6bf2008-12-30 09:45:17 +080051ACPI_MODULE_NAME("utglobal")
Linus Torvalds1da177e2005-04-16 15:20:36 -070052
Robert Moore44f6c012005-04-18 22:49:35 -040053/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -070054 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070055 * Static global variable initialization.
56 *
57 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -070058/*
59 * We want the debug switches statically initialized so they
60 * are already set when the debugger is entered.
61 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070062/* Debug switch - level and trace mask */
Len Brown4be44fc2005-08-05 00:44:28 -040063u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
Linus Torvalds1da177e2005-04-16 15:20:36 -070064
65/* Debug switch - layer (component) mask */
66
Bjorn Helgaase76f4272008-11-13 17:30:13 -060067u32 acpi_dbg_layer = 0;
Len Brown4be44fc2005-08-05 00:44:28 -040068u32 acpi_gbl_nesting_level = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070069
70/* Debugger globals */
71
Len Brown4be44fc2005-08-05 00:44:28 -040072u8 acpi_gbl_db_terminate_threads = FALSE;
73u8 acpi_gbl_abort_method = FALSE;
74u8 acpi_gbl_method_executing = FALSE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070075
76/* System flags */
77
Len Brown4be44fc2005-08-05 00:44:28 -040078u32 acpi_gbl_startup_flags = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -070079
80/* System starts uninitialized */
81
Len Brown4be44fc2005-08-05 00:44:28 -040082u8 acpi_gbl_shutdown = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -070083
Len Brown4be44fc2005-08-05 00:44:28 -040084const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070085 "\\_S0_",
86 "\\_S1_",
87 "\\_S2_",
88 "\\_S3_",
89 "\\_S4_",
90 "\\_S5_"
91};
92
Bob Moore15b8dd52009-06-29 13:39:29 +080093const char *acpi_gbl_lowest_dstate_names[ACPI_NUM_sx_w_METHODS] = {
94 "_S0W",
95 "_S1W",
96 "_S2W",
97 "_S3W",
98 "_S4W"
99};
100
101const char *acpi_gbl_highest_dstate_names[ACPI_NUM_sx_d_METHODS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700102 "_S1D",
103 "_S2D",
104 "_S3D",
105 "_S4D"
106};
107
Robert Moore44f6c012005-04-18 22:49:35 -0400108/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109 *
Bob Moore84fb2c92007-02-02 19:48:19 +0300110 * FUNCTION: acpi_format_exception
111 *
112 * PARAMETERS: Status - The acpi_status code to be formatted
113 *
114 * RETURN: A string containing the exception text. A valid pointer is
115 * always returned.
116 *
117 * DESCRIPTION: This function translates an ACPI exception into an ASCII string
118 * It is here instead of utxface.c so it is always present.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119 *
120 ******************************************************************************/
121
Bob Moore84fb2c92007-02-02 19:48:19 +0300122const char *acpi_format_exception(acpi_status status)
123{
124 const char *exception = NULL;
125
126 ACPI_FUNCTION_ENTRY();
127
128 exception = acpi_ut_validate_exception(status);
129 if (!exception) {
130
131 /* Exception code was not recognized */
132
133 ACPI_ERROR((AE_INFO,
134 "Unknown exception code: 0x%8.8X", status));
135
136 exception = "UNKNOWN_STATUS_CODE";
Andrew Morton3e0d69e2007-08-25 01:28:20 -0400137 dump_stack();
Bob Moore84fb2c92007-02-02 19:48:19 +0300138 }
139
140 return (ACPI_CAST_PTR(const char, exception));
141}
142
143ACPI_EXPORT_SYMBOL(acpi_format_exception)
144
145/*******************************************************************************
146 *
147 * Namespace globals
148 *
149 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700150/*
151 * Predefined ACPI Names (Built-in to the Interpreter)
152 *
153 * NOTES:
154 * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
155 * during the initialization sequence.
156 * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
Bob Moore81256662010-10-18 08:44:34 +0800157 * perform a Notify() operation on it. 09/2010: Changed to type Device.
158 * This still allows notifies, but does not confuse host code that
159 * searches for valid thermal_zone objects.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160 */
Bob Moore08978312005-10-21 00:00:00 -0400161const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
162 {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
163 {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
164 {"_SB_", ACPI_TYPE_DEVICE, NULL},
165 {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
Bob Moore81256662010-10-18 08:44:34 +0800166 {"_TZ_", ACPI_TYPE_DEVICE, NULL},
Bob Moore08978312005-10-21 00:00:00 -0400167 {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
168 {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
169 {"_GL_", ACPI_TYPE_MUTEX, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700170
171#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
Bob Moore08978312005-10-21 00:00:00 -0400172 {"_OSI", ACPI_TYPE_METHOD, (char *)1},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700173#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700174
Robert Moore44f6c012005-04-18 22:49:35 -0400175 /* Table terminator */
176
Bob Moore08978312005-10-21 00:00:00 -0400177 {NULL, ACPI_TYPE_ANY, NULL}
Robert Moore44f6c012005-04-18 22:49:35 -0400178};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700179
180/*
181 * Properties of the ACPI Object Types, both internal and external.
182 * The table is indexed by values of acpi_object_type
183 */
Len Brown4be44fc2005-08-05 00:44:28 -0400184const u8 acpi_gbl_ns_properties[] = {
185 ACPI_NS_NORMAL, /* 00 Any */
186 ACPI_NS_NORMAL, /* 01 Number */
187 ACPI_NS_NORMAL, /* 02 String */
188 ACPI_NS_NORMAL, /* 03 Buffer */
189 ACPI_NS_NORMAL, /* 04 Package */
190 ACPI_NS_NORMAL, /* 05 field_unit */
191 ACPI_NS_NEWSCOPE, /* 06 Device */
192 ACPI_NS_NORMAL, /* 07 Event */
193 ACPI_NS_NEWSCOPE, /* 08 Method */
194 ACPI_NS_NORMAL, /* 09 Mutex */
195 ACPI_NS_NORMAL, /* 10 Region */
196 ACPI_NS_NEWSCOPE, /* 11 Power */
197 ACPI_NS_NEWSCOPE, /* 12 Processor */
198 ACPI_NS_NEWSCOPE, /* 13 Thermal */
199 ACPI_NS_NORMAL, /* 14 buffer_field */
200 ACPI_NS_NORMAL, /* 15 ddb_handle */
201 ACPI_NS_NORMAL, /* 16 Debug Object */
202 ACPI_NS_NORMAL, /* 17 def_field */
203 ACPI_NS_NORMAL, /* 18 bank_field */
204 ACPI_NS_NORMAL, /* 19 index_field */
205 ACPI_NS_NORMAL, /* 20 Reference */
206 ACPI_NS_NORMAL, /* 21 Alias */
207 ACPI_NS_NORMAL, /* 22 method_alias */
208 ACPI_NS_NORMAL, /* 23 Notify */
209 ACPI_NS_NORMAL, /* 24 Address Handler */
210 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
211 ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
212 ACPI_NS_NEWSCOPE, /* 27 Scope */
213 ACPI_NS_NORMAL, /* 28 Extra */
214 ACPI_NS_NORMAL, /* 29 Data */
215 ACPI_NS_NORMAL /* 30 Invalid */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700216};
217
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218/* Hex to ASCII conversion table */
219
Len Brown4be44fc2005-08-05 00:44:28 -0400220static const char acpi_gbl_hex_to_ascii[] = {
221 '0', '1', '2', '3', '4', '5', '6', '7',
222 '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
Robert Moore44f6c012005-04-18 22:49:35 -0400223};
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224
Robert Moore44f6c012005-04-18 22:49:35 -0400225/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700226 *
227 * FUNCTION: acpi_ut_hex_to_ascii_char
228 *
229 * PARAMETERS: Integer - Contains the hex digit
230 * Position - bit position of the digit within the
Robert Moore44f6c012005-04-18 22:49:35 -0400231 * integer (multiple of 4)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700232 *
Robert Moore44f6c012005-04-18 22:49:35 -0400233 * RETURN: The converted Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234 *
Robert Moore44f6c012005-04-18 22:49:35 -0400235 * DESCRIPTION: Convert a hex digit to an Ascii character
Linus Torvalds1da177e2005-04-16 15:20:36 -0700236 *
Robert Moore44f6c012005-04-18 22:49:35 -0400237 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700238
Bob Moore5df7e6c2010-01-21 10:06:32 +0800239char acpi_ut_hex_to_ascii_char(u64 integer, u32 position)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700240{
241
242 return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]);
243}
244
Linus Torvalds1da177e2005-04-16 15:20:36 -0700245/******************************************************************************
246 *
247 * Event and Hardware globals
248 *
249 ******************************************************************************/
250
Len Brown4be44fc2005-08-05 00:44:28 -0400251struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700252 /* Name Parent Register Register Bit Position Register Bit Mask */
253
Len Brown4be44fc2005-08-05 00:44:28 -0400254 /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
255 ACPI_BITPOSITION_TIMER_STATUS,
256 ACPI_BITMASK_TIMER_STATUS},
257 /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS,
258 ACPI_BITPOSITION_BUS_MASTER_STATUS,
259 ACPI_BITMASK_BUS_MASTER_STATUS},
260 /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
261 ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,
262 ACPI_BITMASK_GLOBAL_LOCK_STATUS},
263 /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
264 ACPI_BITPOSITION_POWER_BUTTON_STATUS,
265 ACPI_BITMASK_POWER_BUTTON_STATUS},
266 /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS,
267 ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,
268 ACPI_BITMASK_SLEEP_BUTTON_STATUS},
269 /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS,
270 ACPI_BITPOSITION_RT_CLOCK_STATUS,
271 ACPI_BITMASK_RT_CLOCK_STATUS},
272 /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
273 ACPI_BITPOSITION_WAKE_STATUS,
274 ACPI_BITMASK_WAKE_STATUS},
275 /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS,
276 ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,
277 ACPI_BITMASK_PCIEXP_WAKE_STATUS},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700278
Len Brown4be44fc2005-08-05 00:44:28 -0400279 /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
280 ACPI_BITPOSITION_TIMER_ENABLE,
281 ACPI_BITMASK_TIMER_ENABLE},
282 /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
283 ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,
284 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
285 /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
286 ACPI_BITPOSITION_POWER_BUTTON_ENABLE,
287 ACPI_BITMASK_POWER_BUTTON_ENABLE},
288 /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
289 ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,
290 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
291 /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE,
292 ACPI_BITPOSITION_RT_CLOCK_ENABLE,
293 ACPI_BITMASK_RT_CLOCK_ENABLE},
Len Brown4be44fc2005-08-05 00:44:28 -0400294 /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE,
295 ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,
296 ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700297
Len Brown4be44fc2005-08-05 00:44:28 -0400298 /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
299 ACPI_BITPOSITION_SCI_ENABLE,
300 ACPI_BITMASK_SCI_ENABLE},
301 /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL,
302 ACPI_BITPOSITION_BUS_MASTER_RLD,
303 ACPI_BITMASK_BUS_MASTER_RLD},
304 /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL,
305 ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,
306 ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
Bob Moore82d79b82009-02-18 14:31:05 +0800307 /* ACPI_BITREG_SLEEP_TYPE */ {ACPI_REGISTER_PM1_CONTROL,
308 ACPI_BITPOSITION_SLEEP_TYPE,
309 ACPI_BITMASK_SLEEP_TYPE},
Len Brown4be44fc2005-08-05 00:44:28 -0400310 /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL,
311 ACPI_BITPOSITION_SLEEP_ENABLE,
312 ACPI_BITMASK_SLEEP_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313
Len Brown4be44fc2005-08-05 00:44:28 -0400314 /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL,
315 ACPI_BITPOSITION_ARB_DISABLE,
316 ACPI_BITMASK_ARB_DISABLE}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700317};
318
Len Brown4be44fc2005-08-05 00:44:28 -0400319struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = {
320 /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS,
321 ACPI_BITREG_TIMER_ENABLE,
322 ACPI_BITMASK_TIMER_STATUS,
323 ACPI_BITMASK_TIMER_ENABLE},
324 /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS,
325 ACPI_BITREG_GLOBAL_LOCK_ENABLE,
326 ACPI_BITMASK_GLOBAL_LOCK_STATUS,
327 ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
328 /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS,
329 ACPI_BITREG_POWER_BUTTON_ENABLE,
330 ACPI_BITMASK_POWER_BUTTON_STATUS,
331 ACPI_BITMASK_POWER_BUTTON_ENABLE},
332 /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS,
333 ACPI_BITREG_SLEEP_BUTTON_ENABLE,
334 ACPI_BITMASK_SLEEP_BUTTON_STATUS,
335 ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
336 /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS,
337 ACPI_BITREG_RT_CLOCK_ENABLE,
338 ACPI_BITMASK_RT_CLOCK_STATUS,
339 ACPI_BITMASK_RT_CLOCK_ENABLE},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700340};
341
Robert Moore44f6c012005-04-18 22:49:35 -0400342/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700343 *
344 * FUNCTION: acpi_ut_get_region_name
345 *
346 * PARAMETERS: None.
347 *
348 * RETURN: Status
349 *
350 * DESCRIPTION: Translate a Space ID into a name string (Debug only)
351 *
Robert Moore44f6c012005-04-18 22:49:35 -0400352 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700353
354/* Region type decoding */
355
Len Brown4be44fc2005-08-05 00:44:28 -0400356const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700357 "SystemMemory",
358 "SystemIO",
359 "PCI_Config",
360 "EmbeddedControl",
361 "SMBus",
Bob Moore34830722008-11-12 15:17:41 +0800362 "SystemCMOS",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700363 "PCIBARTarget",
Lin Ming3db20be2009-06-24 11:25:17 +0800364 "IPMI",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700365 "DataTable"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700366};
367
Len Brown4be44fc2005-08-05 00:44:28 -0400368char *acpi_ut_get_region_name(u8 space_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700369{
370
Len Brown4be44fc2005-08-05 00:44:28 -0400371 if (space_id >= ACPI_USER_REGION_BEGIN) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400372 return ("UserDefinedRegion");
Len Brown4be44fc2005-08-05 00:44:28 -0400373 } else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400374 return ("InvalidSpaceId");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700375 }
376
Bob Mooredefba1d2005-12-16 17:05:00 -0500377 return (ACPI_CAST_PTR(char, acpi_gbl_region_types[space_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700378}
379
Robert Moore44f6c012005-04-18 22:49:35 -0400380/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700381 *
382 * FUNCTION: acpi_ut_get_event_name
383 *
384 * PARAMETERS: None.
385 *
386 * RETURN: Status
387 *
388 * DESCRIPTION: Translate a Event ID into a name string (Debug only)
389 *
Robert Moore44f6c012005-04-18 22:49:35 -0400390 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700391
392/* Event type decoding */
393
Len Brown4be44fc2005-08-05 00:44:28 -0400394static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700395 "PM_Timer",
Bob Moore08978312005-10-21 00:00:00 -0400396 "GlobalLock",
397 "PowerButton",
398 "SleepButton",
399 "RealTimeClock",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700400};
401
Len Brown4be44fc2005-08-05 00:44:28 -0400402char *acpi_ut_get_event_name(u32 event_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700403{
404
Len Brown4be44fc2005-08-05 00:44:28 -0400405 if (event_id > ACPI_EVENT_MAX) {
Bob Mooreb229cf92006-04-21 17:15:00 -0400406 return ("InvalidEventID");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700407 }
408
Bob Moore4a90c7e2006-01-13 16:22:00 -0500409 return (ACPI_CAST_PTR(char, acpi_gbl_event_types[event_id]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700410}
411
Robert Moore44f6c012005-04-18 22:49:35 -0400412/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700413 *
414 * FUNCTION: acpi_ut_get_type_name
415 *
416 * PARAMETERS: None.
417 *
418 * RETURN: Status
419 *
420 * DESCRIPTION: Translate a Type ID into a name string (Debug only)
421 *
Robert Moore44f6c012005-04-18 22:49:35 -0400422 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700423
424/*
425 * Elements of acpi_gbl_ns_type_names below must match
426 * one-to-one with values of acpi_object_type
427 *
Robert Moore44f6c012005-04-18 22:49:35 -0400428 * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
429 * when stored in a table it really means that we have thus far seen no
430 * evidence to indicate what type is actually going to be stored for this entry.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700431 */
Len Brown4be44fc2005-08-05 00:44:28 -0400432static const char acpi_gbl_bad_type[] = "UNDEFINED";
Linus Torvalds1da177e2005-04-16 15:20:36 -0700433
Robert Moore44f6c012005-04-18 22:49:35 -0400434/* Printable names of the ACPI object types */
435
Len Brown4be44fc2005-08-05 00:44:28 -0400436static const char *acpi_gbl_ns_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700437 /* 00 */ "Untyped",
438 /* 01 */ "Integer",
439 /* 02 */ "String",
440 /* 03 */ "Buffer",
441 /* 04 */ "Package",
Bob Moore08978312005-10-21 00:00:00 -0400442 /* 05 */ "FieldUnit",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700443 /* 06 */ "Device",
444 /* 07 */ "Event",
445 /* 08 */ "Method",
446 /* 09 */ "Mutex",
447 /* 10 */ "Region",
448 /* 11 */ "Power",
449 /* 12 */ "Processor",
450 /* 13 */ "Thermal",
Bob Moore08978312005-10-21 00:00:00 -0400451 /* 14 */ "BufferField",
452 /* 15 */ "DdbHandle",
453 /* 16 */ "DebugObject",
454 /* 17 */ "RegionField",
455 /* 18 */ "BankField",
456 /* 19 */ "IndexField",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700457 /* 20 */ "Reference",
458 /* 21 */ "Alias",
Bob Moore08978312005-10-21 00:00:00 -0400459 /* 22 */ "MethodAlias",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700460 /* 23 */ "Notify",
Bob Moore08978312005-10-21 00:00:00 -0400461 /* 24 */ "AddrHandler",
462 /* 25 */ "ResourceDesc",
463 /* 26 */ "ResourceFld",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700464 /* 27 */ "Scope",
465 /* 28 */ "Extra",
466 /* 29 */ "Data",
467 /* 30 */ "Invalid"
468};
469
Len Brown4be44fc2005-08-05 00:44:28 -0400470char *acpi_ut_get_type_name(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700471{
472
Len Brown4be44fc2005-08-05 00:44:28 -0400473 if (type > ACPI_TYPE_INVALID) {
Bob Moore4a90c7e2006-01-13 16:22:00 -0500474 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700475 }
476
Bob Moore4a90c7e2006-01-13 16:22:00 -0500477 return (ACPI_CAST_PTR(char, acpi_gbl_ns_type_names[type]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700478}
479
Len Brown4be44fc2005-08-05 00:44:28 -0400480char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700481{
482
Len Brown4be44fc2005-08-05 00:44:28 -0400483 if (!obj_desc) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700484 return ("[NULL Object Descriptor]");
485 }
486
Bob Moore3371c192009-02-18 14:44:03 +0800487 return (acpi_ut_get_type_name(obj_desc->common.type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700488}
489
Robert Moore44f6c012005-04-18 22:49:35 -0400490/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700491 *
492 * FUNCTION: acpi_ut_get_node_name
493 *
494 * PARAMETERS: Object - A namespace node
495 *
496 * RETURN: Pointer to a string
497 *
498 * DESCRIPTION: Validate the node and return the node's ACPI name.
499 *
Robert Moore44f6c012005-04-18 22:49:35 -0400500 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700501
Len Brown4be44fc2005-08-05 00:44:28 -0400502char *acpi_ut_get_node_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700503{
Len Brown4be44fc2005-08-05 00:44:28 -0400504 struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700505
506 /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
507
Len Brown4be44fc2005-08-05 00:44:28 -0400508 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700509 return ("NULL");
510 }
511
512 /* Check for Root node */
513
Len Brown4be44fc2005-08-05 00:44:28 -0400514 if ((object == ACPI_ROOT_OBJECT) || (object == acpi_gbl_root_node)) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700515 return ("\"\\\" ");
516 }
517
518 /* Descriptor must be a namespace node */
519
Bob Moore616861242006-03-17 16:44:00 -0500520 if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700521 return ("####");
522 }
523
524 /* Name must be a valid ACPI name */
525
Bob Moorec51a4de2005-11-17 13:07:00 -0500526 if (!acpi_ut_valid_acpi_name(node->name.integer)) {
Bob Moore3d81b232007-02-02 19:48:19 +0300527 node->name.integer = acpi_ut_repair_name(node->name.ascii);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700528 }
529
530 /* Return the name */
531
532 return (node->name.ascii);
533}
534
Robert Moore44f6c012005-04-18 22:49:35 -0400535/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700536 *
537 * FUNCTION: acpi_ut_get_descriptor_name
538 *
539 * PARAMETERS: Object - An ACPI object
540 *
541 * RETURN: Pointer to a string
542 *
543 * DESCRIPTION: Validate object and return the descriptor type
544 *
Robert Moore44f6c012005-04-18 22:49:35 -0400545 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700546
Robert Moore44f6c012005-04-18 22:49:35 -0400547/* Printable names of object descriptor types */
548
Len Brown4be44fc2005-08-05 00:44:28 -0400549static const char *acpi_gbl_desc_type_names[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700550 /* 00 */ "Invalid",
551 /* 01 */ "Cached",
552 /* 02 */ "State-Generic",
553 /* 03 */ "State-Update",
554 /* 04 */ "State-Package",
555 /* 05 */ "State-Control",
Bob Moore08978312005-10-21 00:00:00 -0400556 /* 06 */ "State-RootParseScope",
557 /* 07 */ "State-ParseScope",
558 /* 08 */ "State-WalkScope",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700559 /* 09 */ "State-Result",
560 /* 10 */ "State-Notify",
561 /* 11 */ "State-Thread",
562 /* 12 */ "Walk",
563 /* 13 */ "Parser",
564 /* 14 */ "Operand",
565 /* 15 */ "Node"
566};
567
Len Brown4be44fc2005-08-05 00:44:28 -0400568char *acpi_ut_get_descriptor_name(void *object)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700569{
570
Len Brown4be44fc2005-08-05 00:44:28 -0400571 if (!object) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700572 return ("NULL OBJECT");
573 }
574
Len Brown4be44fc2005-08-05 00:44:28 -0400575 if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
Bob Mooredefba1d2005-12-16 17:05:00 -0500576 return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700577 }
578
Bob Mooredefba1d2005-12-16 17:05:00 -0500579 return (ACPI_CAST_PTR(char,
580 acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE
581 (object)]));
Linus Torvalds1da177e2005-04-16 15:20:36 -0700582
583}
584
Bob Mooref02a99a2008-08-04 10:40:09 +0800585/*******************************************************************************
586 *
587 * FUNCTION: acpi_ut_get_reference_name
588 *
589 * PARAMETERS: Object - An ACPI reference object
590 *
591 * RETURN: Pointer to a string
592 *
593 * DESCRIPTION: Decode a reference object sub-type to a string.
594 *
595 ******************************************************************************/
596
597/* Printable names of reference object sub-types */
598
Bob Moore1044f1f2008-09-27 11:08:41 +0800599static const char *acpi_gbl_ref_class_names[] = {
600 /* 00 */ "Local",
601 /* 01 */ "Argument",
602 /* 02 */ "RefOf",
603 /* 03 */ "Index",
604 /* 04 */ "DdbHandle",
605 /* 05 */ "Named Object",
606 /* 06 */ "Debug"
607};
608
Bob Mooref02a99a2008-08-04 10:40:09 +0800609const char *acpi_ut_get_reference_name(union acpi_operand_object *object)
610{
Bob Moore1044f1f2008-09-27 11:08:41 +0800611 if (!object)
612 return "NULL Object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800613
Bob Moore1044f1f2008-09-27 11:08:41 +0800614 if (ACPI_GET_DESCRIPTOR_TYPE(object) != ACPI_DESC_TYPE_OPERAND)
615 return "Not an Operand object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800616
Bob Moore1044f1f2008-09-27 11:08:41 +0800617 if (object->common.type != ACPI_TYPE_LOCAL_REFERENCE)
618 return "Not a Reference object";
Bob Mooref02a99a2008-08-04 10:40:09 +0800619
Bob Moore1044f1f2008-09-27 11:08:41 +0800620 if (object->reference.class > ACPI_REFCLASS_MAX)
621 return "Unknown Reference class";
Bob Mooref02a99a2008-08-04 10:40:09 +0800622
Bob Moore1044f1f2008-09-27 11:08:41 +0800623 return acpi_gbl_ref_class_names[object->reference.class];
Bob Mooref02a99a2008-08-04 10:40:09 +0800624}
625
Linus Torvalds1da177e2005-04-16 15:20:36 -0700626#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
627/*
628 * Strings and procedures used for debug only
629 */
630
Robert Moore44f6c012005-04-18 22:49:35 -0400631/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700632 *
633 * FUNCTION: acpi_ut_get_mutex_name
634 *
Robert Moore44f6c012005-04-18 22:49:35 -0400635 * PARAMETERS: mutex_id - The predefined ID for this mutex.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700636 *
Robert Moore44f6c012005-04-18 22:49:35 -0400637 * RETURN: String containing the name of the mutex. Always returns a valid
638 * pointer.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700639 *
640 * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
641 *
Robert Moore44f6c012005-04-18 22:49:35 -0400642 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700643
Len Brown4be44fc2005-08-05 00:44:28 -0400644char *acpi_ut_get_mutex_name(u32 mutex_id)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700645{
646
Bob Moore4c90ece2006-06-08 16:29:00 -0400647 if (mutex_id > ACPI_MAX_MUTEX) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700648 return ("Invalid Mutex ID");
649 }
650
651 return (acpi_gbl_mutex_names[mutex_id]);
652}
Zhang Rui514d18d2008-04-10 19:06:44 +0400653
654/*******************************************************************************
655 *
656 * FUNCTION: acpi_ut_get_notify_name
657 *
658 * PARAMETERS: notify_value - Value from the Notify() request
659 *
660 * RETURN: String corresponding to the Notify Value.
661 *
662 * DESCRIPTION: Translate a Notify Value to a notify namestring.
663 *
664 ******************************************************************************/
665
666/* Names for Notify() values, used for debug output */
667
668static const char *acpi_gbl_notify_value_names[] = {
669 "Bus Check",
670 "Device Check",
671 "Device Wake",
672 "Eject Request",
673 "Device Check Light",
674 "Frequency Mismatch",
675 "Bus Mode Mismatch",
676 "Power Fault",
677 "Capabilities Check",
678 "Device PLD Check",
679 "Reserved",
680 "System Locality Update"
681};
682
683const char *acpi_ut_get_notify_name(u32 notify_value)
684{
685
686 if (notify_value <= ACPI_NOTIFY_MAX) {
687 return (acpi_gbl_notify_value_names[notify_value]);
688 } else if (notify_value <= ACPI_MAX_SYS_NOTIFY) {
689 return ("Reserved");
690 } else { /* Greater or equal to 0x80 */
691
692 return ("**Device Specific**");
693 }
694}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700695#endif
696
Robert Moore44f6c012005-04-18 22:49:35 -0400697/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700698 *
699 * FUNCTION: acpi_ut_valid_object_type
700 *
701 * PARAMETERS: Type - Object type to be validated
702 *
Robert Moore44f6c012005-04-18 22:49:35 -0400703 * RETURN: TRUE if valid object type, FALSE otherwise
Linus Torvalds1da177e2005-04-16 15:20:36 -0700704 *
705 * DESCRIPTION: Validate an object type
706 *
Robert Moore44f6c012005-04-18 22:49:35 -0400707 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700708
Len Brown4be44fc2005-08-05 00:44:28 -0400709u8 acpi_ut_valid_object_type(acpi_object_type type)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700710{
711
Len Brown4be44fc2005-08-05 00:44:28 -0400712 if (type > ACPI_TYPE_LOCAL_MAX) {
Bob Moore52fc0b02006-10-02 00:00:00 -0400713
Linus Torvalds1da177e2005-04-16 15:20:36 -0700714 /* Note: Assumes all TYPEs are contiguous (external/local) */
715
716 return (FALSE);
717 }
718
719 return (TRUE);
720}
721
Robert Moore44f6c012005-04-18 22:49:35 -0400722/*******************************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -0700723 *
Linus Torvalds1da177e2005-04-16 15:20:36 -0700724 * FUNCTION: acpi_ut_init_globals
725 *
Robert Moore44f6c012005-04-18 22:49:35 -0400726 * PARAMETERS: None
727 *
Yi Yangb417d402008-08-04 10:30:09 +0800728 * RETURN: Status
Linus Torvalds1da177e2005-04-16 15:20:36 -0700729 *
730 * DESCRIPTION: Init library globals. All globals that require specific
731 * initialization should be initialized here!
732 *
Robert Moore44f6c012005-04-18 22:49:35 -0400733 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700734
Yi Yangb417d402008-08-04 10:30:09 +0800735acpi_status acpi_ut_init_globals(void)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700736{
Len Brown4be44fc2005-08-05 00:44:28 -0400737 acpi_status status;
738 u32 i;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700739
Bob Mooreb229cf92006-04-21 17:15:00 -0400740 ACPI_FUNCTION_TRACE(ut_init_globals);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700741
Robert Moore73459f72005-06-24 00:00:00 -0400742 /* Create all memory caches */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700743
Len Brown4be44fc2005-08-05 00:44:28 -0400744 status = acpi_ut_create_caches();
745 if (ACPI_FAILURE(status)) {
Yi Yangb417d402008-08-04 10:30:09 +0800746 return_ACPI_STATUS(status);
Robert Moore73459f72005-06-24 00:00:00 -0400747 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700748
Linus Torvalds1da177e2005-04-16 15:20:36 -0700749 /* Mutex locked flags */
750
Bob Moore4c90ece2006-06-08 16:29:00 -0400751 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
Len Brown4be44fc2005-08-05 00:44:28 -0400752 acpi_gbl_mutex_info[i].mutex = NULL;
753 acpi_gbl_mutex_info[i].thread_id = ACPI_MUTEX_NOT_ACQUIRED;
754 acpi_gbl_mutex_info[i].use_count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700755 }
756
Bob Moore28f55eb2005-12-02 18:27:00 -0500757 for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) {
758 acpi_gbl_owner_id_mask[i] = 0;
759 }
Bob Mooreec41f192009-02-18 15:03:30 +0800760
761 /* Last owner_iD is never valid */
762
763 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;
Bob Moore28f55eb2005-12-02 18:27:00 -0500764
Linus Torvalds1da177e2005-04-16 15:20:36 -0700765 /* GPE support */
766
Len Brown4be44fc2005-08-05 00:44:28 -0400767 acpi_gbl_gpe_xrupt_list_head = NULL;
768 acpi_gbl_gpe_fadt_blocks[0] = NULL;
769 acpi_gbl_gpe_fadt_blocks[1] = NULL;
Bob Mooree97d6bf2008-12-30 09:45:17 +0800770 acpi_current_gpe_count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700771
Lin Ming3e08e2d2008-04-10 19:06:38 +0400772 /* Global handlers */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700773
Len Brown4be44fc2005-08-05 00:44:28 -0400774 acpi_gbl_system_notify.handler = NULL;
775 acpi_gbl_device_notify.handler = NULL;
776 acpi_gbl_exception_handler = NULL;
777 acpi_gbl_init_handler = NULL;
Lin Ming3e08e2d2008-04-10 19:06:38 +0400778 acpi_gbl_table_handler = NULL;
Lin Mingb0ed7a92010-08-06 09:35:51 +0800779 acpi_gbl_interface_handler = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700780
Linus Torvalds1da177e2005-04-16 15:20:36 -0700781 /* Global Lock support */
782
Bob Moore967440e32006-06-23 17:04:00 -0400783 acpi_gbl_global_lock_semaphore = NULL;
Bob Moorec81da662007-02-02 19:48:18 +0300784 acpi_gbl_global_lock_mutex = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400785 acpi_gbl_global_lock_acquired = FALSE;
Len Brown4be44fc2005-08-05 00:44:28 -0400786 acpi_gbl_global_lock_handle = 0;
Bob Moore009c4cbe2008-11-12 15:34:52 +0800787 acpi_gbl_global_lock_present = FALSE;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700788
789 /* Miscellaneous variables */
790
Bob Moore43323cb2010-04-07 11:05:11 +0800791 acpi_gbl_DSDT = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400792 acpi_gbl_cm_single_step = FALSE;
793 acpi_gbl_db_terminate_threads = FALSE;
794 acpi_gbl_shutdown = FALSE;
795 acpi_gbl_ns_lookup_count = 0;
796 acpi_gbl_ps_find_count = 0;
797 acpi_gbl_acpi_hardware_present = TRUE;
Bob Moore28f55eb2005-12-02 18:27:00 -0500798 acpi_gbl_last_owner_id_index = 0;
799 acpi_gbl_next_owner_id_offset = 0;
Bob Moore50eca3e2005-09-30 19:03:00 -0400800 acpi_gbl_trace_method_name = 0;
801 acpi_gbl_trace_dbg_level = 0;
802 acpi_gbl_trace_dbg_layer = 0;
Len Brown4be44fc2005-08-05 00:44:28 -0400803 acpi_gbl_debugger_configuration = DEBUGGER_THREADING;
804 acpi_gbl_db_output_flags = ACPI_DB_CONSOLE_OUTPUT;
Bob Moore7f071902009-03-19 09:37:47 +0800805 acpi_gbl_osi_data = 0;
Lin Mingb0ed7a92010-08-06 09:35:51 +0800806 acpi_gbl_osi_mutex = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700807
808 /* Hardware oriented */
809
Len Brown4be44fc2005-08-05 00:44:28 -0400810 acpi_gbl_events_initialized = FALSE;
811 acpi_gbl_system_awake_and_running = TRUE;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700812
813 /* Namespace */
814
Lin Ming7f0c8262009-08-13 14:03:15 +0800815 acpi_gbl_module_code_list = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400816 acpi_gbl_root_node = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700817 acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
Bob Moore616861242006-03-17 16:44:00 -0500818 acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;
Len Brown4be44fc2005-08-05 00:44:28 -0400819 acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
Alexey Starikovskiyc45b5c02010-05-26 11:53:07 +0800820 acpi_gbl_root_node_struct.parent = NULL;
Len Brown4be44fc2005-08-05 00:44:28 -0400821 acpi_gbl_root_node_struct.child = NULL;
822 acpi_gbl_root_node_struct.peer = NULL;
823 acpi_gbl_root_node_struct.object = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700824
825#ifdef ACPI_DEBUG_OUTPUT
Bob Moore1d18c052008-04-10 19:06:40 +0400826 acpi_gbl_lowest_stack_pointer = ACPI_CAST_PTR(acpi_size, ACPI_SIZE_MAX);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700827#endif
828
Bob Moored41eb992007-02-02 19:48:23 +0300829#ifdef ACPI_DBG_TRACK_ALLOCATIONS
830 acpi_gbl_display_final_mem_stats = FALSE;
831#endif
832
Yi Yangb417d402008-08-04 10:30:09 +0800833 return_ACPI_STATUS(AE_OK);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700834}
Bob Moore83135242006-10-03 00:00:00 -0400835
Bob Mooree97d6bf2008-12-30 09:45:17 +0800836ACPI_EXPORT_SYMBOL(acpi_gbl_FADT)
Bob Moore83135242006-10-03 00:00:00 -0400837ACPI_EXPORT_SYMBOL(acpi_dbg_level)
Bob Moore1044f1f2008-09-27 11:08:41 +0800838ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
Bob Mooree97d6bf2008-12-30 09:45:17 +0800839ACPI_EXPORT_SYMBOL(acpi_current_gpe_count)