[PATCH 1/4] drm/amdkfd: Rename grace_period to wait_times
Kim, Jonathan
Jonathan.Kim at amd.com
Tue Feb 18 20:27:07 UTC 2025
[Public]
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Harish
> Kasiviswanathan
> Sent: Wednesday, February 12, 2025 5:04 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Kasiviswanathan, Harish <Harish.Kasiviswanathan at amd.com>
> Subject: [PATCH 1/4] drm/amdkfd: Rename grace_period to wait_times
>
> Rename .set_grace_period() to .set_compute_queue_wait_counts(). The
> function not only sets grace_period but also sets other compute queue
> wait times. Up until now only grace_period was set/updated, however
> other wait times also needs set/update. Change function name to reflect
> this.
>
> No functional change intended.
>
> Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan at amd.com>
> ---
> .../drm/amd/amdkfd/kfd_device_queue_manager.c | 46 +++++++++----------
> .../drm/amd/amdkfd/kfd_device_queue_manager.h | 2 +-
> .../gpu/drm/amd/amdkfd/kfd_packet_manager.c | 18 ++++++--
> .../drm/amd/amdkfd/kfd_packet_manager_v9.c | 16 +++----
> .../drm/amd/amdkfd/kfd_packet_manager_vi.c | 4 +-
> drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 6 +--
> 6 files changed, 52 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> index 195085079eb2..b88a95b5ae0d 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> @@ -976,7 +976,7 @@ static int update_queue(struct device_queue_manager
> *dqm, struct queue *q,
> if (dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) {
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> retval = unmap_queues_cpsch(dqm,
> -
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> USE_DEFAULT_GRACE_PERIOD, false);
> +
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES, false);
KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES sounds as obscure as GRACE_PERIOD.
Maybe we should change it to something that abstracts what we're really trying to achieve with the new definition?
KFD_DEFAULT_DEQUEUE_WAIT_TIMES? (i.e. wait times related to dequeue request)
> else if (prev_active)
> retval = remove_queue_mes(dqm, q, &pdd->qpd);
>
> @@ -1246,7 +1246,7 @@ static int evict_process_queues_cpsch(struct
> device_queue_manager *dqm,
> qpd->is_debug ?
>
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES :
>
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD);
> +
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
>
> out:
> dqm_unlock(dqm);
> @@ -1387,7 +1387,7 @@ static int restore_process_queues_cpsch(struct
> device_queue_manager *dqm,
> }
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> retval = execute_queues_cpsch(dqm,
> -
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> USE_DEFAULT_GRACE_PERIOD);
> +
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> eviction_duration = get_jiffies_64() - pdd->last_evict_timestamp;
> atomic64_add(eviction_duration, &pdd->evict_duration_counter);
> vm_not_acquired:
> @@ -1788,7 +1788,7 @@ static int halt_cpsch(struct device_queue_manager *dqm)
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> ret = unmap_queues_cpsch(dqm,
>
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD, false);
> + KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES,
> false);
> else
> ret = remove_all_kfd_queues_mes(dqm);
> }
> @@ -1815,7 +1815,7 @@ static int unhalt_cpsch(struct device_queue_manager
> *dqm)
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> ret = execute_queues_cpsch(dqm,
>
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES,
> - 0, USE_DEFAULT_GRACE_PERIOD);
> + 0, KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> else
> ret = add_all_kfd_queues_mes(dqm);
>
> @@ -1860,7 +1860,7 @@ static int start_cpsch(struct device_queue_manager
> *dqm)
> dqm->sched_running = true;
>
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> - execute_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> USE_DEFAULT_GRACE_PERIOD);
> + execute_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
>
> /* Set CWSR grace period to 1x1000 cycle for GFX9.4.3 APU */
> if (amdgpu_emu_mode == 0 && dqm->dev->adev->gmc.is_app_apu &&
> @@ -1868,7 +1868,7 @@ static int start_cpsch(struct device_queue_manager
> *dqm)
> uint32_t reg_offset = 0;
> uint32_t grace_period = 1;
Change the local var name to reflect new set call name (i.e. dequeue wait or whatever you'll decide).
>
> - retval = pm_update_grace_period(&dqm->packet_mgr,
> + retval = pm_set_compute_queue_wait_counts(&dqm->packet_mgr,
> grace_period);
What about renaming this to pm_set_dequeue_wait_times since you'll be setting 2 types of times?
In patch 4 for you're setting both the dequeue wave message delay as well as the retry time.
Jon
> if (retval)
> dev_err(dev, "Setting grace timeout failed\n");
> @@ -1916,7 +1916,7 @@ static int stop_cpsch(struct device_queue_manager
> *dqm)
> }
>
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> - unmap_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> USE_DEFAULT_GRACE_PERIOD, false);
> + unmap_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES, false);
> else
> remove_all_kfd_queues_mes(dqm);
>
> @@ -1959,7 +1959,7 @@ static int create_kernel_queue_cpsch(struct
> device_queue_manager *dqm,
> increment_queue_count(dqm, qpd, kq->queue);
> qpd->is_debug = true;
> execute_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD);
> + KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> dqm_unlock(dqm);
>
> return 0;
> @@ -1974,7 +1974,7 @@ static void destroy_kernel_queue_cpsch(struct
> device_queue_manager *dqm,
> decrement_queue_count(dqm, qpd, kq->queue);
> qpd->is_debug = false;
> execute_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD);
> + KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> /*
> * Unconditionally decrement this counter, regardless of the queue's
> * type.
> @@ -2054,7 +2054,7 @@ static int create_queue_cpsch(struct
> device_queue_manager *dqm, struct queue *q,
>
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> retval = execute_queues_cpsch(dqm,
> -
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> USE_DEFAULT_GRACE_PERIOD);
> +
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> else
> retval = add_queue_mes(dqm, q, qpd);
> if (retval)
> @@ -2294,8 +2294,8 @@ static int unmap_queues_cpsch(struct
> device_queue_manager *dqm,
> if (!down_read_trylock(&dqm->dev->adev->reset_domain->sem))
> return -EIO;
>
> - if (grace_period != USE_DEFAULT_GRACE_PERIOD) {
> - retval = pm_update_grace_period(&dqm->packet_mgr,
> grace_period);
> + if (grace_period != KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES) {
> + retval = pm_set_compute_queue_wait_counts(&dqm->packet_mgr,
> grace_period);
> if (retval)
> goto out;
> }
> @@ -2338,9 +2338,9 @@ static int unmap_queues_cpsch(struct
> device_queue_manager *dqm,
> }
>
> /* We need to reset the grace period value for this device */
> - if (grace_period != USE_DEFAULT_GRACE_PERIOD) {
> - if (pm_update_grace_period(&dqm->packet_mgr,
> - USE_DEFAULT_GRACE_PERIOD))
> + if (grace_period != KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES) {
> + if (pm_set_compute_queue_wait_counts(&dqm->packet_mgr,
> +
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES))
> dev_err(dev, "Failed to reset grace period\n");
> }
>
> @@ -2360,7 +2360,7 @@ static int reset_queues_cpsch(struct
> device_queue_manager *dqm, uint16_t pasid)
> dqm_lock(dqm);
>
> retval = unmap_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_BY_PASID,
> - pasid, USE_DEFAULT_GRACE_PERIOD, true);
> + pasid, KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES,
> true);
>
> dqm_unlock(dqm);
> return retval;
> @@ -2468,7 +2468,7 @@ static int destroy_queue_cpsch(struct
> device_queue_manager *dqm,
> if (!dqm->dev->kfd->shared_resources.enable_mes) {
> retval = execute_queues_cpsch(dqm,
>
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0,
> -
> USE_DEFAULT_GRACE_PERIOD);
> +
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> if (retval == -ETIME)
> qpd->reset_wavefronts = true;
> } else {
> @@ -2763,7 +2763,7 @@ static int process_termination_cpsch(struct
> device_queue_manager *dqm,
> }
>
> if (!dqm->dev->kfd->shared_resources.enable_mes)
> - retval = execute_queues_cpsch(dqm, filter, 0,
> USE_DEFAULT_GRACE_PERIOD);
> + retval = execute_queues_cpsch(dqm, filter, 0,
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
>
> if ((retval || qpd->reset_wavefronts) &&
> down_read_trylock(&dqm->dev->adev->reset_domain->sem)) {
> @@ -3123,7 +3123,7 @@ int reserve_debug_trap_vmid(struct
> device_queue_manager *dqm,
> }
>
> r = unmap_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD, false);
> + KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES, false);
> if (r)
> goto out_unlock;
>
> @@ -3172,7 +3172,7 @@ int release_debug_trap_vmid(struct
> device_queue_manager *dqm,
> }
>
> r = unmap_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES, 0,
> - USE_DEFAULT_GRACE_PERIOD, false);
> + KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES, false);
> if (r)
> goto out_unlock;
>
> @@ -3355,7 +3355,7 @@ int resume_queues(struct kfd_process *p,
> r = execute_queues_cpsch(dqm,
>
> KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES,
> 0,
> - USE_DEFAULT_GRACE_PERIOD);
> +
> KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> if (r) {
> dev_err(dev, "Failed to resume process queues\n");
> if (queue_ids) {
> @@ -3734,7 +3734,7 @@ int dqm_debugfs_hang_hws(struct
> device_queue_manager *dqm)
> }
> dqm->active_runlist = true;
> r = execute_queues_cpsch(dqm,
> KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES,
> - 0, USE_DEFAULT_GRACE_PERIOD);
> + 0, KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES);
> dqm_unlock(dqm);
>
> return r;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
> b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
> index 09ab36f8e8c6..273c04a95568 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
> @@ -37,7 +37,7 @@
>
> #define KFD_MES_PROCESS_QUANTUM 100000
> #define KFD_MES_GANG_QUANTUM 10000
> -#define USE_DEFAULT_GRACE_PERIOD 0xffffffff
> +#define KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES 0xffffffff
>
> struct device_process_node {
> struct qcm_process_device *qpd;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> index 4984b41cd372..8d2f63a38724 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
> @@ -396,14 +396,26 @@ int pm_send_query_status(struct packet_manager *pm,
> uint64_t fence_address,
> return retval;
> }
>
> -int pm_update_grace_period(struct packet_manager *pm, uint32_t grace_period)
> +/* pm_set_compute_queue_wait_counts: Configure CP IQ Timer Wait Counts for
> Items
> + * Offloaded from the Compute Queues by writing to CP_IQ_WAIT_TIME2
> registers.
> + *
> + * @wait_counts_config: Parameter overridden. Could be flag or grace_period
> + * Possible flag values:
> + * KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES then reset to default value
> + *
> + * If not an above flag, Wait Count for Scheduling Wave Message (SCH_WAVE)
> + * is set to wait_counts_config value.
> + * NOTE: if 0, The CP cannot handle it and will result in
> + * an infinite grace period being set so set to 1 to prevent this.
> + */
> +int pm_set_compute_queue_wait_counts(struct packet_manager *pm, uint32_t
> wait_counts_config)
> {
> struct kfd_node *node = pm->dqm->dev;
> struct device *dev = node->adev->dev;
> int retval = 0;
> uint32_t *buffer, size;
>
> - size = pm->pmf->set_grace_period_size;
> + size = pm->pmf->set_compute_queue_wait_counts_size;
>
> mutex_lock(&pm->lock);
>
> @@ -419,7 +431,7 @@ int pm_update_grace_period(struct packet_manager *pm,
> uint32_t grace_period)
> goto out;
> }
>
> - retval = pm->pmf->set_grace_period(pm, buffer, grace_period);
> + retval = pm->pmf->set_compute_queue_wait_counts(pm, buffer,
> wait_counts_config);
> if (!retval)
> retval = kq_submit_packet(pm->priv_queue);
> else
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> index d56525201155..8b693a9446e8 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> @@ -297,9 +297,9 @@ static int pm_map_queues_v9(struct packet_manager *pm,
> uint32_t *buffer,
> return 0;
> }
>
> -static int pm_set_grace_period_v9(struct packet_manager *pm,
> +static int pm_set_compute_queue_wait_counts_v9(struct packet_manager *pm,
> uint32_t *buffer,
> - uint32_t grace_period)
> + uint32_t wait_counts_config)
> {
> struct pm4_mec_write_data_mmio *packet;
> uint32_t reg_offset = 0;
> @@ -308,11 +308,11 @@ static int pm_set_grace_period_v9(struct
> packet_manager *pm,
> pm->dqm->dev->kfd2kgd->build_grace_period_packet_info(
> pm->dqm->dev->adev,
> pm->dqm->wait_times,
> - grace_period,
> + wait_counts_config,
> ®_offset,
> ®_data);
>
> - if (grace_period == USE_DEFAULT_GRACE_PERIOD)
> + if (wait_counts_config == KFD_SET_DEFAULT_CP_QUEUE_WAIT_TIMES)
> reg_data = pm->dqm->wait_times;
>
> packet = (struct pm4_mec_write_data_mmio *)buffer;
> @@ -415,7 +415,7 @@ const struct packet_manager_funcs kfd_v9_pm_funcs = {
> .set_resources = pm_set_resources_v9,
> .map_queues = pm_map_queues_v9,
> .unmap_queues = pm_unmap_queues_v9,
> - .set_grace_period = pm_set_grace_period_v9,
> + .set_compute_queue_wait_counts =
> pm_set_compute_queue_wait_counts_v9,
> .query_status = pm_query_status_v9,
> .release_mem = NULL,
> .map_process_size = sizeof(struct pm4_mes_map_process),
> @@ -423,7 +423,7 @@ const struct packet_manager_funcs kfd_v9_pm_funcs = {
> .set_resources_size = sizeof(struct pm4_mes_set_resources),
> .map_queues_size = sizeof(struct pm4_mes_map_queues),
> .unmap_queues_size = sizeof(struct pm4_mes_unmap_queues),
> - .set_grace_period_size = sizeof(struct pm4_mec_write_data_mmio),
> + .set_compute_queue_wait_counts_size = sizeof(struct
> pm4_mec_write_data_mmio),
> .query_status_size = sizeof(struct pm4_mes_query_status),
> .release_mem_size = 0,
> };
> @@ -434,7 +434,7 @@ const struct packet_manager_funcs
> kfd_aldebaran_pm_funcs = {
> .set_resources = pm_set_resources_v9,
> .map_queues = pm_map_queues_v9,
> .unmap_queues = pm_unmap_queues_v9,
> - .set_grace_period = pm_set_grace_period_v9,
> + .set_compute_queue_wait_counts =
> pm_set_compute_queue_wait_counts_v9,
> .query_status = pm_query_status_v9,
> .release_mem = NULL,
> .map_process_size = sizeof(struct pm4_mes_map_process_aldebaran),
> @@ -442,7 +442,7 @@ const struct packet_manager_funcs
> kfd_aldebaran_pm_funcs = {
> .set_resources_size = sizeof(struct pm4_mes_set_resources),
> .map_queues_size = sizeof(struct pm4_mes_map_queues),
> .unmap_queues_size = sizeof(struct pm4_mes_unmap_queues),
> - .set_grace_period_size = sizeof(struct pm4_mec_write_data_mmio),
> + .set_compute_queue_wait_counts_size = sizeof(struct
> pm4_mec_write_data_mmio),
> .query_status_size = sizeof(struct pm4_mes_query_status),
> .release_mem_size = 0,
> };
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
> index 347c86e1c378..de28fc585296 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
> @@ -304,7 +304,7 @@ const struct packet_manager_funcs kfd_vi_pm_funcs = {
> .set_resources = pm_set_resources_vi,
> .map_queues = pm_map_queues_vi,
> .unmap_queues = pm_unmap_queues_vi,
> - .set_grace_period = NULL,
> + .set_compute_queue_wait_counts = NULL,
> .query_status = pm_query_status_vi,
> .release_mem = pm_release_mem_vi,
> .map_process_size = sizeof(struct pm4_mes_map_process),
> @@ -312,7 +312,7 @@ const struct packet_manager_funcs kfd_vi_pm_funcs = {
> .set_resources_size = sizeof(struct pm4_mes_set_resources),
> .map_queues_size = sizeof(struct pm4_mes_map_queues),
> .unmap_queues_size = sizeof(struct pm4_mes_unmap_queues),
> - .set_grace_period_size = 0,
> + .set_compute_queue_wait_counts_size = 0,
> .query_status_size = sizeof(struct pm4_mes_query_status),
> .release_mem_size = sizeof(struct pm4_mec_release_mem)
> };
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 59619f794b6b..ae58d50b8eb9 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -1417,7 +1417,7 @@ struct packet_manager_funcs {
> int (*unmap_queues)(struct packet_manager *pm, uint32_t *buffer,
> enum kfd_unmap_queues_filter mode,
> uint32_t filter_param, bool reset);
> - int (*set_grace_period)(struct packet_manager *pm, uint32_t *buffer,
> + int (*set_compute_queue_wait_counts)(struct packet_manager *pm, uint32_t
> *buffer,
> uint32_t grace_period);
> int (*query_status)(struct packet_manager *pm, uint32_t *buffer,
> uint64_t fence_address, uint64_t fence_value);
> @@ -1429,7 +1429,7 @@ struct packet_manager_funcs {
> int set_resources_size;
> int map_queues_size;
> int unmap_queues_size;
> - int set_grace_period_size;
> + int set_compute_queue_wait_counts_size;
> int query_status_size;
> int release_mem_size;
> };
> @@ -1452,7 +1452,7 @@ int pm_send_unmap_queue(struct packet_manager *pm,
>
> void pm_release_ib(struct packet_manager *pm);
>
> -int pm_update_grace_period(struct packet_manager *pm, uint32_t grace_period);
> +int pm_set_compute_queue_wait_counts(struct packet_manager *pm, uint32_t
> wait_counts_config);
>
> /* Following PM funcs can be shared among VI and AI */
> unsigned int pm_build_pm4_header(unsigned int opcode, size_t packet_size);
> --
> 2.34.1
More information about the amd-gfx
mailing list