summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorFelix Kuehling <Felix.Kuehling@amd.com>2016-06-30 11:33:27 -0400
committerFelix Kuehling <Felix.Kuehling@amd.com>2016-07-01 16:07:18 -0400
commit766a1491c9f52db9d231061097c51040b8a0c585 (patch)
treea6907c469e928aa970b910276f5a09efa42b2091 /drivers
parentc238f86c1c7c871b6c73ea9bd6f12810c62fe677 (diff)
drm/amdkfd: Fix oversubscription accounting
Don't count RDMA queues towards compute HQD oversubscription when deciding whether to create a chained runlist. Patch by Jay Cornwall <Jay.Cornwall@amd.com> Bug: SWDEV-96226 Change-Id: I3943378eb1ed959b82126285a178b037591b39f9 Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
index aeaf55137d3a..0afc19f285a1 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
@@ -55,7 +55,7 @@ static void pm_calc_rlib_size(struct packet_manager *pm,
unsigned int *rlib_size,
bool *over_subscription)
{
- unsigned int process_count, queue_count;
+ unsigned int process_count, queue_count, compute_queue_count;
unsigned int map_queue_size;
unsigned int max_proc_per_quantum = 1;
@@ -65,6 +65,7 @@ static void pm_calc_rlib_size(struct packet_manager *pm,
process_count = pm->dqm->processes_count;
queue_count = pm->dqm->queue_count;
+ compute_queue_count = queue_count - pm->dqm->sdma_queue_count;
/* check if there is over subscription
* Note: the arbitration between the number of VMIDs and
@@ -78,7 +79,8 @@ static void pm_calc_rlib_size(struct packet_manager *pm,
max_proc_per_quantum = dev->max_proc_per_quantum;
if ((process_count > max_proc_per_quantum) ||
- queue_count > PIPE_PER_ME_CP_SCHEDULING * QUEUES_PER_PIPE) {
+ compute_queue_count >
+ PIPE_PER_ME_CP_SCHEDULING * QUEUES_PER_PIPE) {
*over_subscription = true;
pr_debug("kfd: over subscribed runlist\n");
}