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

Commit 22a548d0 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-amdkfd-fixes-2017-07-18' of...

Merge tag 'drm-amdkfd-fixes-2017-07-18' of git://people.freedesktop.org/~gabbayo/linux into drm-fixes

This is a pull request for 4.13-rc2/3. The first patch addresses a bug that
appears when doing over-subscription of queues, due to a miscalculation of
the number of available compute queues. The other three patches remove
dead code that was created from the bugfix.

* tag 'drm-amdkfd-fixes-2017-07-18' of git://people.freedesktop.org/~gabbayo/linux:
  drm/amdgpu: Remove unused field kgd2kfd_shared_resources.num_mec
  drm/radeon: Remove initialization of shared_resources.num_mec
  drm/amdkfd: Remove unused references to shared_resources.num_mec
  drm/amdgpu: Fix KFD oversubscription by tracking queues correctly
parents 5771a8c0 f835edf9
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -101,7 +101,6 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
	if (adev->kfd) {
		struct kgd2kfd_shared_resources gpu_resources = {
			.compute_vmid_bitmap = 0xFF00,
			.num_mec = adev->gfx.mec.num_mec,
			.num_pipe_per_mec = adev->gfx.mec.num_pipe_per_mec,
			.num_queue_per_pipe = adev->gfx.mec.num_queue_per_pipe
		};
@@ -122,7 +121,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)

		/* According to linux/bitmap.h we shouldn't use bitmap_clear if
		 * nbits is not compile time constant */
		last_valid_bit = adev->gfx.mec.num_mec
		last_valid_bit = 1 /* only first MEC can have compute queues */
				* adev->gfx.mec.num_pipe_per_mec
				* adev->gfx.mec.num_queue_per_pipe;
		for (i = last_valid_bit; i < KGD_MAX_QUEUES; ++i)
+0 −4
Original line number Diff line number Diff line
@@ -226,10 +226,6 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,

	kfd->shared_resources = *gpu_resources;

	/* We only use the first MEC */
	if (kfd->shared_resources.num_mec > 1)
		kfd->shared_resources.num_mec = 1;

	/* calculate max size of mqds needed for queues */
	size = max_num_of_queues_per_device *
			kfd->device_info->mqd_size_aligned;
+0 −7
Original line number Diff line number Diff line
@@ -77,13 +77,6 @@ static bool is_pipe_enabled(struct device_queue_manager *dqm, int mec, int pipe)
	return false;
}

unsigned int get_mec_num(struct device_queue_manager *dqm)
{
	BUG_ON(!dqm || !dqm->dev);

	return dqm->dev->shared_resources.num_mec;
}

unsigned int get_queues_num(struct device_queue_manager *dqm)
{
	BUG_ON(!dqm || !dqm->dev);
+0 −1
Original line number Diff line number Diff line
@@ -180,7 +180,6 @@ void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops);
void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops);
void program_sh_mem_settings(struct device_queue_manager *dqm,
					struct qcm_process_device *qpd);
unsigned int get_mec_num(struct device_queue_manager *dqm);
unsigned int get_queues_num(struct device_queue_manager *dqm);
unsigned int get_queues_per_pipe(struct device_queue_manager *dqm);
unsigned int get_pipes_per_mec(struct device_queue_manager *dqm);
+0 −3
Original line number Diff line number Diff line
@@ -63,9 +63,6 @@ struct kgd2kfd_shared_resources {
	/* Bit n == 1 means VMID n is available for KFD. */
	unsigned int compute_vmid_bitmap;

	/* number of mec available from the hardware */
	uint32_t num_mec;

	/* number of pipes per mec */
	uint32_t num_pipe_per_mec;

Loading