drm/amdkfd: Fix compute profile switching
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdkfd / kfd_device_queue_manager.c
index c6c9530..ae38145 100644 (file)
@@ -811,8 +811,8 @@ static int register_process(struct device_queue_manager *dqm,
 
        retval = dqm->asic_ops.update_qpd(dqm, qpd);
 
-       if (dqm->processes_count++ == 0)
-               amdgpu_amdkfd_set_compute_idle(dqm->dev->kgd, false);
+       dqm->processes_count++;
+       kfd_inc_compute_active(dqm->dev);
 
        dqm_unlock(dqm);
 
@@ -835,9 +835,8 @@ static int unregister_process(struct device_queue_manager *dqm,
                if (qpd == cur->qpd) {
                        list_del(&cur->list);
                        kfree(cur);
-                       if (--dqm->processes_count == 0)
-                               amdgpu_amdkfd_set_compute_idle(
-                                       dqm->dev->kgd, true);
+                       dqm->processes_count--;
+                       kfd_dec_compute_active(dqm->dev);
                        goto out;
                }
        }
@@ -1539,6 +1538,7 @@ static int process_termination_nocpsch(struct device_queue_manager *dqm,
                        list_del(&cur->list);
                        kfree(cur);
                        dqm->processes_count--;
+                       kfd_dec_compute_active(dqm->dev);
                        break;
                }
        }
@@ -1626,6 +1626,7 @@ static int process_termination_cpsch(struct device_queue_manager *dqm,
                        list_del(&cur->list);
                        kfree(cur);
                        dqm->processes_count--;
+                       kfd_dec_compute_active(dqm->dev);
                        break;
                }
        }