To avoid multiple runs in parallel to avoid mixing results.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
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)
1920 * 1200 * 4
};
+ mutex_lock(&adev->benchmark_mutex);
switch (test_number) {
case 1:
dev_info(adev->dev,
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,
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,
AMDGPU_GEM_DOMAIN_GTT,
AMDGPU_GEM_DOMAIN_VRAM);
if (r)
- return r;
+ goto done;
}
break;
case 4:
AMDGPU_GEM_DOMAIN_VRAM,
AMDGPU_GEM_DOMAIN_GTT);
if (r)
- return r;
+ goto done;
}
break;
case 5:
AMDGPU_GEM_DOMAIN_VRAM,
AMDGPU_GEM_DOMAIN_VRAM);
if (r)
- return r;
+ goto done;
}
break;
case 6:
AMDGPU_GEM_DOMAIN_GTT,
AMDGPU_GEM_DOMAIN_VRAM);
if (r)
- return r;
+ goto done;
}
break;
case 7:
AMDGPU_GEM_DOMAIN_VRAM,
AMDGPU_GEM_DOMAIN_GTT);
if (r)
- return r;
+ goto done;
}
break;
case 8:
AMDGPU_GEM_DOMAIN_VRAM,
AMDGPU_GEM_DOMAIN_VRAM);
if (r)
- return r;
+ goto done;
}
break;
r = -EINVAL;
break;
}
+
+done:
+ mutex_unlock(&adev->benchmark_mutex);
+
return r;
}
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);