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/