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.lezc...@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);
>  }
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to