Re: [PATCH] KVM: x86: expose CPUID 0xC000_0000 for Zhaoxin "Shanghai" vendor

From: Sean Christopherson
Date: Tue Aug 12 2025 - 11:07:33 EST


On Sun, Aug 10, 2025, Ewan Hai wrote:
> rename the local constant CENTAUR_CPUID_SIGNATURE to ZHAOXIN_CPUID_SIGNATURE.

Why? I'm not inclined to rename any of the Centaur references, as I don't see
any point in effectively rewriting history. If we elect to rename things, then
it needs to be done in a separate patch, there needs to be proper justification,
and _all_ references should be converted, e.g. converting just this one macro
creates discrepancies even with cpuid.c, as there are multiple comments that
specifically talk about Centaur CPUID leaves.

> The constant is used only inside cpuid.c, so the rename is NFC outside this
> file.
>
> Signed-off-by: Ewan Hai <ewanhai-oc@xxxxxxxxxxx>
> ---
> arch/x86/kvm/cpuid.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> index e2836a255b16..beb83eaa1868 100644
> --- a/arch/x86/kvm/cpuid.c
> +++ b/arch/x86/kvm/cpuid.c
> @@ -1811,7 +1811,7 @@ static int do_cpuid_func(struct kvm_cpuid_array *array, u32 func,
> return __do_cpuid_func(array, func);
> }
>
> -#define CENTAUR_CPUID_SIGNATURE 0xC0000000
> +#define ZHAOXIN_CPUID_SIGNATURE 0xC0000000
>
> static int get_cpuid_func(struct kvm_cpuid_array *array, u32 func,
> unsigned int type)
> @@ -1819,8 +1819,9 @@ static int get_cpuid_func(struct kvm_cpuid_array *array, u32 func,
> u32 limit;
> int r;
>
> - if (func == CENTAUR_CPUID_SIGNATURE &&
> - boot_cpu_data.x86_vendor != X86_VENDOR_CENTAUR)
> + if (func == ZHAOXIN_CPUID_SIGNATURE &&
> + boot_cpu_data.x86_vendor != X86_VENDOR_CENTAUR &&
> + boot_cpu_data.x86_vendor != X86_VENDOR_ZHAOXIN)

Align indentation.

if (func == CENTAUR_CPUID_SIGNATURE &&
boot_cpu_data.x86_vendor != X86_VENDOR_CENTAUR &&
boot_cpu_data.x86_vendor != X86_VENDOR_ZHAOXIN)
return 0;

> return 0;
>
> r = do_cpuid_func(array, func, type);
> @@ -1869,7 +1870,7 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid,
> unsigned int type)
> {
> static const u32 funcs[] = {
> - 0, 0x80000000, CENTAUR_CPUID_SIGNATURE, KVM_CPUID_SIGNATURE,
> + 0, 0x80000000, ZHAOXIN_CPUID_SIGNATURE, KVM_CPUID_SIGNATURE,
> };
>
> struct kvm_cpuid_array array = {
> --
> 2.34.1
>