]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tools/x86/kcpuid: Extend CPUID index mask macro
authorAhmed S. Darwish <darwi@linutronix.de>
Mon, 24 Mar 2025 14:20:33 +0000 (15:20 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 25 Mar 2025 08:53:46 +0000 (09:53 +0100)
Extend the CPUID index mask macro from 0x80000000 to 0xffff0000.  This
accommodates the Transmeta (0x80860000) and Centaur (0xc0000000) index
ranges which will be later added.

This also automatically sets CPUID_FUNCTION_MASK to 0x0000ffff, which is
the actual correct value.  Use that macro, instead of the 0xffff literal
where appropriate.

Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20250324142042.29010-13-darwi@linutronix.de
tools/arch/x86/kcpuid/kcpuid.c

index 7790136f04dc9e6ff87e2ed5a143c2313c94a9a4..1f48de343d4da4ca558843f2ad9d0fb304dfb31e 100644 (file)
@@ -71,7 +71,7 @@ enum range_index {
        RANGE_EXT = 0x80000000,         /* Extended */
 };
 
-#define CPUID_INDEX_MASK               0x80000000
+#define CPUID_INDEX_MASK               0xffff0000
 #define CPUID_FUNCTION_MASK            (~CPUID_INDEX_MASK)
 
 struct cpuid_range {
@@ -173,7 +173,7 @@ static bool cpuid_store(struct cpuid_range *range, u32 f, int subleaf,
         * Cut off vendor-prefix from CPUID function as we're using it as an
         * index into ->funcs.
         */
-       func = &range->funcs[f & 0xffff];
+       func = &range->funcs[f & CPUID_FUNCTION_MASK];
 
        if (!func->leafs) {
                func->leafs = malloc(sizeof(struct subleaf));
@@ -228,7 +228,7 @@ void setup_cpuid_range(struct cpuid_range *range)
 
        cpuid(range->index, max_func, ebx, ecx, edx);
 
-       idx_func = (max_func & 0xffff) + 1;
+       idx_func = (max_func & CPUID_FUNCTION_MASK) + 1;
        range->funcs = malloc(sizeof(struct cpuid_func) * idx_func);
        if (!range->funcs)
                err(EXIT_FAILURE, NULL);
@@ -512,7 +512,7 @@ static inline struct cpuid_func *index_to_func(u32 index)
        if (!range)
                return NULL;
 
-       func_idx = index & 0xffff;
+       func_idx = index & CPUID_FUNCTION_MASK;
        if ((func_idx + 1) > (u32)range->nr)
                return NULL;