Re: [PATCH] x86: Prefer MWAIT over HALT on AMD processors

From: Dave Hansen
Date: Thu Apr 07 2022 - 17:16:57 EST


On 4/6/22 07:23, Limonciello, Mario wrote:
> To confirm the availability of the MSR for a particular CPU, you can look
> at the PPR for a family 19h CPU. For example here is family 19h model 01h:
> https://www.amd.com/en/support/tech-docs/processor-programming-reference-ppr-for-amd-family-19h-model-01h-revision-b1?msclkid=f5047d01b5b211ec8d619d1385260e2d

I don't want to give you too hard of a time on this. But, that's not
architecture, that's just telling folks what the implementation is on
*one* CPU model. Don't get me wrong: these model-specific docs are
great, and I wish Intel published something like that.

But, the code as written depends on behavior for *all* of family 0x19:

> case 0x17: fallthrough;
> case 0x19: init_amd_zn(c); break;

So, while the docs for "family 19h model 01h" are *consistent* with this
code, there's also nothing preventing the docs for "family 19h model
02h" from breaking this new MWAIT code.

Now, AMD is full of smart folks that aren't going out of their way to
try and break existing software. But, actual documentation of the
*architecture* is really preferable to what we have now. It helps
establish a shared hardware/software contract that keeps both sides honest.

What's missing is something that says:

All AMD family 0x17 and 0x19 that enumerate support for MWAIT
also support this "early MWAIT" implementation

That represents a promise from AMD that this can't break in the future.
It both gives us something unambiguous to write code with *and*
something to help nudge our hardware and microcode colleagues if they
start to do something funny in the future.

Just having that in the changelog would be fine, and a genuine
improvement over what we have now. Having it one of the
model-independent architecture manuals would be even better.