aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/processor_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/processor_driver.c')
-rw-r--r--drivers/acpi/processor_driver.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 20a68ca386de..0034ede38710 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -82,7 +82,7 @@ MODULE_LICENSE("GPL");
82static int acpi_processor_add(struct acpi_device *device); 82static int acpi_processor_add(struct acpi_device *device);
83static int acpi_processor_remove(struct acpi_device *device, int type); 83static int acpi_processor_remove(struct acpi_device *device, int type);
84static void acpi_processor_notify(struct acpi_device *device, u32 event); 84static void acpi_processor_notify(struct acpi_device *device, u32 event);
85static acpi_status acpi_processor_hotadd_init(acpi_handle handle, int *p_cpu); 85static acpi_status acpi_processor_hotadd_init(struct acpi_processor *pr);
86static int acpi_processor_handle_eject(struct acpi_processor *pr); 86static int acpi_processor_handle_eject(struct acpi_processor *pr);
87 87
88 88
@@ -324,10 +324,8 @@ static int acpi_processor_get_info(struct acpi_device *device)
324 * they are physically not present. 324 * they are physically not present.
325 */ 325 */
326 if (pr->id == -1) { 326 if (pr->id == -1) {
327 if (ACPI_FAILURE 327 if (ACPI_FAILURE(acpi_processor_hotadd_init(pr)))
328 (acpi_processor_hotadd_init(pr->handle, &pr->id))) {
329 return -ENODEV; 328 return -ENODEV;
330 }
331 } 329 }
332 /* 330 /*
333 * On some boxes several processors use the same processor bus id. 331 * On some boxes several processors use the same processor bus id.
@@ -539,6 +537,7 @@ err_thermal_unregister:
539 thermal_cooling_device_unregister(pr->cdev); 537 thermal_cooling_device_unregister(pr->cdev);
540err_power_exit: 538err_power_exit:
541 acpi_processor_power_exit(pr, device); 539 acpi_processor_power_exit(pr, device);
540 sysfs_remove_link(&device->dev.kobj, "sysdev");
542err_free_cpumask: 541err_free_cpumask:
543 free_cpumask_var(pr->throttling.shared_cpu_map); 542 free_cpumask_var(pr->throttling.shared_cpu_map);
544 543
@@ -720,18 +719,19 @@ processor_walk_namespace_cb(acpi_handle handle,
720 return (AE_OK); 719 return (AE_OK);
721} 720}
722 721
723static acpi_status acpi_processor_hotadd_init(acpi_handle handle, int *p_cpu) 722static acpi_status acpi_processor_hotadd_init(struct acpi_processor *pr)
724{ 723{
724 acpi_handle handle = pr->handle;
725 725
726 if (!is_processor_present(handle)) { 726 if (!is_processor_present(handle)) {
727 return AE_ERROR; 727 return AE_ERROR;
728 } 728 }
729 729
730 if (acpi_map_lsapic(handle, p_cpu)) 730 if (acpi_map_lsapic(handle, &pr->id))
731 return AE_ERROR; 731 return AE_ERROR;
732 732
733 if (arch_register_cpu(*p_cpu)) { 733 if (arch_register_cpu(pr->id)) {
734 acpi_unmap_lsapic(*p_cpu); 734 acpi_unmap_lsapic(pr->id);
735 return AE_ERROR; 735 return AE_ERROR;
736 } 736 }
737 737
@@ -748,7 +748,7 @@ static int acpi_processor_handle_eject(struct acpi_processor *pr)
748 return (0); 748 return (0);
749} 749}
750#else 750#else
751static acpi_status acpi_processor_hotadd_init(acpi_handle handle, int *p_cpu) 751static acpi_status acpi_processor_hotadd_init(struct acpi_processor *pr)
752{ 752{
753 return AE_ERROR; 753 return AE_ERROR;
754} 754}
@@ -827,8 +827,6 @@ static void __exit acpi_processor_exit(void)
827 827
828 acpi_bus_unregister_driver(&acpi_processor_driver); 828 acpi_bus_unregister_driver(&acpi_processor_driver);
829 829
830 cpuidle_unregister_driver(&acpi_idle_driver);
831
832 return; 830 return;
833} 831}
834 832