On Thu, 2017-01-05 at 02:51 +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <[email protected]>
> 
> Expose the intel_pstate's global sysfs attributes before registering
> the driver to prepare for the addition of an attribute that also will
> have to work if the driver is not registered.
> 
> Signed-off-by: Rafael J. Wysocki <[email protected]>
> ---
> 

[...]

>  #ifdef CONFIG_ACPI
> @@ -1055,12 +1058,22 @@ static ssize_t show_turbo_pct(struct kob
>       int total, no_turbo, turbo_pct;
>       uint32_t turbo_fp;
>  
> +     mutex_lock(&intel_pstate_driver_lock);
> +
> +     if (!driver_registered) {
> +             mutex_unlock(&intel_pstate_limits_lock);
It should be
                mutex_unlock(&intel_pstate_driver_lock);

> +             return -EAGAIN;
> +     }
> +
>       cpu = all_cpu_data[0];
>  
> 
[...]

> @@ -1070,8 +1083,18 @@ static ssize_t show_num_pstates(struct k
>       struct cpudata *cpu;
>       int total;
>  
> +     mutex_lock(&intel_pstate_driver_lock);
> +
> +     if (!driver_registered) {
> +             mutex_unlock(&intel_pstate_limits_lock);
Change to
                mutex_unlock(&intel_pstate_driver_lock);

> +             return -EAGAIN;
> +     }
> +
>       cpu = all_cpu_data[0];
>       total = cpu->pstate.turbo_pstate - cpu->pstate.min_pstate +
> 1;
> +
> +     mutex_unlock(&intel_pstate_driver_lock);
> +
>       return sprintf(buf, "%u\n", total);
>  }
>  
> @@ -1080,12 +1103,21 @@ static ssize_t show_no_turbo(struct kobj
>  {
>       ssize_t ret;
>  
> +     mutex_lock(&intel_pstate_driver_lock);
> +
> +     if (!driver_registered) {
> +             mutex_unlock(&intel_pstate_limits_lock);
Same here
                mutex_unlock(&intel_pstate_driver_lock);

> +             return -EAGAIN;
> +     }
> +
>       update_turbo_state();
>       if (limits->turbo_disabled)
>               ret = sprintf(buf, "%u\n", limits->turbo_disabled);
>       else
>               ret = sprintf(buf, "%u\n", limits->no_turbo);
>  
> +     mutex_unlock(&intel_pstate_driver_lock);
> +
>       return ret;
>  }
>  
> @@ -1099,6 +1131,13 @@ static ssize_t store_no_turbo(struct kob
>       if (ret != 1)
>               return -EINVAL;
>  
> +     mutex_lock(&intel_pstate_driver_lock);
> +
> +     if (!driver_registered) {
> +             mutex_unlock(&intel_pstate_driver_lock);
> +             return -EAGAIN;
> +     }
> +
>       mutex_lock(&intel_pstate_limits_lock);       if (limits-
> >turbo_disabled) {
>                 pr_warn("Turbo disabled by BIOS or unavailable on
> processor\n");
>                 mutex_unlock(&intel_pstate_limits_lock);
Also
                mutex_unlock(&intel_pstate_driver_lock);> 

>                 return -EPERM;
>         }
>  
>       update_turbo_state();
> @@ -1114,6 +1153,8 @@ static ssize_t store_no_turbo(struct kob
>  
>       intel_pstate_update_policies();
>  
> +     mutex_unlock(&intel_pstate_driver_lock);
> +
>       return count;
>  }
> 

Thanks,
Srinivas

Reply via email to