[PATCH v7 074/120] x86/cpuid: Introduce cpuid_subleaf_raw()

"Ahmed S. Darwish" <[email protected]> Thu, 28 May 2026 17:38:36 +0200
Newsgroups dev.linux.lists.x86-cpuid,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
It is required for the conversion of SGX CPUID(0x12) call sites to the
parsed CPUI API.

Signed-off-by: Ahmed S. Darwish <[email protected]>
---
 arch/x86/include/asm/cpuid/api.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/x86/include/asm/cpuid/api.h b/arch/x86/include/asm/cpuid/api.h
index 540f886a61cd..1c0bb7ed4d45 100644
--- a/arch/x86/include/asm/cpuid/api.h
+++ b/arch/x86/include/asm/cpuid/api.h
@@ -381,6 +381,18 @@ static inline u32 cpuid_base_hypervisor(const char *sig, u32 leaves)
 #define cpuid_leaf_raw(_cpuinfo, _leaf)						\
 	((const struct cpuid_regs *)(cpuid_leaf(_cpuinfo, _leaf)))
 
+/**
+ * cpuid_subleaf_raw() - Access parsed CPUID data in raw format
+ * @_cpuinfo:	CPU capability structure reference ('struct cpuinfo_x86')
+ * @_leaf:	CPUID leaf, in compile-time 0xN format
+ * @_subleaf:	CPUID subleaf, in compile-time decimal format
+ *
+ * Similar to cpuid_subleaf(), but returns a raw 'struct cpuid_regs' pointer to
+ * the parsed CPUID data instead of a "typed" <asm/cpuid/leaf_types.h> pointer.
+ */
+#define cpuid_subleaf_raw(_cpuinfo, _leaf, _subleaf)				\
+	((const struct cpuid_regs *)(cpuid_subleaf(_cpuinfo, _leaf, _subleaf)))
+
 /*
  * Call-site APIs for CPUID leaves with a subleaf range:
  */
-- 
2.54.0