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

vitaly prosyak vprosyak at amd.com
Thu Jan 16 15:43:11 UTC 2025


Hi Kamil,

I have sent the review to Sunil, but we were using the internal review process. I believe Sunil is aware of the build failure, and we discussed how to address it. Until the build failure is resolved and the header is updated or the new code is guarded, we will not proceed with the merge.

Thanks for your help!

Vitaly

On 2025-01-16 06:51, Kamil Konieczny wrote:
> 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