From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f47.google.com (mail-dl1-f47.google.com [74.125.82.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BDF33A785C for ; Wed, 13 May 2026 09:36:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778665010; cv=none; b=KbSwBL3XhL0WJK3dsOl7A6VivOqfhrEH5NB4GOerp/zF1Om4jVVpFT4WeUOh7aR9t6CcnfRwdyrSmzQK4poAd4eTdBoRbPw3Vqq41CDuTrAc7g5NXwKs9kdefr82ONCS38YAoOTywZzLCZPhCSXfCoA+1nk3vxKCJK1BtuvsdW0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778665010; c=relaxed/simple; bh=wZJWjnqIbm8WDtqhSpFj+q2nylcM9L473xSd9G+0pUI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PkDEL+c6qV0K9G9JBORpAmziYHC0Q6USS88gxI472TwCAYZW68K1ova0xSguq+mnscZBgmD7wPd3QubboqS3FB5QISoy0J+IDP/VBwuX+FcAwwgqtVu1FfElvHZ2srCdUh198mIOpghKPCy3bn9LxCyy51l93QbsRsMFxnm+1FY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IaHrVgqv; arc=none smtp.client-ip=74.125.82.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IaHrVgqv" Received: by mail-dl1-f47.google.com with SMTP id a92af1059eb24-12c8f9846c8so9601596c88.0 for ; Wed, 13 May 2026 02:36:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778665009; x=1779269809; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oMLcF3QpmorqUOiR9XBa4GuV1rXFYpYVsToIbq6Xxoo=; b=IaHrVgqvHRLEcqd/mh1pC17ScnAtyic1Sse8spo84EYjUy1fMn0HeHB/BetVEG+ojL PptDRhwvUjSbBLJqxpDjpI/TNbdWTfTa5DuU8tJa8nD7CGfMwfhspEicixYj2jlWw/Co U1ilxOEdaamE/k4d9XrvXsXH3BuIAATlfYBq9tP6wTof8E1o58dgyVdTp8uc10YyQQhW tNumKX1ViJMDOubN2MExKBsrnSs1SKR+LgAV2d3LnfcyEUK0eO3B16tqEsLbKn0Rc1ol QOmfObvX48RqkAAj794euS0VcF7jFarKm/xwyTuTkc/dNw2yb+qu4IVBhZgo2RfSVHxP +bpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778665009; x=1779269809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oMLcF3QpmorqUOiR9XBa4GuV1rXFYpYVsToIbq6Xxoo=; b=faNVxnbTOH2dodVzVIQ8r3RA0yEF5pKYHoIddnpIwmXhNNyM/8538BqRv88Oodm78+ QYbwMNa/8HvkoIL0/SB2IGDTVBhvPCibeKJzmDM9/DZO3uiIngwyW7BT+rPXv7fczFB5 EhF8mFJemK4R3T5XZqsysJaTDtW8gpYCw7N9XaKjB7Pf4QbCM5OU03KOh35SXWoSvaK0 WH3PWxdoZJnE29vXZpxy7o6yk0fZFRiryai5o9LCBCXZof6HhW4Edrv57kjJ/KHsL+8l C8Nb3CS6xE6+s7hvdL45pCwf+ttEst1kFIvqZRZDxyg4Zj9Ih2CdKCXIASC3LV6p+wHQ i3dA== X-Forwarded-Encrypted: i=1; AFNElJ/SGL5wdd6FEwKGcctWN089CJBe6yyjuPk60j2oH9iOB1o8JapvPWHvSrJ5RDKct51XsfV3m44blcPme4M=@vger.kernel.org X-Gm-Message-State: AOJu0YxkkQtQyawTwKU7XWuo8IFbfr0GDJRrOR3oYrg7skwTY9463Qi/ j4egS2QeTgHtG3Iur9OolfC2gKqjHqE0CMQhv0WQW8+LligwDZ6hOgTj X-Gm-Gg: Acq92OEUh/l9IBys3yr2/Z6mnLEMKFvChPOW7LlqavRZ2UzOGdPwbZ2l0Iw6Ipbbhqx GogEO5DmTXpq+9t5XcBlKmlFDgSZh5ckWqWThMAbK0Xisvk1SMoez3ayEtVrLdzj1DajIgzNec5 BxSfND+GQ2r1xQdhPFGW/HYgJZy+ZoblC7dtDmXJv3tnHgtrT9Qh2rxvuHDOeQHo8Ai1gvI5U6e S6TPU3+LCQ1h2Oum9tIjcQr8bC3q7X/o30lehTe0RLaKoNo6ITWs/C6t7VXE+pLHCnPjBoChPw3 u/Jl24ZVIF9rByDi37lhU5sI7gZuxkswwf1fmPWPvUtqOOs9aAa0J7WAGRuiTb/z262UYWQfbzi EULonn6E1Y2KscndhmqF7e+0u10oNtFO17BArwznngjEyuPTLS+GAGp22YcHnvxCSOvYnShfh4S ZLv0aiqYJxUqg1SlCUsTKBcCPrVWDpXVvcfRthvMD6 X-Received: by 2002:a05:7022:61a9:b0:12a:6fb7:8801 with SMTP id a92af1059eb24-1342ef46646mr1347803c88.14.1778665008685; Wed, 13 May 2026 02:36:48 -0700 (PDT) Received: from ewan-server.zhaoxin.com ([154.26.185.247]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8859eb4b7sm22100439eec.2.2026.05.13.02.36.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 02:36:48 -0700 (PDT) From: Ewan Hai To: seanjc@google.com, pbonzini@redhat.com, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: cobechen@zhaoxin.com, tonywwang@zhaoxin.com Subject: [PATCH 3/5] KVM: x86: Expose Zhaoxin RNG2 CPUID feature Date: Wed, 13 May 2026 17:36:31 +0800 Message-Id: <20260513093633.1608334-4-ewandevelop@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260513093633.1608334-1-ewandevelop@gmail.com> References: <20260513093633.1608334-1-ewandevelop@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Advertise the Zhaoxin second-generation hardware RNG to guests via CPUID 0xC0000001 EDX bits 22 (RNG2) and 23 (RNG2_EN). RNG2 is exposed by the REP XRNG2 instruction (encoding F3 0F A7 F8), documented in the Zhaoxin PadLock Instruction Reference, subsection 1.3 ("REP XRNG2"). It produces random bytes from two on-die RNG sources selectable via RAX bits[10:9] and an output mode (raw vs post-processed) controlled by RDX bits[1:0], providing high-quality entropy intended for cryptographic operations. REP XRNG2 is user-mode and available in all CPU modes, with no associated MSR control. The RNG2 and RNG2_EN bits are redundant by hardware design (set or cleared together) and both serve purely as CPUID-level feature-presence reporting flags requiring no KVM emulation. Both bits are advertised because different software may probe either one when checking for RNG2 availability. Signed-off-by: Ewan Hai --- 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.c index 8aaa3f20670e..087c41341240 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -1286,6 +1286,8 @@ void kvm_initialize_cpu_caps(void) F(PHE_EN), F(PMM), F(PMM_EN), + F(RNG2), + F(RNG2_EN), ); /* diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index a1cd9116ef63..859ba43126d8 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -81,6 +81,8 @@ #define X86_FEATURE_SM2_EN KVM_X86_FEATURE(CPUID_C000_0001_EDX, 1) #define X86_FEATURE_CCS KVM_X86_FEATURE(CPUID_C000_0001_EDX, 4) #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) struct cpuid_reg { u32 function; -- 2.34.1