lkml.org 
[lkml]   [2020]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 102/399] drm/amdkfd: Fix a bug in SDMA RLC queue counting under HWS mode
    Date
    From: Yong Zhao <Yong.Zhao@amd.com>

    [ Upstream commit f38abc15d157b7b31fa7f651dc8bf92858c963f8 ]

    The sdma_queue_count increment should be done before
    execute_queues_cpsch(), which calls pm_calc_rlib_size() where
    sdma_queue_count is used to calculate whether over_subscription is
    triggered.

    With the previous code, when a SDMA queue is created,
    compute_queue_count in pm_calc_rlib_size() is one more than the
    actual compute queue number, because the queue_count has been
    incremented while sdma_queue_count has not. This patch fixes that.

    Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 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 984c2f2b24b60..d128a8bbe19d0 100644
    --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
    +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
    @@ -1225,16 +1225,18 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,

    list_add(&q->list, &qpd->queues_list);
    qpd->queue_count++;
    +
    + if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
    + dqm->sdma_queue_count++;
    + else if (q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI)
    + dqm->xgmi_sdma_queue_count++;
    +
    if (q->properties.is_active) {
    dqm->queue_count++;
    retval = execute_queues_cpsch(dqm,
    KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0);
    }

    - if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
    - dqm->sdma_queue_count++;
    - else if (q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI)
    - dqm->xgmi_sdma_queue_count++;
    /*
    * Unconditionally increment this counter, regardless of the queue's
    * type or whether the queue is active.
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-02-21 08:48    [W:4.073 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site