diff mbox series

x86/ACPI/cstate: Output AMD on APCI C1 FFH MWAIT AMD systems

Message ID 20180808174735.3114-1-prarit@redhat.com (mailing list archive)
State Rejected, archived
Delegated to: Len Brown
Headers show
Series x86/ACPI/cstate: Output AMD on APCI C1 FFH MWAIT AMD systems | expand

Commit Message

Prarit Bhargava Aug. 8, 2018, 5:47 p.m. UTC
commit 5209654a46ee ("x86/ACPI/cstate: Allow ACPI C1 FFH MWAIT use on AMD
systems") allows use of FFH for ACPI C1 but tools like cpupower and turbostat
display INTEL for the cstate description.

Output "AMD" for AMD systems with FFH for ACPI C1.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Cc: Len Brown <lenb@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: linux-pm@vger.kernel.org
---
 arch/x86/kernel/acpi/cstate.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

Comments

Pavel Machek Aug. 8, 2018, 7:58 p.m. UTC | #1
On Wed 2018-08-08 13:47:35, Prarit Bhargava wrote:
> commit 5209654a46ee ("x86/ACPI/cstate: Allow ACPI C1 FFH MWAIT use on AMD
> systems") allows use of FFH for ACPI C1 but tools like cpupower and turbostat
> display INTEL for the cstate description.
> 
> Output "AMD" for AMD systems with FFH for ACPI C1.

Um, is it good idea?

First, you are changing kernel API.

> @@ -107,9 +108,14 @@ static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
>  			"Monitor-Mwait will be used to enter C-%d state\n",
>  			cx->type);
>  	}
> -	snprintf(cx->desc,
> -			ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> -			cx->address);
> +	if (c->x86_vendor == X86_VENDOR_INTEL)
> +		snprintf(cx->desc,
> +			 ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> +			 cx->address);
> +	else
> +		snprintf(cx->desc,
> +			 ACPI_CX_DESC_LEN, "ACPI FFH AMD MWAIT 0x%x",
> +			 cx->address);

Second, I read it as "Intel MWAIT" instruction is used. Yes, AMD cpu can
use Intel MWAIT, too...

Third, there are more CPU vendors out there.

									Pavel
Len Brown Aug. 8, 2018, 8:01 p.m. UTC | #2
I think it is sufficient to simply delete the "INTEL" in that string.

In the unlikely event that this "change to a kernel API" breaks
something, we can add it back.

-Len

On Wed, Aug 8, 2018 at 3:59 PM Pavel Machek <pavel@ucw.cz> wrote:
>
> On Wed 2018-08-08 13:47:35, Prarit Bhargava wrote:
> > commit 5209654a46ee ("x86/ACPI/cstate: Allow ACPI C1 FFH MWAIT use on AMD
> > systems") allows use of FFH for ACPI C1 but tools like cpupower and turbostat
> > display INTEL for the cstate description.
> >
> > Output "AMD" for AMD systems with FFH for ACPI C1.
>
> Um, is it good idea?
>
> First, you are changing kernel API.
>
> > @@ -107,9 +108,14 @@ static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
> >                       "Monitor-Mwait will be used to enter C-%d state\n",
> >                       cx->type);
> >       }
> > -     snprintf(cx->desc,
> > -                     ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> > -                     cx->address);
> > +     if (c->x86_vendor == X86_VENDOR_INTEL)
> > +             snprintf(cx->desc,
> > +                      ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> > +                      cx->address);
> > +     else
> > +             snprintf(cx->desc,
> > +                      ACPI_CX_DESC_LEN, "ACPI FFH AMD MWAIT 0x%x",
> > +                      cx->address);
>
> Second, I read it as "Intel MWAIT" instruction is used. Yes, AMD cpu can
> use Intel MWAIT, too...
>
> Third, there are more CPU vendors out there.
>
>                                                                         Pavel
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Pavel Machek Aug. 8, 2018, 9:06 p.m. UTC | #3
On Wed 2018-08-08 16:01:41, Len Brown wrote:
> I think it is sufficient to simply delete the "INTEL" in that string.
> 
> In the unlikely event that this "change to a kernel API" breaks
> something, we can add it back.

I'd just leave it alone. But yes, just deleting INTEL is better than
patch below.
								Pavel

