mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
selftests/lam: Move cpu_has_la57() to use cpuinfo flag
In current form cpu_has_la57() reports platform's support for LA57 through reading the output of cpuid. A much more useful information is whether 5-level paging is actually enabled on the running system. Check whether 5-level paging is enabled by trying to map a page in the high linear address space. Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Alexander Potapenko <glider@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Shuah Khan <skhan@linuxfoundation.org> Link: https://lore.kernel.org/r/8b1ca51b13e6d94b5a42b6930d81b692cbb0bcbb.1737990375.git.maciej.wieczor-retman@intel.com
This commit is contained in:
parent
7ffb791423
commit
ec8f5b4659
|
|
@ -124,14 +124,18 @@ static inline int cpu_has_lam(void)
|
|||
return (cpuinfo[0] & (1 << 26));
|
||||
}
|
||||
|
||||
/* Check 5-level page table feature in CPUID.(EAX=07H, ECX=00H):ECX.[bit 16] */
|
||||
static inline int cpu_has_la57(void)
|
||||
static inline int la57_enabled(void)
|
||||
{
|
||||
unsigned int cpuinfo[4];
|
||||
int ret;
|
||||
void *p;
|
||||
|
||||
__cpuid_count(0x7, 0, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]);
|
||||
p = mmap((void *)HIGH_ADDR, PAGE_SIZE, PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
|
||||
|
||||
return (cpuinfo[2] & (1 << 16));
|
||||
ret = p == MAP_FAILED ? 0 : 1;
|
||||
|
||||
munmap(p, PAGE_SIZE);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -322,7 +326,7 @@ static int handle_mmap(struct testcases *test)
|
|||
flags, -1, 0);
|
||||
if (ptr == MAP_FAILED) {
|
||||
if (test->addr == HIGH_ADDR)
|
||||
if (!cpu_has_la57())
|
||||
if (!la57_enabled())
|
||||
return 3; /* unsupport LA57 */
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user