On 2015-12-15 22:02, Prarit Bhargava wrote:
> Some systems erroneously set the maximum time window field of
> MSR_PKG_POWER_INFO register to 0.  This results in a user not being able
> to set the time windows for the package.  In some cases, however, RAPL
> will still continue to work with a small window (albeit through some
> trial and error).  This patch adds a ignore_max_window_check module
> parameter to avoid the maximum time window check in set_time_window().
> 
> Cc: "Rafael J. Wysocki" <rafael.j.wyso...@intel.com>
> Cc: Prarit Bhargava <pra...@redhat.com>
> Cc: Radivoje Jovanovic <radivoje.jovano...@intel.com>
> Cc: Seiichi Ikarashi <s.ikara...@jp.fujitsu.com>
> Cc: Mathias Krause <mini...@googlemail.com>
> Cc: Ajay Thomas <ajay.thomas.david.rajamanic...@intel.com>
> Signed-off-by: Prarit Bhargava <pra...@redhat.com>
> ---
>  drivers/powercap/intel_rapl.c |   15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
> index 14753e5..3cdb8ee 100644
> --- a/drivers/powercap/intel_rapl.c
> +++ b/drivers/powercap/intel_rapl.c
> @@ -508,10 +508,22 @@ static int get_max_time_window(struct powercap_zone 
> *power_zone, int id,
>       else
>               *data = val;
>  
> +     if (val == 0)

If rapl_read_data_raw() fails, "val" becomes indefinite.
So this check and warn should be performed only if rapl_read_data_raw() 
succeeds.

> +             pr_warn_once(FW_BUG "intel_rapl: Maximum Time Window is zero.  
> This is a BIOS bug that should be reported to your hardware or BIOS vendor.  
> The value of zero may prevent Intel RAPL from functioning properly.  Most 
> bugs can be avoided by setting the ignore_max_window_check module 
> parameter.\n");
> +
>       put_online_cpus();
>       return ret;
>  }
>  
> +/* Some BIOSes incorrectly program the maximum time window in the
> + * MSR_PKG_POWER_INFO register.  Some of these systems still have functional
> + * RAPL registers, etc., so give the user the option of disabling the maximum
> + * time window check.
> + */
> +static int ignore_max_window_check;
> +module_param(ignore_max_window_check, int, 0444);
> +MODULE_PARM_DESC(ignore_max_window_check, "Ignore maximum window check.  A 
> bug should be reported to your hardware or BIOS vendor if this parameter is 
> used.");

Don't you need to use "time_window" instead of just "window" in these names?


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to