Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86640966 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-amdkfd-fixes-2015-02-02' of...

Merge tag 'drm-amdkfd-fixes-2015-02-02' of git://people.freedesktop.org/~gabbayo/linux into drm-fixes

Three small fixes that came up during last week, nothing scary:

- Accidently incremented a counter instead of decrementing it (copy-paste error)
- Module parameter of max num of queues must be at least 1 and not 0
- Don't do BUG() as a result from wrong user input

* tag 'drm-amdkfd-fixes-2015-02-02' of git://people.freedesktop.org/~gabbayo/linux:
  drm/amdkfd: Don't create BUG due to incorrect user parameter
  drm/amdkfd: max num of queues can't be 0
  drm/amdkfd: Fix bug in accounting of queues
parents 92773fc7 b9dce23d
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -822,7 +822,7 @@ static void destroy_kernel_queue_cpsch(struct device_queue_manager *dqm,
	 * Unconditionally decrement this counter, regardless of the queue's
	 * Unconditionally decrement this counter, regardless of the queue's
	 * type.
	 * type.
	 */
	 */
	dqm->total_queue_count++;
	dqm->total_queue_count--;
	pr_debug("Total of %d queues are accountable so far\n",
	pr_debug("Total of %d queues are accountable so far\n",
			dqm->total_queue_count);
			dqm->total_queue_count);
	mutex_unlock(&dqm->lock);
	mutex_unlock(&dqm->lock);
+2 −2
Original line number Original line Diff line number Diff line
@@ -95,10 +95,10 @@ static int __init kfd_module_init(void)
	}
	}


	/* Verify module parameters */
	/* Verify module parameters */
	if ((max_num_of_queues_per_device < 0) ||
	if ((max_num_of_queues_per_device < 1) ||
		(max_num_of_queues_per_device >
		(max_num_of_queues_per_device >
			KFD_MAX_NUM_OF_QUEUES_PER_DEVICE)) {
			KFD_MAX_NUM_OF_QUEUES_PER_DEVICE)) {
		pr_err("kfd: max_num_of_queues_per_device must be between 0 to KFD_MAX_NUM_OF_QUEUES_PER_DEVICE\n");
		pr_err("kfd: max_num_of_queues_per_device must be between 1 to KFD_MAX_NUM_OF_QUEUES_PER_DEVICE\n");
		return -1;
		return -1;
	}
	}


+5 −1
Original line number Original line Diff line number Diff line
@@ -315,7 +315,11 @@ int pqm_update_queue(struct process_queue_manager *pqm, unsigned int qid,
	BUG_ON(!pqm);
	BUG_ON(!pqm);


	pqn = get_queue_by_qid(pqm, qid);
	pqn = get_queue_by_qid(pqm, qid);
	BUG_ON(!pqn);
	if (!pqn) {
		pr_debug("amdkfd: No queue %d exists for update operation\n",
				qid);
		return -EFAULT;
	}


	pqn->q->properties.queue_address = p->queue_address;
	pqn->q->properties.queue_address = p->queue_address;
	pqn->q->properties.queue_size = p->queue_size;
	pqn->q->properties.queue_size = p->queue_size;