Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH] powercap, intel_rapl.c, fix BIOS lock check

271 views
Skip to first unread message

Prarit Bhargava

unread,
Dec 8, 2015, 1:33:35 PM12/8/15
to linux-...@vger.kernel.org, Prarit Bhargava, Rafael J. Wysocki, Jacob Pan, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas
Intel RAPL initialized on several systems where the BIOS lock bit (msr
0x610, bit 63) was set. This occured because the return value of
rapl_read_data_raw() was being checked, rather than the value of the variable
passed in, locked.

This patch properly implments the rapl_read_data_raw() call to check the
variable locked, and now the Intel RAPL driver outputs the warning:

intel_rapl: RAPL package 0 domain package locked by BIOS

and does not initialize for the package.

Cc: "Rafael J. Wysocki" <rafael.j...@intel.com>
Cc: Jacob Pan <jacob....@linux.intel.com>
Cc: Radivoje Jovanovic <radivoje....@intel.com>
Cc: Seiichi Ikarashi <s.ika...@jp.fujitsu.com>
Cc: Mathias Krause <min...@googlemail.com>
Cc: Ajay Thomas <ajay.thomas.dav...@intel.com>
Signed-off-by: Prarit Bhargava <pra...@redhat.com>
---
drivers/powercap/intel_rapl.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
index cc97f08..0b0d09d 100644
--- a/drivers/powercap/intel_rapl.c
+++ b/drivers/powercap/intel_rapl.c
@@ -1341,11 +1341,13 @@ static int rapl_detect_domains(struct rapl_package *rp, int cpu)

for (rd = rp->domains; rd < rp->domains + rp->nr_domains; rd++) {
/* check if the domain is locked by BIOS */
- if (rapl_read_data_raw(rd, FW_LOCK, false, &locked)) {
+ ret = rapl_read_data_raw(rd, FW_LOCK, false, &locked);
+ if (ret)
+ return ret;
+ if (locked)
pr_info("RAPL package %d domain %s locked by BIOS\n",
rp->id, rd->name);
rd->state |= DOMAIN_STATE_BIOS_LOCKED;
- }
}


--
1.7.9.3

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

Jacob Pan

unread,
Dec 8, 2015, 6:31:18 PM12/8/15
to Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas, jacob....@linux.intel.com
On Tue, 8 Dec 2015 13:33:22 -0500
Prarit Bhargava <pra...@redhat.com> wrote:

> Intel RAPL initialized on several systems where the BIOS lock bit (msr
> 0x610, bit 63) was set. This occured because the return value of
> rapl_read_data_raw() was being checked, rather than the value of the
> variable passed in, locked.
>
> This patch properly implments the rapl_read_data_raw() call to check
> the variable locked, and now the Intel RAPL driver outputs the
> warning:
>
> intel_rapl: RAPL package 0 domain package locked by BIOS
>
> and does not initialize for the package.
Looks good to me.

Seiichi Ikarashi

unread,
Dec 8, 2015, 7:24:34 PM12/8/15
to Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Jacob Pan, Radivoje Jovanovic, Mathias Krause, Ajay Thomas
A good spot!
But this patch looks setting DOMAIN_STATE_BIOS_LOCKED bit to all package domains.
I suppose what you are going to do is like below.

