lkml.org 
[lkml]   [2022]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 138/219] drm/amdkfd: Fix Incorrect VMIDs passed to HWS
    Date
    From: Tushar Patel <tushar.patel@amd.com>

    [ Upstream commit b7dfbd2e601f3fee545bc158feceba4f340fe7cf ]

    Compute-only GPUs have more than 8 VMIDs allocated to KFD. Fix
    this by passing correct number of VMIDs to HWS

    v2: squash in warning fix (Alex)

    Signed-off-by: Tushar Patel <tushar.patel@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/amdgpu/amdgpu_drv.c | 2 +-
    drivers/gpu/drm/amd/amdkfd/kfd_device.c | 11 +++--------
    2 files changed, 4 insertions(+), 9 deletions(-)

    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
    index 284892b2d3b4..c853266957ce 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
    @@ -686,7 +686,7 @@ MODULE_PARM_DESC(sched_policy,
    * Maximum number of processes that HWS can schedule concurrently. The maximum is the
    * number of VMIDs assigned to the HWS, which is also the default.
    */
    -int hws_max_conc_proc = 8;
    +int hws_max_conc_proc = -1;
    module_param(hws_max_conc_proc, int, 0444);
    MODULE_PARM_DESC(hws_max_conc_proc,
    "Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))");
    diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
    index 2b65d0acae2c..2fdbe2f475e4 100644
    --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
    +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
    @@ -480,15 +480,10 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
    }

    /* Verify module parameters regarding mapped process number*/
    - if ((hws_max_conc_proc < 0)
    - || (hws_max_conc_proc > kfd->vm_info.vmid_num_kfd)) {
    - dev_err(kfd_device,
    - "hws_max_conc_proc %d must be between 0 and %d, use %d instead\n",
    - hws_max_conc_proc, kfd->vm_info.vmid_num_kfd,
    - kfd->vm_info.vmid_num_kfd);
    + if (hws_max_conc_proc >= 0)
    + kfd->max_proc_per_quantum = min((u32)hws_max_conc_proc, kfd->vm_info.vmid_num_kfd);
    + else
    kfd->max_proc_per_quantum = kfd->vm_info.vmid_num_kfd;
    - } else
    - kfd->max_proc_per_quantum = hws_max_conc_proc;

    /* calculate max size of mqds needed for queues */
    size = max_num_of_queues_per_device *
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-18 14:35    [W:2.155 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site