On 12/18/2015 12:50 AM, Seiichi Ikarashi wrote: > 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" <[email protected]> >> Cc: Prarit Bhargava <[email protected]> >> Cc: Radivoje Jovanovic <[email protected]> >> Cc: Seiichi Ikarashi <[email protected]> >> Cc: Mathias Krause <[email protected]> >> Cc: Ajay Thomas <[email protected]> >> Signed-off-by: Prarit Bhargava <[email protected]> >> --- >> 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?
Will submit a [v2] to cover the val error condition and s/time_window/window in the module parameter description. Rafael, I cannot remember ... will you take a 3/3 v2 or do you want me to repost the whole thing as a v2? P. > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

