[PATCH 3/3] tests/intel/xe_exec_system_allocator: Rebind the prefetch ranges
Cavitt, Jonathan
jonathan.cavitt at intel.com
Wed May 14 21:47:06 UTC 2025
-----Original Message-----
From: Ch, Sai Gowtham <sai.gowtham.ch at intel.com>
Sent: Wednesday, May 14, 2025 1:58 PM
To: igt-dev at lists.freedesktop.org; Ch, Sai Gowtham <sai.gowtham.ch at intel.com>; Ghimiray, Himal Prasad <himal.prasad.ghimiray at intel.com>; Brost, Matthew <matthew.brost at intel.com>; Cavitt, Jonathan <jonathan.cavitt at intel.com>
Subject: [PATCH 3/3] tests/intel/xe_exec_system_allocator: Rebind the prefetch ranges
>
> From: Sai Gowtham Ch <sai.gowtham.ch at intel.com>
>
> Test rebinds the prefetch ranges to check the ideal behaviour of prefetch mechanism,
> expecting address ranges in the corresponding mem regions has to be created again and
> use those address ranges to submit workloads.
>
> v2: Enhance VRAM/SMEM/BIND flags in the selection loop of this test. (Jonathan Cavitt)
>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>
> Cc: Jonathan Cavitt <jonathan.cavitt at intel.com>
> Signed-off-by: Sai Gowtham Ch <sai.gowtham.ch at intel.com>
No additional notes:
Reviewed-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
-Jonathan Cavitt
> ---
> tests/intel/xe_exec_system_allocator.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/tests/intel/xe_exec_system_allocator.c b/tests/intel/xe_exec_system_allocator.c
> index d4f2e8d98..227c60d76 100644
> --- a/tests/intel/xe_exec_system_allocator.c
> +++ b/tests/intel/xe_exec_system_allocator.c
> @@ -141,6 +141,7 @@ static void signal_pdata(struct process_data *pdata)
> #define CPU_FAULT_PROCESS (0x1 << 3)
> #define CPU_FAULT_SAME_PAGE (0x1 << 4)
> #define VRAM (0x1 << 5)
> +#define BIND (0x1 << 6)
>
> static void process_check(void *ptr, uint64_t alloc_size, uint64_t stride,
> unsigned int flags)
> @@ -484,6 +485,12 @@ static void test_basic(int fd, struct drm_xe_engine_class_instance *eci,
> * @vram-SZ_4K: with size of SZ_4K on vram region
> * @vram-SZ_64K: with size of SZ_64K on vram region
> * @vram-SZ_2M: with size of SZ_2M on vram region
> + * @bind-smem-SZ_4K: with size of SZ_4K on vram and rebinding of smem region
> + * @bind-smem-SZ_64K: with size of SZ_64K on vram and rebinding of smem region
> + * @bind-smem-SZ_2M: with size of SZ_2M on vram and rebinding of smem region
> + * @bind-vram-SZ_4K: with size of SZ_4K on smem and rebinding of vram region
> + * @bind-vram-SZ_64K: with size of SZ_64K on smem and rebinding of vram region
> + * @bind-vram-SZ_2M: with size of SZ_2M on smem and rebinding of vram region
> */
> #define MAX_BATCH_DWORDS 16
> static void prefetch(int fd, struct drm_xe_engine_class_instance *eci,
> @@ -538,6 +545,13 @@ static void prefetch(int fd, struct drm_xe_engine_class_instance *eci,
> xe_vm_prefetch_async(fd, vm, 0, 0, addr, bo_size, sync, 1, flags & VRAM ? 1 : 0);
> xe_wait_ufence(fd, exec_ufence, USER_FENCE_VALUE, 0, NSEC_PER_SEC);
> exec.exec_queue_id = exec_queues;
> + if (flags & BIND) {
> + exec_ufence[0] = 0;
> + sync[0].addr = to_user_pointer(exec_ufence);
> + xe_vm_prefetch_async(fd, vm, 0, 0, addr, bo_size, sync, 1, flags & VRAM ? 0 : 1);
> + xe_wait_ufence(fd, exec_ufence, USER_FENCE_VALUE, 0, NSEC_PER_SEC);
> + exec_ufence[0] = 0;
> + }
>
> for (int i = 0; i < num_dwords; i++) {
> result_ptr = (uint32_t *)((uint8_t *)data + i * slice_size + 0x100);
> @@ -1765,6 +1779,13 @@ igt_main
> { "vram-SZ_4K", VRAM, SZ_4K},
> { "vram-SZ_64K", VRAM, SZ_64K},
> { "vram-SZ_2M", VRAM, SZ_2M},
> + { "bind-smem-SZ_4K", VRAM | BIND, SZ_4K},
> + { "bind-smem-SZ_64K", VRAM | BIND, SZ_64K},
> + { "bind-smem-SZ_2M", VRAM | BIND, SZ_2M},
> + { "bind-vram-SZ_4K", BIND, SZ_4K},
> + { "bind-vram-SZ_64K", BIND, SZ_64K},
> + { "bind-vram-SZ_2M", BIND, SZ_2M},
> + { NULL },
> {},
> }, *m;
>
> --
> 2.34.1
>
>
More information about the igt-dev
mailing list