diff options
Diffstat (limited to 'drivers/acpi/acpica/utinit.c')
-rw-r--r-- | drivers/acpi/acpica/utinit.c | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/utinit.c b/drivers/acpi/acpica/utinit.c index 5f56fc49021e..77120ec9ea86 100644 --- a/drivers/acpi/acpica/utinit.c +++ b/drivers/acpi/acpica/utinit.c | |||
@@ -102,6 +102,151 @@ static void acpi_ut_free_gpe_lists(void) | |||
102 | } | 102 | } |
103 | #endif /* !ACPI_REDUCED_HARDWARE */ | 103 | #endif /* !ACPI_REDUCED_HARDWARE */ |
104 | 104 | ||
105 | /******************************************************************************* | ||
106 | * | ||
107 | * FUNCTION: acpi_ut_init_globals | ||
108 | * | ||
109 | * PARAMETERS: None | ||
110 | * | ||
111 | * RETURN: Status | ||
112 | * | ||
113 | * DESCRIPTION: Initialize ACPICA globals. All globals that require specific | ||
114 | * initialization should be initialized here. This allows for | ||
115 | * a warm restart. | ||
116 | * | ||
117 | ******************************************************************************/ | ||
118 | |||
119 | acpi_status acpi_ut_init_globals(void) | ||
120 | { | ||
121 | acpi_status status; | ||
122 | u32 i; | ||
123 | |||
124 | ACPI_FUNCTION_TRACE(ut_init_globals); | ||
125 | |||
126 | /* Create all memory caches */ | ||
127 | |||
128 | status = acpi_ut_create_caches(); | ||
129 | if (ACPI_FAILURE(status)) { | ||
130 | return_ACPI_STATUS(status); | ||
131 | } | ||
132 | |||
133 | /* Address Range lists */ | ||
134 | |||
135 | for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) { | ||
136 | acpi_gbl_address_range_list[i] = NULL; | ||
137 | } | ||
138 | |||
139 | /* Mutex locked flags */ | ||
140 | |||
141 | for (i = 0; i < ACPI_NUM_MUTEX; i++) { | ||
142 | acpi_gbl_mutex_info[i].mutex = NULL; | ||
143 | acpi_gbl_mutex_info[i].thread_id = ACPI_MUTEX_NOT_ACQUIRED; | ||
144 | acpi_gbl_mutex_info[i].use_count = 0; | ||
145 | } | ||
146 | |||
147 | for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) { | ||
148 | acpi_gbl_owner_id_mask[i] = 0; | ||
149 | } | ||
150 | |||
151 | /* Last owner_ID is never valid */ | ||
152 | |||
153 | acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; | ||
154 | |||
155 | /* Event counters */ | ||
156 | |||
157 | acpi_method_count = 0; | ||
158 | acpi_sci_count = 0; | ||
159 | acpi_gpe_count = 0; | ||
160 | |||
161 | for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { | ||
162 | acpi_fixed_event_count[i] = 0; | ||
163 | } | ||
164 | |||
165 | #if (!ACPI_REDUCED_HARDWARE) | ||
166 | |||
167 | /* GPE/SCI support */ | ||
168 | |||
169 | acpi_gbl_all_gpes_initialized = FALSE; | ||
170 | acpi_gbl_gpe_xrupt_list_head = NULL; | ||
171 | acpi_gbl_gpe_fadt_blocks[0] = NULL; | ||
172 | acpi_gbl_gpe_fadt_blocks[1] = NULL; | ||
173 | acpi_current_gpe_count = 0; | ||
174 | |||
175 | acpi_gbl_global_event_handler = NULL; | ||
176 | acpi_gbl_sci_handler_list = NULL; | ||
177 | |||
178 | #endif /* !ACPI_REDUCED_HARDWARE */ | ||
179 | |||
180 | /* Global handlers */ | ||
181 | |||
182 | acpi_gbl_global_notify[0].handler = NULL; | ||
183 | acpi_gbl_global_notify[1].handler = NULL; | ||
184 | acpi_gbl_exception_handler = NULL; | ||
185 | acpi_gbl_init_handler = NULL; | ||
186 | acpi_gbl_table_handler = NULL; | ||
187 | acpi_gbl_interface_handler = NULL; | ||
188 | |||
189 | /* Global Lock support */ | ||
190 | |||
191 | acpi_gbl_global_lock_semaphore = NULL; | ||
192 | acpi_gbl_global_lock_mutex = NULL; | ||
193 | acpi_gbl_global_lock_acquired = FALSE; | ||
194 | acpi_gbl_global_lock_handle = 0; | ||
195 | acpi_gbl_global_lock_present = FALSE; | ||
196 | |||
197 | /* Miscellaneous variables */ | ||
198 | |||
199 | acpi_gbl_DSDT = NULL; | ||
200 | acpi_gbl_cm_single_step = FALSE; | ||
201 | acpi_gbl_shutdown = FALSE; | ||
202 | acpi_gbl_ns_lookup_count = 0; | ||
203 | acpi_gbl_ps_find_count = 0; | ||
204 | acpi_gbl_acpi_hardware_present = TRUE; | ||
205 | acpi_gbl_last_owner_id_index = 0; | ||
206 | acpi_gbl_next_owner_id_offset = 0; | ||
207 | acpi_gbl_trace_dbg_level = 0; | ||
208 | acpi_gbl_trace_dbg_layer = 0; | ||
209 | acpi_gbl_debugger_configuration = DEBUGGER_THREADING; | ||
210 | acpi_gbl_osi_mutex = NULL; | ||
211 | acpi_gbl_reg_methods_executed = FALSE; | ||
212 | |||
213 | /* Hardware oriented */ | ||
214 | |||
215 | acpi_gbl_events_initialized = FALSE; | ||
216 | acpi_gbl_system_awake_and_running = TRUE; | ||
217 | |||
218 | /* Namespace */ | ||
219 | |||
220 | acpi_gbl_module_code_list = NULL; | ||
221 | acpi_gbl_root_node = NULL; | ||
222 | acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME; | ||
223 | acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED; | ||
224 | acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE; | ||
225 | acpi_gbl_root_node_struct.parent = NULL; | ||
226 | acpi_gbl_root_node_struct.child = NULL; | ||
227 | acpi_gbl_root_node_struct.peer = NULL; | ||
228 | acpi_gbl_root_node_struct.object = NULL; | ||
229 | |||
230 | #ifdef ACPI_DISASSEMBLER | ||
231 | acpi_gbl_external_list = NULL; | ||
232 | acpi_gbl_num_external_methods = 0; | ||
233 | acpi_gbl_resolved_external_methods = 0; | ||
234 | #endif | ||
235 | |||
236 | #ifdef ACPI_DEBUG_OUTPUT | ||
237 | acpi_gbl_lowest_stack_pointer = ACPI_CAST_PTR(acpi_size, ACPI_SIZE_MAX); | ||
238 | #endif | ||
239 | |||
240 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS | ||
241 | acpi_gbl_display_final_mem_stats = FALSE; | ||
242 | acpi_gbl_disable_mem_tracking = FALSE; | ||
243 | #endif | ||
244 | |||
245 | ACPI_DEBUGGER_EXEC(acpi_gbl_db_terminate_threads = FALSE); | ||
246 | |||
247 | return_ACPI_STATUS(AE_OK); | ||
248 | } | ||
249 | |||
105 | /****************************************************************************** | 250 | /****************************************************************************** |
106 | * | 251 | * |
107 | * FUNCTION: acpi_ut_terminate | 252 | * FUNCTION: acpi_ut_terminate |