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

From: Ahmed S. Darwish

Date: Thu May 28 2026 - 12:27:31 EST


It is required for the conversion of SGX CPUID(0x12) call sites to the
parsed CPUI API.

Signed-off-by: Ahmed S. Darwish <darwi@xxxxxxxxxxxxx>
---
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