[igt-dev] [PATCH i-g-t v3 05/12] tests/xe/mmap: add some tests for cpu_caching and coh_mode
Mishra, Pallavi
pallavi.mishra at intel.com
Mon Oct 16 16:04:27 UTC 2023
> -----Original Message-----
> From: Auld, Matthew <matthew.auld at intel.com>
> Sent: Monday, October 16, 2023 7:15 AM
> To: igt-dev at lists.freedesktop.org
> Cc: Souza, Jose <jose.souza at intel.com>; Mishra, Pallavi
> <pallavi.mishra at intel.com>
> Subject: [PATCH i-g-t v3 05/12] tests/xe/mmap: add some tests for
> cpu_caching and coh_mode
>
> Ensure the various invalid combinations are rejected. Also ensure we can
> mmap and fault anything that is valid.
>
> Signed-off-by: Matthew Auld <matthew.auld at intel.com>
> Cc: José Roberto de Souza <jose.souza at intel.com>
> Cc: Pallavi Mishra <pallavi.mishra at intel.com>
Reviewed-by: Pallavi Mishra <pallavi.mishra at intel.com>
> ---
> tests/intel/xe_mmap.c | 77
> +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 77 insertions(+)
>
> diff --git a/tests/intel/xe_mmap.c b/tests/intel/xe_mmap.c index
> 7e7e43c00..09e9c8aae 100644
> --- a/tests/intel/xe_mmap.c
> +++ b/tests/intel/xe_mmap.c
> @@ -199,6 +199,80 @@ static void test_small_bar(int fd)
> gem_close(fd, bo);
> }
>
> +static void assert_caching(int fd, uint64_t flags, uint16_t cpu_caching,
> + uint16_t coh_mode, bool fail)
> +{
> + uint64_t size = xe_get_default_alignment(fd);
> + uint64_t mmo;
> + uint32_t handle;
> + uint32_t *map;
> + bool ret;
> +
> + ret = __xe_bo_create_caching(fd, 0, size, flags, cpu_caching,
> + coh_mode, &handle);
> + igt_assert(ret == fail);
> +
> + if (fail)
> + return;
> +
> + mmo = xe_bo_mmap_offset(fd, handle);
> + map = mmap(NULL, size, PROT_WRITE, MAP_SHARED, fd, mmo);
> + igt_assert(map != MAP_FAILED);
> + map[0] = 0xdeadbeaf;
> + gem_close(fd, handle);
> +}
> +
> +/**
> + * SUBTEST: cpu-caching-coh
> + * Description: Test cpu_caching and coh, including mmap behaviour.
> + * Test category: functionality test
> + */
> +static void test_cpu_caching(int fd)
> +{
> + if (vram_memory(fd, 0)) {
> + assert_caching(fd, vram_memory(fd, 0),
> + DRM_XE_GEM_CPU_CACHING_WC,
> DRM_XE_GEM_COH_NONE,
> + false);
> + assert_caching(fd, vram_memory(fd, 0),
> + DRM_XE_GEM_CPU_CACHING_WC,
> DRM_XE_GEM_COH_AT_LEAST_1WAY,
> + false);
> + assert_caching(fd, vram_memory(fd, 0) |
> system_memory(fd),
> + DRM_XE_GEM_CPU_CACHING_WC,
> DRM_XE_GEM_COH_NONE,
> + false);
> +
> + assert_caching(fd, vram_memory(fd, 0),
> + DRM_XE_GEM_CPU_CACHING_WB,
> DRM_XE_GEM_COH_NONE,
> + true);
> + assert_caching(fd, vram_memory(fd, 0),
> + DRM_XE_GEM_CPU_CACHING_WB,
> DRM_XE_GEM_COH_AT_LEAST_1WAY,
> + true);
> + assert_caching(fd, vram_memory(fd, 0) |
> system_memory(fd),
> + DRM_XE_GEM_CPU_CACHING_WB,
> DRM_XE_GEM_COH_NONE,
> + true);
> + assert_caching(fd, vram_memory(fd, 0) |
> system_memory(fd),
> + DRM_XE_GEM_CPU_CACHING_WB,
> DRM_XE_GEM_COH_AT_LEAST_1WAY,
> + true);
> + }
> +
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WB,
> + DRM_XE_GEM_COH_AT_LEAST_1WAY, false);
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WC,
> + DRM_XE_GEM_COH_NONE, false);
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WC,
> + DRM_XE_GEM_COH_AT_LEAST_1WAY, false);
> +
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WB,
> + DRM_XE_GEM_COH_NONE, true);
> + assert_caching(fd, system_memory(fd), -1, -1, true);
> + assert_caching(fd, system_memory(fd), 0, 0, true);
> + assert_caching(fd, system_memory(fd), 0,
> DRM_XE_GEM_COH_AT_LEAST_1WAY, true);
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WC, 0, true);
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WC + 1,
> + DRM_XE_GEM_COH_AT_LEAST_1WAY, true);
> + assert_caching(fd, system_memory(fd),
> DRM_XE_GEM_CPU_CACHING_WC,
> + DRM_XE_GEM_COH_AT_LEAST_1WAY + 1, true); }
> +
> igt_main
> {
> int fd;
> @@ -230,6 +304,9 @@ igt_main
> test_small_bar(fd);
> }
>
> + igt_subtest("cpu-caching-coh")
> + test_cpu_caching(fd);
> +
> igt_fixture
> drm_close_driver(fd);
> }
> --
> 2.41.0
More information about the igt-dev
mailing list