[x86/cpuid] Question regarding historic leaf 0x80000000 code

"Ahmed S. Darwish" <[email protected]>
Newsgroups dev.linux.lists.x86-cpuid,org.kernel.vger.linux-kernel
Message-ID <Z9xtfC5pL-g4LYvK@lx-t490>
Hi hpa,

As you probably know by now, we're working on a centralized "CPUID table"
data model, on top of the cleanups at:

    https://lore.kernel.org/x86-cpuid/[email protected]
    https://lore.kernel.org/x86-cpuid/[email protected]
    https://lore.kernel.org/x86-cpuid/[email protected]

The idea is to remove all the direct CPUID queries from the x86 code, and
access a pre-filled table instead (with caveats outside the scope of this
question.)

While changing the CPUID queries one by one, I've stumbled with:

    => arch/x86/kernel/cpu/common.c
    void get_cpu_cap(struct cpuinfo_x86 *c)
    {
	...
	/* AMD-defined flags: level 0x80000001 */
	eax = cpuid_eax(0x80000000);
	c->extended_cpuid_level = eax;

	if ((eax & 0xffff0000) == 0x80000000) {
		if (eax >= 0x80000001) {
			cpuid(0x80000001, &eax, &ebx, &ecx, &edx);

			c->x86_capability[CPUID_8000_0001_ECX] = ecx;
			c->x86_capability[CPUID_8000_0001_EDX] = edx;
		}
	}
	...
    }

You've contributed that snippet here:

    https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?h=2.4.0-test11pre5&id=67ad24e6d39c3

Do you remember what was the rationale for the "if (eax & 0xffff0000) ==
0x80000000" check?

You've also contriubted a similar check to head_32.S:

    https://lore.kernel.org/r/[email protected]

    /* Check if extended functions are implemented */
    movl $0x80000000, %eax
    cpuid
    /* Value must be in the range 0x80000001 to 0x8000ffff */
    subl $0x80000001, %eax
    cmpl $(0x8000ffff-0x80000001), %eax
    ja .Lenable_paging

So I would assume, it would be safe to have a similar check in our
centralized "system CPUID table" scanner.

In all cases, if you know more details, it would be great to know, so
that I add it in the centralized CPUID table patch queue changelog (in a
separate patch.)

Thanks a lot!

--
Ahmed S. Darwish
Linutronix GmbH
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.