Message ID | 1349907691-6002-2-git-send-email-daniel.lezcano@linaro.org |
---|---|
State | Accepted |
Commit | 1aef40e288acfb3cc28ff77528b34ef66683bed6 |
Headers | show |
On Thursday 11 of October 2012 00:21:28 Daniel Lezcano wrote: > The function needs the cpuidle_device which is initially passed to the > caller. > > The current code gets the struct device from the struct cpuidle_device, > pass it the cpuidle_add_sysfs function. This function calls > per_cpu(cpuidle_devices, cpu) to get the cpuidle_device. > > This patch pass the cpuidle_device instead and simplify the code. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> I like this one. I'll take it for v3.8. Thanks, Rafael > --- > drivers/cpuidle/cpuidle.c | 8 +++----- > drivers/cpuidle/cpuidle.h | 6 ++---- > drivers/cpuidle/sysfs.c | 12 +++--------- > 3 files changed, 8 insertions(+), 18 deletions(-) > > diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c > index e28f6ea..07c6637 100644 > --- a/drivers/cpuidle/cpuidle.c > +++ b/drivers/cpuidle/cpuidle.c > @@ -394,7 +394,6 @@ EXPORT_SYMBOL_GPL(cpuidle_disable_device); > static int __cpuidle_register_device(struct cpuidle_device *dev) > { > int ret; > - struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); > struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); > > if (!try_module_get(cpuidle_driver->owner)) > @@ -404,7 +403,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) > > per_cpu(cpuidle_devices, dev->cpu) = dev; > list_add(&dev->device_list, &cpuidle_detected_devices); > - ret = cpuidle_add_sysfs(cpu_dev); > + ret = cpuidle_add_sysfs(dev); > if (ret) > goto err_sysfs; > > @@ -416,7 +415,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) > return 0; > > err_coupled: > - cpuidle_remove_sysfs(cpu_dev); > + cpuidle_remove_sysfs(dev); > wait_for_completion(&dev->kobj_unregister); > err_sysfs: > list_del(&dev->device_list); > @@ -460,7 +459,6 @@ EXPORT_SYMBOL_GPL(cpuidle_register_device); > */ > void cpuidle_unregister_device(struct cpuidle_device *dev) > { > - struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); > struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); > > if (dev->registered == 0) > @@ -470,7 +468,7 @@ void cpuidle_unregister_device(struct cpuidle_device *dev) > > cpuidle_disable_device(dev); > > - cpuidle_remove_sysfs(cpu_dev); > + cpuidle_remove_sysfs(dev); > list_del(&dev->device_list); > wait_for_completion(&dev->kobj_unregister); > per_cpu(cpuidle_devices, dev->cpu) = NULL; > diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h > index 76e7f69..a5bbd1c 100644 > --- a/drivers/cpuidle/cpuidle.h > +++ b/drivers/cpuidle/cpuidle.h > @@ -5,8 +5,6 @@ > #ifndef __DRIVER_CPUIDLE_H > #define __DRIVER_CPUIDLE_H > > -#include <linux/device.h> > - > /* For internal use only */ > extern struct cpuidle_governor *cpuidle_curr_governor; > extern struct list_head cpuidle_governors; > @@ -29,8 +27,8 @@ extern int cpuidle_add_interface(struct device *dev); > extern void cpuidle_remove_interface(struct device *dev); > extern int cpuidle_add_state_sysfs(struct cpuidle_device *device); > extern void cpuidle_remove_state_sysfs(struct cpuidle_device *device); > -extern int cpuidle_add_sysfs(struct device *dev); > -extern void cpuidle_remove_sysfs(struct device *dev); > +extern int cpuidle_add_sysfs(struct cpuidle_device *dev); > +extern void cpuidle_remove_sysfs(struct cpuidle_device *dev); > > #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED > bool cpuidle_state_is_coupled(struct cpuidle_device *dev, > diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c > index 5f809e3..84e6285 100644 > --- a/drivers/cpuidle/sysfs.c > +++ b/drivers/cpuidle/sysfs.c > @@ -408,13 +408,11 @@ void cpuidle_remove_state_sysfs(struct cpuidle_device *device) > * cpuidle_add_sysfs - creates a sysfs instance for the target device > * @dev: the target device > */ > -int cpuidle_add_sysfs(struct device *cpu_dev) > +int cpuidle_add_sysfs(struct cpuidle_device *dev) > { > - int cpu = cpu_dev->id; > - struct cpuidle_device *dev; > + struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); > int error; > > - dev = per_cpu(cpuidle_devices, cpu); > error = kobject_init_and_add(&dev->kobj, &ktype_cpuidle, &cpu_dev->kobj, > "cpuidle"); > if (!error) > @@ -426,11 +424,7 @@ int cpuidle_add_sysfs(struct device *cpu_dev) > * cpuidle_remove_sysfs - deletes a sysfs instance on the target device > * @dev: the target device > */ > -void cpuidle_remove_sysfs(struct device *cpu_dev) > +void cpuidle_remove_sysfs(struct cpuidle_device *dev) > { > - int cpu = cpu_dev->id; > - struct cpuidle_device *dev; > - > - dev = per_cpu(cpuidle_devices, cpu); > kobject_put(&dev->kobj); > } >
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index e28f6ea..07c6637 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -394,7 +394,6 @@ EXPORT_SYMBOL_GPL(cpuidle_disable_device); static int __cpuidle_register_device(struct cpuidle_device *dev) { int ret; - struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); if (!try_module_get(cpuidle_driver->owner)) @@ -404,7 +403,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) per_cpu(cpuidle_devices, dev->cpu) = dev; list_add(&dev->device_list, &cpuidle_detected_devices); - ret = cpuidle_add_sysfs(cpu_dev); + ret = cpuidle_add_sysfs(dev); if (ret) goto err_sysfs; @@ -416,7 +415,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) return 0; err_coupled: - cpuidle_remove_sysfs(cpu_dev); + cpuidle_remove_sysfs(dev); wait_for_completion(&dev->kobj_unregister); err_sysfs: list_del(&dev->device_list); @@ -460,7 +459,6 @@ EXPORT_SYMBOL_GPL(cpuidle_register_device); */ void cpuidle_unregister_device(struct cpuidle_device *dev) { - struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver(); if (dev->registered == 0) @@ -470,7 +468,7 @@ void cpuidle_unregister_device(struct cpuidle_device *dev) cpuidle_disable_device(dev); - cpuidle_remove_sysfs(cpu_dev); + cpuidle_remove_sysfs(dev); list_del(&dev->device_list); wait_for_completion(&dev->kobj_unregister); per_cpu(cpuidle_devices, dev->cpu) = NULL; diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h index 76e7f69..a5bbd1c 100644 --- a/drivers/cpuidle/cpuidle.h +++ b/drivers/cpuidle/cpuidle.h @@ -5,8 +5,6 @@ #ifndef __DRIVER_CPUIDLE_H #define __DRIVER_CPUIDLE_H -#include <linux/device.h> - /* For internal use only */ extern struct cpuidle_governor *cpuidle_curr_governor; extern struct list_head cpuidle_governors; @@ -29,8 +27,8 @@ extern int cpuidle_add_interface(struct device *dev); extern void cpuidle_remove_interface(struct device *dev); extern int cpuidle_add_state_sysfs(struct cpuidle_device *device); extern void cpuidle_remove_state_sysfs(struct cpuidle_device *device); -extern int cpuidle_add_sysfs(struct device *dev); -extern void cpuidle_remove_sysfs(struct device *dev); +extern int cpuidle_add_sysfs(struct cpuidle_device *dev); +extern void cpuidle_remove_sysfs(struct cpuidle_device *dev); #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED bool cpuidle_state_is_coupled(struct cpuidle_device *dev, diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c index 5f809e3..84e6285 100644 --- a/drivers/cpuidle/sysfs.c +++ b/drivers/cpuidle/sysfs.c @@ -408,13 +408,11 @@ void cpuidle_remove_state_sysfs(struct cpuidle_device *device) * cpuidle_add_sysfs - creates a sysfs instance for the target device * @dev: the target device */ -int cpuidle_add_sysfs(struct device *cpu_dev) +int cpuidle_add_sysfs(struct cpuidle_device *dev) { - int cpu = cpu_dev->id; - struct cpuidle_device *dev; + struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); int error; - dev = per_cpu(cpuidle_devices, cpu); error = kobject_init_and_add(&dev->kobj, &ktype_cpuidle, &cpu_dev->kobj, "cpuidle"); if (!error) @@ -426,11 +424,7 @@ int cpuidle_add_sysfs(struct device *cpu_dev) * cpuidle_remove_sysfs - deletes a sysfs instance on the target device * @dev: the target device */ -void cpuidle_remove_sysfs(struct device *cpu_dev) +void cpuidle_remove_sysfs(struct cpuidle_device *dev) { - int cpu = cpu_dev->id; - struct cpuidle_device *dev; - - dev = per_cpu(cpuidle_devices, cpu); kobject_put(&dev->kobj); }
The function needs the cpuidle_device which is initially passed to the caller. The current code gets the struct device from the struct cpuidle_device, pass it the cpuidle_add_sysfs function. This function calls per_cpu(cpuidle_devices, cpu) to get the cpuidle_device. This patch pass the cpuidle_device instead and simplify the code. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- drivers/cpuidle/cpuidle.c | 8 +++----- drivers/cpuidle/cpuidle.h | 6 ++---- drivers/cpuidle/sysfs.c | 12 +++--------- 3 files changed, 8 insertions(+), 18 deletions(-)