drm/amdkfd: Fix Incorrect VMIDs passed to HWS
authorjsg <jsg@openbsd.org>
Thu, 21 Apr 2022 09:44:07 +0000 (09:44 +0000)
committerjsg <jsg@openbsd.org>
Thu, 21 Apr 2022 09:44:07 +0000 (09:44 +0000)
From Tushar Patel
25efb191d86b108f100f82f414229f8269d00b28 in linux 5.15.y/5.15.35
b7dfbd2e601f3fee545bc158feceba4f340fe7cf in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c
sys/dev/pci/drm/amd/amdkfd/kfd_device.c

index 938a39d..9d7f33d 100644 (file)
@@ -680,7 +680,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))");
index 88c483f..660eb70 100644 (file)
@@ -834,15 +834,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 *