diff options
Diffstat (limited to 'drivers/acpi/acpi_memhotplug.c')
-rw-r--r-- | drivers/acpi/acpi_memhotplug.c | 67 |
1 files changed, 26 insertions, 41 deletions
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c index e0a95ba72371..e49d327ccf4c 100644 --- a/drivers/acpi/acpi_memhotplug.c +++ b/drivers/acpi/acpi_memhotplug.c | |||
@@ -125,15 +125,14 @@ acpi_memory_get_device(acpi_handle handle, | |||
125 | 125 | ||
126 | status = acpi_get_parent(handle, &phandle); | 126 | status = acpi_get_parent(handle, &phandle); |
127 | if (ACPI_FAILURE(status)) { | 127 | if (ACPI_FAILURE(status)) { |
128 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_get_parent\n")); | 128 | ACPI_EXCEPTION((AE_INFO, status, "Cannot find acpi parent")); |
129 | return_VALUE(-EINVAL); | 129 | return_VALUE(-EINVAL); |
130 | } | 130 | } |
131 | 131 | ||
132 | /* Get the parent device */ | 132 | /* Get the parent device */ |
133 | status = acpi_bus_get_device(phandle, &pdevice); | 133 | status = acpi_bus_get_device(phandle, &pdevice); |
134 | if (ACPI_FAILURE(status)) { | 134 | if (ACPI_FAILURE(status)) { |
135 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 135 | ACPI_EXCEPTION((AE_INFO, status, "Cannot get acpi bus device")); |
136 | "Error in acpi_bus_get_device\n")); | ||
137 | return_VALUE(-EINVAL); | 136 | return_VALUE(-EINVAL); |
138 | } | 137 | } |
139 | 138 | ||
@@ -143,7 +142,7 @@ acpi_memory_get_device(acpi_handle handle, | |||
143 | */ | 142 | */ |
144 | status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE); | 143 | status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE); |
145 | if (ACPI_FAILURE(status)) { | 144 | if (ACPI_FAILURE(status)) { |
146 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n")); | 145 | ACPI_EXCEPTION((AE_INFO, status, "Cannot add acpi bus")); |
147 | return_VALUE(-EINVAL); | 146 | return_VALUE(-EINVAL); |
148 | } | 147 | } |
149 | 148 | ||
@@ -188,8 +187,7 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) | |||
188 | /* Get the range from the _CRS */ | 187 | /* Get the range from the _CRS */ |
189 | result = acpi_memory_get_device_resources(mem_device); | 188 | result = acpi_memory_get_device_resources(mem_device); |
190 | if (result) { | 189 | if (result) { |
191 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 190 | ACPI_ERROR((AE_INFO, "get_device_resources failed")); |
192 | "\nget_device_resources failed\n")); | ||
193 | mem_device->state = MEMORY_INVALID_STATE; | 191 | mem_device->state = MEMORY_INVALID_STATE; |
194 | return result; | 192 | return result; |
195 | } | 193 | } |
@@ -200,7 +198,7 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) | |||
200 | */ | 198 | */ |
201 | result = add_memory(mem_device->start_addr, mem_device->length); | 199 | result = add_memory(mem_device->start_addr, mem_device->length); |
202 | if (result) { | 200 | if (result) { |
203 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "\nadd_memory failed\n")); | 201 | ACPI_ERROR((AE_INFO, "add_memory failed")); |
204 | mem_device->state = MEMORY_INVALID_STATE; | 202 | mem_device->state = MEMORY_INVALID_STATE; |
205 | return result; | 203 | return result; |
206 | } | 204 | } |
@@ -226,7 +224,7 @@ static int acpi_memory_powerdown_device(struct acpi_memory_device *mem_device) | |||
226 | "_EJ0", &arg_list, NULL); | 224 | "_EJ0", &arg_list, NULL); |
227 | /* Return on _EJ0 failure */ | 225 | /* Return on _EJ0 failure */ |
228 | if (ACPI_FAILURE(status)) { | 226 | if (ACPI_FAILURE(status)) { |
229 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "_EJ0 failed.\n")); | 227 | ACPI_EXCEPTION((AE_INFO, status, "_EJ0 failed")); |
230 | return_VALUE(-ENODEV); | 228 | return_VALUE(-ENODEV); |
231 | } | 229 | } |
232 | 230 | ||
@@ -256,16 +254,12 @@ static int acpi_memory_disable_device(struct acpi_memory_device *mem_device) | |||
256 | * Note: Assume that this function returns zero on success | 254 | * Note: Assume that this function returns zero on success |
257 | */ | 255 | */ |
258 | result = remove_memory(start, len); | 256 | result = remove_memory(start, len); |
259 | if (result) { | 257 | if (result) |
260 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Hot-Remove failed.\n")); | ||
261 | return_VALUE(result); | 258 | return_VALUE(result); |
262 | } | ||
263 | 259 | ||
264 | /* Power-off and eject the device */ | 260 | /* Power-off and eject the device */ |
265 | result = acpi_memory_powerdown_device(mem_device); | 261 | result = acpi_memory_powerdown_device(mem_device); |
266 | if (result) { | 262 | if (result) { |
267 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | ||
268 | "Device Power Down failed.\n")); | ||
269 | /* Set the status of the device to invalid */ | 263 | /* Set the status of the device to invalid */ |
270 | mem_device->state = MEMORY_INVALID_STATE; | 264 | mem_device->state = MEMORY_INVALID_STATE; |
271 | return result; | 265 | return result; |
@@ -292,15 +286,14 @@ static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) | |||
292 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | 286 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
293 | "\nReceived DEVICE CHECK notification for device\n")); | 287 | "\nReceived DEVICE CHECK notification for device\n")); |
294 | if (acpi_memory_get_device(handle, &mem_device)) { | 288 | if (acpi_memory_get_device(handle, &mem_device)) { |
295 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 289 | ACPI_ERROR((AE_INFO, "Cannot find driver data")); |
296 | "Error in finding driver data\n")); | ||
297 | return_VOID; | 290 | return_VOID; |
298 | } | 291 | } |
299 | 292 | ||
300 | if (!acpi_memory_check_device(mem_device)) { | 293 | if (!acpi_memory_check_device(mem_device)) { |
301 | if (acpi_memory_enable_device(mem_device)) | 294 | if (acpi_memory_enable_device(mem_device)) |
302 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 295 | ACPI_ERROR((AE_INFO, |
303 | "Error in acpi_memory_enable_device\n")); | 296 | "Cannot enable memory device")); |
304 | } | 297 | } |
305 | break; | 298 | break; |
306 | case ACPI_NOTIFY_EJECT_REQUEST: | 299 | case ACPI_NOTIFY_EJECT_REQUEST: |
@@ -308,14 +301,12 @@ static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) | |||
308 | "\nReceived EJECT REQUEST notification for device\n")); | 301 | "\nReceived EJECT REQUEST notification for device\n")); |
309 | 302 | ||
310 | if (acpi_bus_get_device(handle, &device)) { | 303 | if (acpi_bus_get_device(handle, &device)) { |
311 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 304 | ACPI_ERROR((AE_INFO, "Device doesn't exist")); |
312 | "Device doesn't exist\n")); | ||
313 | break; | 305 | break; |
314 | } | 306 | } |
315 | mem_device = acpi_driver_data(device); | 307 | mem_device = acpi_driver_data(device); |
316 | if (!mem_device) { | 308 | if (!mem_device) { |
317 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 309 | ACPI_ERROR((AE_INFO, "Driver Data is NULL")); |
318 | "Driver Data is NULL\n")); | ||
319 | break; | 310 | break; |
320 | } | 311 | } |
321 | 312 | ||
@@ -326,8 +317,8 @@ static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) | |||
326 | * with generic sysfs driver | 317 | * with generic sysfs driver |
327 | */ | 318 | */ |
328 | if (acpi_memory_disable_device(mem_device)) | 319 | if (acpi_memory_disable_device(mem_device)) |
329 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 320 | ACPI_ERROR((AE_INFO, |
330 | "Error in acpi_memory_disable_device\n")); | 321 | "Disable memory device\n")); |
331 | /* | 322 | /* |
332 | * TBD: Invoke acpi_bus_remove to cleanup data structures | 323 | * TBD: Invoke acpi_bus_remove to cleanup data structures |
333 | */ | 324 | */ |
@@ -405,7 +396,7 @@ static acpi_status is_memory_device(acpi_handle handle) | |||
405 | 396 | ||
406 | status = acpi_get_object_info(handle, &buffer); | 397 | status = acpi_get_object_info(handle, &buffer); |
407 | if (ACPI_FAILURE(status)) | 398 | if (ACPI_FAILURE(status)) |
408 | return_ACPI_STATUS(AE_ERROR); | 399 | return_ACPI_STATUS(status); |
409 | 400 | ||
410 | info = buffer.pointer; | 401 | info = buffer.pointer; |
411 | if (!(info->valid & ACPI_VALID_HID)) { | 402 | if (!(info->valid & ACPI_VALID_HID)) { |
@@ -431,18 +422,15 @@ acpi_memory_register_notify_handler(acpi_handle handle, | |||
431 | ACPI_FUNCTION_TRACE("acpi_memory_register_notify_handler"); | 422 | ACPI_FUNCTION_TRACE("acpi_memory_register_notify_handler"); |
432 | 423 | ||
433 | status = is_memory_device(handle); | 424 | status = is_memory_device(handle); |
434 | if (ACPI_FAILURE(status)) | 425 | if (ACPI_FAILURE(status)){ |
426 | ACPI_EXCEPTION((AE_INFO, status, "handle is no memory device")); | ||
435 | return_ACPI_STATUS(AE_OK); /* continue */ | 427 | return_ACPI_STATUS(AE_OK); /* continue */ |
428 | } | ||
436 | 429 | ||
437 | status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY, | 430 | status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY, |
438 | acpi_memory_device_notify, NULL); | 431 | acpi_memory_device_notify, NULL); |
439 | if (ACPI_FAILURE(status)) { | 432 | /* continue */ |
440 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 433 | return_ACPI_STATUS(AE_OK); |
441 | "Error installing notify handler\n")); | ||
442 | return_ACPI_STATUS(AE_OK); /* continue */ | ||
443 | } | ||
444 | |||
445 | return_ACPI_STATUS(status); | ||
446 | } | 434 | } |
447 | 435 | ||
448 | static acpi_status | 436 | static acpi_status |
@@ -454,19 +442,16 @@ acpi_memory_deregister_notify_handler(acpi_handle handle, | |||
454 | ACPI_FUNCTION_TRACE("acpi_memory_deregister_notify_handler"); | 442 | ACPI_FUNCTION_TRACE("acpi_memory_deregister_notify_handler"); |
455 | 443 | ||
456 | status = is_memory_device(handle); | 444 | status = is_memory_device(handle); |
457 | if (ACPI_FAILURE(status)) | 445 | if (ACPI_FAILURE(status)){ |
446 | ACPI_EXCEPTION((AE_INFO, status, "handle is no memory device")); | ||
458 | return_ACPI_STATUS(AE_OK); /* continue */ | 447 | return_ACPI_STATUS(AE_OK); /* continue */ |
448 | } | ||
459 | 449 | ||
460 | status = acpi_remove_notify_handler(handle, | 450 | status = acpi_remove_notify_handler(handle, |
461 | ACPI_SYSTEM_NOTIFY, | 451 | ACPI_SYSTEM_NOTIFY, |
462 | acpi_memory_device_notify); | 452 | acpi_memory_device_notify); |
463 | if (ACPI_FAILURE(status)) { | ||
464 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | ||
465 | "Error removing notify handler\n")); | ||
466 | return_ACPI_STATUS(AE_OK); /* continue */ | ||
467 | } | ||
468 | 453 | ||
469 | return_ACPI_STATUS(status); | 454 | return_ACPI_STATUS(AE_OK); /* continue */ |
470 | } | 455 | } |
471 | 456 | ||
472 | static int __init acpi_memory_device_init(void) | 457 | static int __init acpi_memory_device_init(void) |
@@ -487,7 +472,7 @@ static int __init acpi_memory_device_init(void) | |||
487 | NULL, NULL); | 472 | NULL, NULL); |
488 | 473 | ||
489 | if (ACPI_FAILURE(status)) { | 474 | if (ACPI_FAILURE(status)) { |
490 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "walk_namespace failed\n")); | 475 | ACPI_EXCEPTION((AE_INFO, status, "walk_namespace failed")); |
491 | acpi_bus_unregister_driver(&acpi_memory_device_driver); | 476 | acpi_bus_unregister_driver(&acpi_memory_device_driver); |
492 | return_VALUE(-ENODEV); | 477 | return_VALUE(-ENODEV); |
493 | } | 478 | } |
@@ -511,7 +496,7 @@ static void __exit acpi_memory_device_exit(void) | |||
511 | NULL, NULL); | 496 | NULL, NULL); |
512 | 497 | ||
513 | if (ACPI_FAILURE(status)) | 498 | if (ACPI_FAILURE(status)) |
514 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "walk_namespace failed\n")); | 499 | ACPI_EXCEPTION((AE_INFO, status, "walk_namespace failed")); |
515 | 500 | ||
516 | acpi_bus_unregister_driver(&acpi_memory_device_driver); | 501 | acpi_bus_unregister_driver(&acpi_memory_device_driver); |
517 | 502 | ||