Re: [PATCH V1] x86/cstate: Add Zhaoxin/Centaur ACPI Cx FFH MWAIT support

From: Tony W Wang-oc
Date: Thu Jun 23 2022 - 23:05:34 EST


On 23/6/2022 23:55, Dave Hansen wrote:
On 6/22/22 18:26, Tony W Wang-oc wrote:
Recent Zhaoxin/Centaur CPUs support X86_FEATURE_MWAIT that implies
the MONITOR/MWAIT instructions can be used for ACPI Cx state.
The BIOS declares Cx state in _CST object to use FFH on Zhaoxin/Centaur
systems. So let function ffh_cstate_init() support These CPUs too.

Signed-off-by: Tony W Wang-oc <TonyWWang-oc@xxxxxxxxxxx>
---
 arch/x86/kernel/acpi/cstate.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c
index 7945eae..d4185e1 100644
--- a/arch/x86/kernel/acpi/cstate.c
+++ b/arch/x86/kernel/acpi/cstate.c
@@ -213,7 +213,9 @@ static int __init ffh_cstate_init(void)

     if (c->x86_vendor != X86_VENDOR_INTEL &&
         c->x86_vendor != X86_VENDOR_AMD &&
-        c->x86_vendor != X86_VENDOR_HYGON)
+        c->x86_vendor != X86_VENDOR_HYGON &&
+        c->x86_vendor != X86_VENDOR_CENTAUR &&
+        c->x86_vendor != X86_VENDOR_ZHAOXIN)
         return -1;

Many of the changelogs that add new vendors here go on about particular
C states declared in the _CST object and contents of CPUID leaf 5.

Why do we even _have_ a vendor check here? Shouldn't the code just be
going and doing the validation of the _CST object and CPUID that the
changelogs blather on about?


Yes, agree!

Will change as below. Please help to check if it is OK. Thanks a lot.
static int __init ffh_cstate_init(void)
{
- struct cpuinfo_x86 *c = &boot_cpu_data;
-
- if (c->x86_vendor != X86_VENDOR_INTEL &&
- c->x86_vendor != X86_VENDOR_AMD &&
- c->x86_vendor != X86_VENDOR_HYGON)
+ if (!boot_cpu_has(X86_FEATURE_MWAIT))
return -1;

Intel certainly made the original sin on this one (see 991528d7348), but
I hope _something_ changed in the 16 years since that patch went in.
.


--
Sincerely
TonyWWang-oc