[igt-dev] [PATCH i-g-t v2 02/10] lib/xe_query: Add region helpers and missing doc
Kamil Konieczny
kamil.konieczny at linux.intel.com
Wed Apr 19 14:15:24 UTC 2023
Hi Zbigniew,
On 2023-04-18 at 09:25:27 +0200, Zbigniew Kempczyński wrote:
> For easier iterate over memory regions and produce dynamic subtests
> add xe_region_name() helper.
>
> As Xe requires buffer size alignment during creating bo add
> xe_min_page_size() helper.
>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> lib/xe/xe_query.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> lib/xe/xe_query.h | 2 ++
> 2 files changed, 47 insertions(+)
>
> diff --git a/lib/xe/xe_query.c b/lib/xe/xe_query.c
> index 2b627a78ac..bd5eb1d189 100644
> --- a/lib/xe/xe_query.c
> +++ b/lib/xe/xe_query.c
> @@ -422,6 +422,13 @@ struct drm_xe_engine_class_instance *xe_hw_engine(int fd, int idx)
> return &xe_dev->hw_engines[idx];
> }
>
> +/**
> + * xe_mem_region:
> + * @fd: xe device fd
> + * @region: region mask
> + *
> + * Returns memory region structure for @region mask.
> + */
> struct drm_xe_query_mem_region *xe_mem_region(int fd, uint64_t region)
> {
> struct xe_device *xe_dev;
> @@ -434,6 +441,44 @@ struct drm_xe_query_mem_region *xe_mem_region(int fd, uint64_t region)
> return &xe_dev->mem_usage->regions[region_idx];
> }
>
> +/**
> + * xe_region_name:
> + * @region: region mask
> + *
> + * Returns region string like "system" or "vram-n" where n=0...62.
> + */
> +const char *xe_region_name(uint64_t region)
> +{
> + static char **vrams;
> + int region_idx = ffs(region) - 1;
> +
> + /* Populate the array */
> + if (!vrams) {
> + vrams = calloc(64, sizeof(char *));
> + for (int i = 0; i < 64; i++) {
> + if (i != 0)
> + asprintf(&vrams[i], "vram-%d", i - 1);
> + else
> + asprintf(&vrams[i], "system");
> + igt_assert(vrams[i]);
> + }
> + }
> +
> + return vrams[region_idx];
> +}
> +
> +/**
> + * xe_min_page_size:
> + * @fd: xe device fd
> + * @region: region mask
> + *
> + * Returns minimum page size for @region.
> + */
> +uint32_t xe_min_page_size(int fd, uint64_t region)
> +{
> + return xe_mem_region(fd, region)->min_page_size;
> +}
> +
> /**
> * xe_number_hw_engine:
> * @fd: xe device fd
> diff --git a/lib/xe/xe_query.h b/lib/xe/xe_query.h
> index 0d4b810a10..f49acb1d7b 100644
> --- a/lib/xe/xe_query.h
> +++ b/lib/xe/xe_query.h
> @@ -84,6 +84,8 @@ uint64_t vram_if_possible(int fd, int gt);
> struct drm_xe_engine_class_instance *xe_hw_engines(int fd);
> struct drm_xe_engine_class_instance *xe_hw_engine(int fd, int idx);
> struct drm_xe_query_mem_region *xe_mem_region(int fd, uint64_t region);
> +const char *xe_region_name(uint64_t region);
> +uint32_t xe_min_page_size(int fd, uint64_t region);
> unsigned int xe_number_hw_engines(int fd);
> bool xe_has_vram(int fd);
> //uint64_t xe_vram_size(int fd);
> --
> 2.34.1
>
More information about the igt-dev
mailing list