Commit 7ec0a729 authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Len Brown

ACPI: processor: use .notify method instead of installing handler directly

This patch adds a .notify() method.  The presence of .notify() causes
Linux/ACPI to manage event handlers and notify handlers on our behalf,
so we don't have to install and remove them ourselves.
Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
CC: Zhang Rui <rui.zhang@intel.com>
CC: Zhao Yakui <yakui.zhao@intel.com>
CC: Venki Pallipadi <venkatesh.pallipadi@intel.com>
CC: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 373cfc36
...@@ -82,7 +82,7 @@ static int acpi_processor_add(struct acpi_device *device); ...@@ -82,7 +82,7 @@ static int acpi_processor_add(struct acpi_device *device);
static int acpi_processor_start(struct acpi_device *device); static int acpi_processor_start(struct acpi_device *device);
static int acpi_processor_remove(struct acpi_device *device, int type); static int acpi_processor_remove(struct acpi_device *device, int type);
static int acpi_processor_info_open_fs(struct inode *inode, struct file *file); static int acpi_processor_info_open_fs(struct inode *inode, struct file *file);
static void acpi_processor_notify(acpi_handle handle, u32 event, void *data); static void acpi_processor_notify(struct acpi_device *device, u32 event);
static acpi_status acpi_processor_hotadd_init(acpi_handle handle, int *p_cpu); static acpi_status acpi_processor_hotadd_init(acpi_handle handle, int *p_cpu);
static int acpi_processor_handle_eject(struct acpi_processor *pr); static int acpi_processor_handle_eject(struct acpi_processor *pr);
...@@ -104,6 +104,7 @@ static struct acpi_driver acpi_processor_driver = { ...@@ -104,6 +104,7 @@ static struct acpi_driver acpi_processor_driver = {
.start = acpi_processor_start, .start = acpi_processor_start,
.suspend = acpi_processor_suspend, .suspend = acpi_processor_suspend,
.resume = acpi_processor_resume, .resume = acpi_processor_resume,
.notify = acpi_processor_notify,
}, },
}; };
...@@ -691,7 +692,6 @@ static DEFINE_PER_CPU(void *, processor_device_array); ...@@ -691,7 +692,6 @@ static DEFINE_PER_CPU(void *, processor_device_array);
static int __cpuinit acpi_processor_start(struct acpi_device *device) static int __cpuinit acpi_processor_start(struct acpi_device *device)
{ {
int result = 0; int result = 0;
acpi_status status = AE_OK;
struct acpi_processor *pr; struct acpi_processor *pr;
struct sys_device *sysdev; struct sys_device *sysdev;
...@@ -728,9 +728,6 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device) ...@@ -728,9 +728,6 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device)
if (sysfs_create_link(&device->dev.kobj, &sysdev->kobj, "sysdev")) if (sysfs_create_link(&device->dev.kobj, &sysdev->kobj, "sysdev"))
return -EFAULT; return -EFAULT;
status = acpi_install_notify_handler(pr->handle, ACPI_DEVICE_NOTIFY,
acpi_processor_notify, pr);
/* _PDC call should be done before doing anything else (if reqd.). */ /* _PDC call should be done before doing anything else (if reqd.). */
arch_acpi_processor_init_pdc(pr); arch_acpi_processor_init_pdc(pr);
acpi_processor_set_pdc(pr); acpi_processor_set_pdc(pr);
...@@ -776,18 +773,14 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device) ...@@ -776,18 +773,14 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device)
return result; return result;
} }
static void acpi_processor_notify(acpi_handle handle, u32 event, void *data) static void acpi_processor_notify(struct acpi_device *device, u32 event)
{ {
struct acpi_processor *pr = data; struct acpi_processor *pr = acpi_driver_data(device);
struct acpi_device *device = NULL;
int saved; int saved;
if (!pr) if (!pr)
return; return;
if (acpi_bus_get_device(pr->handle, &device))
return;
switch (event) { switch (event) {
case ACPI_PROCESSOR_NOTIFY_PERFORMANCE: case ACPI_PROCESSOR_NOTIFY_PERFORMANCE:
saved = pr->performance_platform_limit; saved = pr->performance_platform_limit;
...@@ -866,7 +859,6 @@ static int acpi_processor_add(struct acpi_device *device) ...@@ -866,7 +859,6 @@ static int acpi_processor_add(struct acpi_device *device)
static int acpi_processor_remove(struct acpi_device *device, int type) static int acpi_processor_remove(struct acpi_device *device, int type)
{ {
acpi_status status = AE_OK;
struct acpi_processor *pr = NULL; struct acpi_processor *pr = NULL;
...@@ -885,9 +877,6 @@ static int acpi_processor_remove(struct acpi_device *device, int type) ...@@ -885,9 +877,6 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
acpi_processor_power_exit(pr, device); acpi_processor_power_exit(pr, device);
status = acpi_remove_notify_handler(pr->handle, ACPI_DEVICE_NOTIFY,
acpi_processor_notify);
sysfs_remove_link(&device->dev.kobj, "sysdev"); sysfs_remove_link(&device->dev.kobj, "sysdev");
acpi_processor_remove_fs(device); acpi_processor_remove_fs(device);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment