[PATCH 2/2] xe_exec_system_allocator: Require huge pages reserved for huge page tests
Kamil Konieczny
kamil.konieczny at linux.intel.com
Tue Apr 29 20:36:53 UTC 2025
Hi Jonathan,
On 2025-04-29 at 19:29:56 +0000, Jonathan Cavitt wrote:
small nit about subject: use prefix, also avoid repetition,
so instead of
[PATCH 2/2] xe_exec_system_allocator: Require huge pages reserved for huge page tests
write for example:
[PATCH 2/2] tests/intel/xe_exec_system_allocator: Check for huge pages before thp tests
Btw this could be done at merge.
Regards,
Kamil
> Various subtests in xe_exec_system_allocator attempt to use the
> MAP_HUGETLB flag for mmap. Doing so will result in an ENOMEM error if
> there are no available huge pages, which can occur if none are reserved
> before boot time. So, skip the tests if no huge pages have been
> reserved by the kernel.
>
> Fixes: 41ee4d698fd8 ("tests/xe: Add system_allocator test")
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>
> ---
> tests/intel/xe_exec_system_allocator.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/tests/intel/xe_exec_system_allocator.c b/tests/intel/xe_exec_system_allocator.c
> index e1121a8627..8a55e0ff64 100644
> --- a/tests/intel/xe_exec_system_allocator.c
> +++ b/tests/intel/xe_exec_system_allocator.c
> @@ -964,6 +964,12 @@ struct test_exec_data {
> uint32_t expected_data;
> };
>
> +static void igt_require_hugepages(void)
> +{
> + igt_skip_on_f(!igt_get_meminfo("HugePages_Total"),
> + "Huge pages not reserved by the kernel!\n");
> +}
> +
> static void
> test_exec(int fd, struct drm_xe_engine_class_instance *eci,
> int n_exec_queues, int n_execs, size_t bo_size,
> @@ -1005,6 +1011,9 @@ test_exec(int fd, struct drm_xe_engine_class_instance *eci,
> if (flags & EVERY_OTHER_CHECK && odd(n_execs))
> return;
>
> + if (flags & HUGE_PAGE)
> + igt_require_hugepages();
> +
> if (flags & EVERY_OTHER_CHECK)
> igt_assert(flags & MREMAP);
>
> @@ -1439,6 +1448,9 @@ threads(int fd, int n_exec_queues, int n_execs, size_t bo_size,
> if ((FILE_BACKED | FORK_READ) & flags)
> return;
>
> + if (flags & HUGE_PAGE)
> + igt_require_hugepages();
> +
> xe_for_each_engine(fd, hwe)
> ++n_engines;
>
> @@ -1550,6 +1562,9 @@ processes(int fd, int n_exec_queues, int n_execs, size_t bo_size,
> if (flags & FORK_READ)
> return;
>
> + if (flags & HUGE_PAGE)
> + igt_require_hugepages();
> +
> map_fd = open(sync_file, O_RDWR | O_CREAT, 0x666);
> posix_fallocate(map_fd, 0, sizeof(*pdata));
> pdata = mmap(NULL, sizeof(*pdata), PROT_READ |
> --
> 2.43.0
>
More information about the igt-dev
mailing list