Commit f113cc32 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: add a benchmark mutex



To avoid multiple runs in parallel to avoid mixing results.

Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b887d5f9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1100,6 +1100,8 @@ struct amdgpu_device {
	struct list_head                ras_list;

	struct ip_discovery_top         *ip_top;

	struct mutex			benchmark_mutex;
};

static inline struct amdgpu_device *drm_to_adev(struct drm_device *ddev)
+14 −9
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
		1920 * 1200 * 4
	};

	mutex_lock(&adev->benchmark_mutex);
	switch (test_number) {
	case 1:
		dev_info(adev->dev,
@@ -192,11 +193,11 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
		r = amdgpu_benchmark_move(adev, 1024*1024, AMDGPU_GEM_DOMAIN_GTT,
					  AMDGPU_GEM_DOMAIN_VRAM);
		if (r)
			return r;
			goto done;
		r = amdgpu_benchmark_move(adev, 1024*1024, AMDGPU_GEM_DOMAIN_VRAM,
					  AMDGPU_GEM_DOMAIN_GTT);
		if (r)
			return r;
			goto done;
		break;
	case 2:
		dev_info(adev->dev,
@@ -206,7 +207,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
		r = amdgpu_benchmark_move(adev, 1024*1024, AMDGPU_GEM_DOMAIN_VRAM,
					  AMDGPU_GEM_DOMAIN_VRAM);
		if (r)
			return r;
			goto done;
		break;
	case 3:
		dev_info(adev->dev,
@@ -218,7 +219,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
						  AMDGPU_GEM_DOMAIN_GTT,
						  AMDGPU_GEM_DOMAIN_VRAM);
			if (r)
				return r;
				goto done;
		}
		break;
	case 4:
@@ -231,7 +232,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
						  AMDGPU_GEM_DOMAIN_VRAM,
						  AMDGPU_GEM_DOMAIN_GTT);
			if (r)
				return r;
				goto done;
		}
		break;
	case 5:
@@ -244,7 +245,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
						  AMDGPU_GEM_DOMAIN_VRAM,
						  AMDGPU_GEM_DOMAIN_VRAM);
			if (r)
				return r;
				goto done;
		}
		break;
	case 6:
@@ -257,7 +258,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
						  AMDGPU_GEM_DOMAIN_GTT,
						  AMDGPU_GEM_DOMAIN_VRAM);
			if (r)
				return r;
				goto done;
		}
		break;
	case 7:
@@ -270,7 +271,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
						  AMDGPU_GEM_DOMAIN_VRAM,
						  AMDGPU_GEM_DOMAIN_GTT);
			if (r)
				return r;
				goto done;
		}
		break;
	case 8:
@@ -283,7 +284,7 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
					      AMDGPU_GEM_DOMAIN_VRAM,
					      AMDGPU_GEM_DOMAIN_VRAM);
			if (r)
				return r;
				goto done;
		}
		break;

@@ -292,5 +293,9 @@ int amdgpu_benchmark(struct amdgpu_device *adev, int test_number)
		r = -EINVAL;
		break;
	}

done:
	mutex_unlock(&adev->benchmark_mutex);

	return r;
}
+1 −0
Original line number Diff line number Diff line
@@ -3548,6 +3548,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
	mutex_init(&adev->psp.mutex);
	mutex_init(&adev->notifier_lock);
	mutex_init(&adev->pm.stable_pstate_ctx_lock);
	mutex_init(&adev->benchmark_mutex);

	amdgpu_device_init_apu_flags(adev);