[PATCH 4/5] KVM: x86: Expose Zhaoxin PHE2 CPUID feature

From: Ewan Hai

Date: Wed May 13 2026 - 04:31:45 EST


Advertise the Zhaoxin PadLock Hash Engine v2 to guests via CPUID0xC0000001 EDX bits 25 (PHE2) and 26 (PHE2_EN). PHE2 extends thePadLock hash family with SHA-384 and SHA-512 support per FIPS 180-3,complementing the existing PHE feature (SHA-1 and SHA-256).Two user-mode instructions are exposed, documented in the ZhaoxinPadLock Instruction Reference, chapter 3 ("Hash Engine"): - REP XSHA384 (encoding F3 0F A6 D8, subsection 3.3) - REP XSHA512 (encoding F3 0F A6 E0, subsection 3.4)Both consume software-padded 128-byte blocks (RCX = block count, RSI =input, RDI = state) and produce hash output in the state buffer.Both instructions are user-mode and available in all CPU modes, with noassociated MSR control. The PHE2 and PHE2_EN bits are redundant byhardware design (set or cleared together) and both serve purely asCPUID-level feature-presence reporting flags requiring no KVMemulation. Both bits are advertised because different software mayprobe either one when checking for PHE2 availability.Signed-off-by: Ewan Hai <ewanhai-oc@xxxxxxxxxxx>--- arch/x86/kvm/cpuid.c | 2 ++ arch/x86/kvm/reverse_cpuid.h | 2 ++ 2 files changed, 4 insertions(+)diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.cindex 087c41341240..3fb81f7a6107 100644--- a/arch/x86/kvm/cpuid.c+++ b/arch/x86/kvm/cpuid.c@@ -1288,6 +1288,8 @@ void kvm_initialize_cpu_caps(void) F(PMM_EN), F(RNG2), F(RNG2_EN),+ F(PHE2),+ F(PHE2_EN), ); /*diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.hindex 859ba43126d8..f28300c2d5e0 100644--- a/arch/x86/kvm/reverse_cpuid.h+++ b/arch/x86/kvm/reverse_cpuid.h@@ -83,6 +83,8 @@ #define X86_FEATURE_CCS_EN KVM_X86_FEATURE(CPUID_C000_0001_EDX, 5) #define X86_FEATURE_RNG2 KVM_X86_FEATURE(CPUID_C000_0001_EDX, 22) #define X86_FEATURE_RNG2_EN KVM_X86_FEATURE(CPUID_C000_0001_EDX, 23)+#define X86_FEATURE_PHE2 KVM_X86_FEATURE(CPUID_C000_0001_EDX, 25)+#define X86_FEATURE_PHE2_EN KVM_X86_FEATURE(CPUID_C000_0001_EDX, 26) struct cpuid_reg { u32 function;-- 2.34.1




ä¿?å¯?声æ??
æ?¬é?®ä»¶å?«æ??ä¿?å¯?æ??ä¸?æ??ä¿¡æ?¯ï¼?ä»?ä¾?æ??å®?æ?¶ä»¶äººä½¿ç?¨ã??严ç¦?对æ?¬é?®ä»¶æ??å?¶å??容å??ä»»ä½?æ?ªç»?æ??æ??ç??æ?¥é??ã??使ç?¨ã??å¤?å?¶æ??转å??ã??

This email contains confidential or legally privileged information and is for the sole use of its intended recipient. Any unauthorized review, use, copying or forwarding of this email or the content of this email is strictly prohibited.