linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Prarit Bhargava <prarit@redhat.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Radivoje Jovanovic <radivoje.jovanovic@intel.com>,
	Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>,
	Mathias Krause <minipli@googlemail.com>,
	Ajay Thomas <ajay.thomas.david.rajamanickam@intel.com>
Subject: [PATCH 3/3] powercap, intel_rapl, Add ignore_max_window_check module parameter for broken BIOSes
Date: Tue, 15 Dec 2015 08:02:12 -0500	[thread overview]
Message-ID: <1450184532-21150-4-git-send-email-prarit@redhat.com> (raw)
In-Reply-To: <1450184532-21150-1-git-send-email-prarit@redhat.com>

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.wysocki@intel.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Radivoje Jovanovic <radivoje.jovanovic@intel.com>
Cc: Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Cc: Mathias Krause <minipli@googlemail.com>
Cc: Ajay Thomas <ajay.thomas.david.rajamanickam@intel.com>
Signed-off-by: Prarit Bhargava <prarit@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)
+		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.");
+
 static int set_time_window(struct powercap_zone *power_zone, int id,
 								u64 window)
 {
@@ -532,7 +544,8 @@ static int set_time_window(struct powercap_zone *power_zone, int id,
 	 * The MSR_RAPL_POWER_UNIT register, read during initialization,
 	 * does contain the smallest unit of time that can be measured.
 	 */
-	if ((window > max_window) || (window < rp->time_unit)) {
+	if ((!ignore_max_window_check && (window > max_window)) ||
+	    (window < rp->time_unit)) {
 		ret = -EINVAL;
 		goto out;
 	}
-- 
1.7.9.3


  parent reply	other threads:[~2015-12-15 13:02 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-15 13:02 [PATCH 0/3] powercap, intel_rapl, implement time window checks Prarit Bhargava
2015-12-15 13:02 ` [PATCH 1/3] powercap, intel_rapl, implement get_max_time_window Prarit Bhargava
2015-12-17  5:45   ` Seiichi Ikarashi
2015-12-17 12:26     ` Prarit Bhargava
2015-12-15 13:02 ` [PATCH 2/3] powercap, intel_rapl, implement check for minimum time window Prarit Bhargava
2015-12-15 13:02 ` Prarit Bhargava [this message]
2015-12-18  5:50   ` [PATCH 3/3] powercap, intel_rapl, Add ignore_max_window_check module parameter for broken BIOSes Seiichi Ikarashi
2015-12-18 12:23     ` Prarit Bhargava
2015-12-21 14:50 ` [PATCH 0/3 v2] powercap, intel_rapl, implement time window checks Prarit Bhargava
2015-12-21 14:50   ` [PATCH 1/3] powercap, intel_rapl, implement get_max_time_window Prarit Bhargava
2015-12-21 14:50   ` [PATCH 2/3] powercap, intel_rapl, implement check for minimum time window Prarit Bhargava
2015-12-21 14:50   ` [PATCH 3/3] powercap, intel_rapl, Add ignore_max_time_window_check module parameter for broken BIOSes Prarit Bhargava

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1450184532-21150-4-git-send-email-prarit@redhat.com \
    --to=prarit@redhat.com \
    --cc=ajay.thomas.david.rajamanickam@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=minipli@googlemail.com \
    --cc=radivoje.jovanovic@intel.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=s.ikarashi@jp.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).