[PATCH 3/8] lib/amdgpu: Add user mode queue support in ring context

Kamil Konieczny kamil.konieczny at linux.intel.com
Thu Jan 16 11:51:50 UTC 2025


Hi Sunil,
On 2025-01-16 at 12:22:06 +0530, Sunil Khatri wrote:
> Add the meta data to support the user mode command
> submission in the ring_context.
> 
> User mode command submission methods needs these
> resources to be initialized and to create/destroy queues.
> 
> Also once we have the queue created the queue id is
> used to submit the work load to the h/w.
> 
> Signed-off-by: Sunil Khatri <sunil.khatri at amd.com>
> Reviewed-by: Vitaly Prosyak vitaly.prosyak at amd.com>

Why do you send it here with r-b already added?
Was is sent in some previous series and got r-b on mailinglist?
I do not see any info about this in cover letter.

Before merging please address build failures:

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1346611 for the overview.

build:tests-debian-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/69437776):
  ../lib/amdgpu/amd_user_queue.c: In function ‘amdgpu_user_queue_destroy’:
  ../lib/amdgpu/amd_user_queue.c:183:6: error: implicit declaration of function ‘amdgpu_free_userqueue’; did you mean ‘amdgpu_open_devices’? [-Werror=implicit-function-declaration]
  r = amdgpu_free_userqueue(device_handle, ctxt->queue_id);
      ^~~~~~~~~~~~~~~~~~~~~
        amdgpu_open_devices
  ../lib/amdgpu/amd_user_queue.c:183:6: warning: nested extern declaration of ‘amdgpu_free_userqueue’ [-Wnested-externs]
  ../lib/amdgpu/amd_user_queue.c: In function ‘amdgpu_user_queue_create’:
  ../lib/amdgpu/amd_user_queue.c:387:7: error: implicit declaration of function ‘amdgpu_create_userqueue’; did you mean ‘amdgpu_cs_create_semaphore’? [-Werror=implicit-function-declaration]
  r = amdgpu_create_userqueue(device_handle, AMDGPU_HW_IP_GFX,
      ^~~~~~~~~~~~~~~~~~~~~~~
             amdgpu_cs_create_semaphore
    ../lib/amdgpu/amd_user_queue.c:387:7: warning: nested extern declaration of ‘amdgpu_create_userqueue’ [-Wnested-externs]
      cc1: some warnings being treated as errors
   ninja: build stopped: subcommand failed.
    section_end:1737012393:step_script
    section_start:1737012393:cleanup_file_variables
    Cleaning up project directory and file based variables
   section_end:1737012394:cleanup_file_variables
     ERROR: Job failed: exit code 1

Regards,
Kamil

> ---
>  lib/amdgpu/amd_ip_blocks.h | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/lib/amdgpu/amd_ip_blocks.h b/lib/amdgpu/amd_ip_blocks.h
> index dc4d87151..9d110d402 100644
> --- a/lib/amdgpu/amd_ip_blocks.h
> +++ b/lib/amdgpu/amd_ip_blocks.h
> @@ -86,6 +86,14 @@ struct dynamic_test{
>  	bool support_sdma;
>  };
>  
> +struct amdgpu_userq_bo {
> +	amdgpu_bo_handle handle;
> +	amdgpu_va_handle va_handle;
> +	uint64_t mc_addr;
> +	uint64_t size;
> +	void *ptr;
> +};
> +
>  #define for_each_test(t, T) for(typeof(*T) *t = T; t->name; t++)
>  
>  /* set during execution */
> @@ -141,6 +149,29 @@ struct amdgpu_ring_context {
>  	struct amdgpu_cs_ib_info ib_info;     /* amdgpu_bo_list_create */
>  	struct amdgpu_cs_request ibs_request; /* amdgpu_cs_query_fence_status */
>  	struct amdgpu_cs_err_codes err_codes;
> +
> +	/* User queue resources */
> +	struct  amdgpu_userq_bo queue;
> +	struct  amdgpu_userq_bo shadow;
> +	struct  amdgpu_userq_bo doorbell;
> +	struct  amdgpu_userq_bo rptr;
> +	struct  amdgpu_userq_bo wptr;
> +	struct  amdgpu_userq_bo csa;
> +	struct  amdgpu_userq_bo eop;
> +
> +	uint32_t *queue_cpu;
> +	uint64_t *wptr_cpu;
> +	uint64_t *doorbell_cpu;
> +
> +	uint32_t db_handle;
> +	uint32_t queue_id;
> +	uint32_t npkt;
> +
> +	uint32_t timeline_syncobj_handle;
> +	uint64_t point;
> +	bool user_queue;
> +
> +	struct drm_amdgpu_info_device dev_info;
>  };
>  
>  
> -- 
> 2.34.1
> 


More information about the igt-dev mailing list