Re: selftests: mincore: mincore_selftest fails only on qemu-armv7

From: Arnd Bergmann
Date: Mon May 15 2023 - 08:14:43 EST


On Mon, May 15, 2023, at 13:51, Dan Carpenter wrote:
> On Mon, May 15, 2023 at 03:29:02PM +0530, Naresh Kamboju wrote:
>> The selftests: mincore: mincore_selftest fails only on qemu-armv7 running
>
> tools/testing/selftests/mincore/mincore_selftest.c
> 139 TEST(check_huge_pages)
> 140 {
> 141 unsigned char vec[1];
> 142 char *addr;
> 143 int retval;
> 144 int page_size;
> 145
> 146 page_size = sysconf(_SC_PAGESIZE);
> 147
> 148 errno = 0;
> 149 addr = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
> 150 MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
> 151 -1, 0);
> 152 if (addr == MAP_FAILED) {
> 153 if (errno == ENOMEM)
>
> On Armv7 is a 32bit machine so HUGETLB isn't enabled and the errno can
> be -EINVAL. It's has returned this for 10 years.

I expected it to be enabled on 32-bit as well, but I see that
on normal ARMv7 without CONFIG_ARM_LPAE, it is indeed
always turned off, and the asm/pgtable-2level.h does not
define a way to use sections or supersections in user space:

arch/arm/Kconfig: select ARCH_SUPPORTS_HUGETLBFS if ARM_LPAE

Arnd