> > On Wed 2018-08-08 13:47:35, Prarit Bhargava wrote:
> > > commit 5209654a46ee ("x86/ACPI/cstate: Allow ACPI C1 FFH MWAIT use on AMD
> > > systems") allows use of FFH for ACPI C1 but tools like cpupower and turbostat
> > > display INTEL for the cstate description.
> > >
> > > Output "AMD" for AMD systems with FFH for ACPI C1.
> >
> > Um, is it good idea?
> >
> > First, you are changing kernel API.
> >
> > > @@ -107,9 +108,14 @@ static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
> > >                       "Monitor-Mwait will be used to enter C-%d state\n",
> > >                       cx->type);
> > >       }
> > > -     snprintf(cx->desc,
> > > -                     ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> > > -                     cx->address);
> > > +     if (c->x86_vendor == X86_VENDOR_INTEL)
> > > +             snprintf(cx->desc,
> > > +                      ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
> > > +                      cx->address);
> > > +     else
> > > +             snprintf(cx->desc,
> > > +                      ACPI_CX_DESC_LEN, "ACPI FFH AMD MWAIT 0x%x",
> > > +                      cx->address);
> >
> > Second, I read it as "Intel MWAIT" instruction is used. Yes, AMD cpu can
> > use Intel MWAIT, too...
> >
> > Third, there are more CPU vendors out there.
> >
> >                                                                         Pavel
> > --
> > (english) http://www.livejournal.com/~pavelmachek
> > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> 
> 
>
Prarit Bhargava Aug. 9, 2018, 11:43 a.m. UTC | #4
On 08/08/2018 03:58 PM, Pavel Machek wrote:
> On Wed 2018-08-08 13:47:35, Prarit Bhargava wrote:
>> commit 5209654a46ee ("x86/ACPI/cstate: Allow ACPI C1 FFH MWAIT use on AMD
>> systems") allows use of FFH for ACPI C1 but tools like cpupower and turbostat
>> display INTEL for the cstate description.
>>
>> Output "AMD" for AMD systems with FFH for ACPI C1.
> 
> Um, is it good idea?
>> First, you are changing kernel API.

I thought about that and the AMD support was only added a year ago so I think it
is okay to change.  Secondly, I did a grep for the use of the desc file in the
Fedora sources and only found a few places where the file is referenced.  They
all *report* the data but do not use it to make a decision.

For example, turbostat and cpupower only return the data to the console.

> 
>> @@ -107,9 +108,14 @@ static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
>>  			"Monitor-Mwait will be used to enter C-%d state\n",
>>  			cx->type);
>>  	}
>> -	snprintf(cx->desc,
>> -			ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
>> -			cx->address);
>> +	if (c->x86_vendor == X86_VENDOR_INTEL)
>> +		snprintf(cx->desc,
>> +			 ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
>> +			 cx->address);
>> +	else
>> +		snprintf(cx->desc,
>> +			 ACPI_CX_DESC_LEN, "ACPI FFH AMD MWAIT 0x%x",
>> +			 cx->address);
> 
> Second, I read it as "Intel MWAIT" instruction is used. Yes, AMD cpu can
> use Intel MWAIT, too...

That's true but the weirdness of seeing INTEL on an AMD box there made me push
this patch.

> 
> Third, there are more CPU vendors out there.

Not in this code.  It is AMD & Intel only.  I thought about dropping INTEL, and
also switching to X86.

Should we drop INTEL from the above or not (as suggested later in this thread)?
It feels like everyone is on the fence about it.

P.

> 
> 									Pavel
>
Len Brown Aug. 9, 2018, 4:25 p.m. UTC | #5
>> "ACPI FFH INTEL MWAIT 0x%x"

> Should we drop INTEL from the above or not (as suggested later in this thread)?
> It feels like everyone is on the fence about it.

Okay with me to drop the "INTEL" part of this string -- it actually
doesn't add any information.

thanks,
-Len
diff mbox series

Patch

diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c
index dde437f5d14f..f10d3c673519 100644
--- a/arch/x86/kernel/acpi/cstate.c
+++ b/arch/x86/kernel/acpi/cstate.c
@@ -76,6 +76,7 @@  static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
 	unsigned int edx_part;
 	unsigned int cstate_type; /* C-state type and not ACPI C-state type */
 	unsigned int num_cstate_subtype;
+	struct cpuinfo_x86 *c = &boot_cpu_data;
 
 	cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &edx);
 
@@ -107,9 +108,14 @@  static long acpi_processor_ffh_cstate_probe_cpu(void *_cx)
 			"Monitor-Mwait will be used to enter C-%d state\n",
 			cx->type);
 	}
-	snprintf(cx->desc,
-			ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
-			cx->address);
+	if (c->x86_vendor == X86_VENDOR_INTEL)
+		snprintf(cx->desc,
+			 ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x",
+			 cx->address);
+	else
+		snprintf(cx->desc,
+			 ACPI_CX_DESC_LEN, "ACPI FFH AMD MWAIT 0x%x",
+			 cx->address);
 out:
 	return retval;
 }