--- a/drivers/powercap/intel_rapl.c 2015-11-02 09:05:25.000000000 +0900
+++ b/drivers/powercap/intel_rapl.c 2015-12-09 09:05:33.386142840 +0900
@@ -1340,10 +1340,13 @@ static int rapl_detect_domains(struct ra

for (rd = rp->domains; rd < rp->domains + rp->nr_domains; rd++) {
/* check if the domain is locked by BIOS */
- if (rapl_read_data_raw(rd, FW_LOCK, false, &locked)) {
+ ret = rapl_read_data_raw(rd, FW_LOCK, false, &locked);
+ if (ret)
+ return ret;
+ if (locked) {
pr_info("RAPL package %d domain %s locked by BIOS\n",
rp->id, rd->name);
- rd->state |= DOMAIN_STATE_BIOS_LOCKED;
+ rd->state |= DOMAIN_STATE_BIOS_LOCKED;

Prarit Bhargava

unread,
Dec 9, 2015, 8:27:15 AM12/9/15
to Seiichi Ikarashi, linux-...@vger.kernel.org, Rafael J. Wysocki, Jacob Pan, Radivoje Jovanovic, Mathias Krause, Ajay Thomas
Oh geez :) Of course ... I'll resubmit shortly.

P.

Prarit Bhargava

unread,
Dec 9, 2015, 8:31:23 AM12/9/15
to linux-...@vger.kernel.org, Prarit Bhargava, Rafael J. Wysocki, Jacob Pan, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas
Intel RAPL initialized on several systems where the BIOS lock bit (msr
0x610, bit 63) was set. This occured because the return value of
rapl_read_data_raw() was being checked, rather than the value of the variable
passed in, locked.

This patch properly implments the rapl_read_data_raw() call to check the
variable locked, and now the Intel RAPL driver outputs the warning:

intel_rapl: RAPL package 0 domain package locked by BIOS

and does not initialize for the package.

Cc: "Rafael J. Wysocki" <rafael.j...@intel.com>
Cc: Jacob Pan <jacob....@linux.intel.com>
Cc: Radivoje Jovanovic <radivoje....@intel.com>
Cc: Seiichi Ikarashi <s.ika...@jp.fujitsu.com>
Cc: Mathias Krause <min...@googlemail.com>
Cc: Ajay Thomas <ajay.thomas.dav...@intel.com>
Signed-off-by: Prarit Bhargava <pra...@redhat.com>

[v2]: fix brackets
---
drivers/powercap/intel_rapl.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
index cc97f08..48747c2 100644
--- a/drivers/powercap/intel_rapl.c
+++ b/drivers/powercap/intel_rapl.c
@@ -1341,10 +1341,13 @@ static int rapl_detect_domains(struct rapl_package *rp, int cpu)

for (rd = rp->domains; rd < rp->domains + rp->nr_domains; rd++) {
/* check if the domain is locked by BIOS */
- if (rapl_read_data_raw(rd, FW_LOCK, false, &locked)) {
+ ret = rapl_read_data_raw(rd, FW_LOCK, false, &locked);
+ if (ret)
+ return ret;
+ if (locked) {
pr_info("RAPL package %d domain %s locked by BIOS\n",
rp->id, rd->name);
- rd->state |= DOMAIN_STATE_BIOS_LOCKED;
+ rd->state |= DOMAIN_STATE_BIOS_LOCKED;
}
}

--
1.7.9.3

Jacob Pan

unread,
Dec 9, 2015, 11:55:00 AM12/9/15
to Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas, jacob....@linux.intel.com
On Wed, 9 Dec 2015 08:31:12 -0500
Prarit Bhargava <pra...@redhat.com> wrote:

> Intel RAPL initialized on several systems where the BIOS lock bit (msr
> 0x610, bit 63) was set. This occured because the return value of
> rapl_read_data_raw() was being checked, rather than the value of the
> variable passed in, locked.
>
> This patch properly implments the rapl_read_data_raw() call to check
> the variable locked, and now the Intel RAPL driver outputs the
> warning:
>
> intel_rapl: RAPL package 0 domain package locked by BIOS
>
> and does not initialize for the package.
>
> Cc: "Rafael J. Wysocki" <rafael.j...@intel.com>
> Cc: Jacob Pan <jacob....@linux.intel.com>
> Cc: Radivoje Jovanovic <radivoje....@intel.com>
> Cc: Seiichi Ikarashi <s.ika...@jp.fujitsu.com>
> Cc: Mathias Krause <min...@googlemail.com>
> Cc: Ajay Thomas <ajay.thomas.dav...@intel.com>
> Signed-off-by: Prarit Bhargava <pra...@redhat.com>
>
> [v2]: fix brackets

Acked-by: Jacob Pan <jacob....@linux.intel.com>

Good catch by Seiichi, thanks.

Rafael J. Wysocki

unread,
Dec 9, 2015, 6:08:40 PM12/9/15
to Jacob Pan, Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas
On Wednesday, December 09, 2015 08:53:55 AM Jacob Pan wrote:
> On Wed, 9 Dec 2015 08:31:12 -0500
> Prarit Bhargava <pra...@redhat.com> wrote:
>
> > Intel RAPL initialized on several systems where the BIOS lock bit (msr
> > 0x610, bit 63) was set. This occured because the return value of
> > rapl_read_data_raw() was being checked, rather than the value of the
> > variable passed in, locked.
> >
> > This patch properly implments the rapl_read_data_raw() call to check
> > the variable locked, and now the Intel RAPL driver outputs the
> > warning:
> >
> > intel_rapl: RAPL package 0 domain package locked by BIOS
> >
> > and does not initialize for the package.
> >
> > Cc: "Rafael J. Wysocki" <rafael.j...@intel.com>
> > Cc: Jacob Pan <jacob....@linux.intel.com>
> > Cc: Radivoje Jovanovic <radivoje....@intel.com>
> > Cc: Seiichi Ikarashi <s.ika...@jp.fujitsu.com>
> > Cc: Mathias Krause <min...@googlemail.com>
> > Cc: Ajay Thomas <ajay.thomas.dav...@intel.com>
> > Signed-off-by: Prarit Bhargava <pra...@redhat.com>
> >
> > [v2]: fix brackets
>
> Acked-by: Jacob Pan <jacob....@linux.intel.com>

OK, I've put it into my bleeding-edge branch as 4.5 candidate, but do we
want it in "stable" and therefore should it be pushed for 4.4?

Thanks,
Rafael

Jacob Pan

unread,
Dec 9, 2015, 6:32:25 PM12/9/15
to Rafael J. Wysocki, Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas, jacob....@linux.intel.com
On Thu, 10 Dec 2015 00:38:27 +0100
"Rafael J. Wysocki" <r...@rjwysocki.net> wrote:

> OK, I've put it into my bleeding-edge branch as 4.5 candidate, but do
> we want it in "stable" and therefore should it be pushed for 4.4?
yes, it is a bug fix that may affect many systems locked by BIOS.

Rafael J. Wysocki

unread,
Dec 9, 2015, 7:22:43 PM12/9/15
to Jacob Pan, Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas
On Wednesday, December 09, 2015 03:31:23 PM Jacob Pan wrote:
> On Thu, 10 Dec 2015 00:38:27 +0100
> "Rafael J. Wysocki" <r...@rjwysocki.net> wrote:
>
> > OK, I've put it into my bleeding-edge branch as 4.5 candidate, but do
> > we want it in "stable" and therefore should it be pushed for 4.4?
> yes, it is a bug fix that may affect many systems locked by BIOS.

So which "stable" series in particular should it go to? All applicable?

Thanks,
Rafael

Prarit Bhargava

unread,
Dec 10, 2015, 6:04:17 AM12/10/15
to Rafael J. Wysocki, Jacob Pan, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas


On 12/09/2015 07:52 PM, Rafael J. Wysocki wrote:
> On Wednesday, December 09, 2015 03:31:23 PM Jacob Pan wrote:
>> On Thu, 10 Dec 2015 00:38:27 +0100
>> "Rafael J. Wysocki" <r...@rjwysocki.net> wrote:
>>
>>> OK, I've put it into my bleeding-edge branch as 4.5 candidate, but do
>>> we want it in "stable" and therefore should it be pushed for 4.4?
>> yes, it is a bug fix that may affect many systems locked by BIOS.
>
> So which "stable" series in particular should it go to? All applicable?
>

Yes, all applicable IMO.

P.

Jacob Pan

unread,
Dec 11, 2015, 11:39:58 AM12/11/15
to Rafael J. Wysocki, Prarit Bhargava, linux-...@vger.kernel.org, Rafael J. Wysocki, Radivoje Jovanovic, Seiichi Ikarashi, Mathias Krause, Ajay Thomas, jacob....@linux.intel.com
On Thu, 10 Dec 2015 01:52:37 +0100
"Rafael J. Wysocki" <r...@rjwysocki.net> wrote:

> So which "stable" series in particular should it go to? All
> applicable?
yes. rapl is there since SNB, quite some time.
0 new messages