diff options
| author | Emily Deng <Emily.Deng@amd.com> | 2018-08-13 09:46:06 +0300 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-14 01:21:29 +0300 | 
| commit | 20acbed47d30efbf14e5aecc5ec5e5f152db7810 (patch) | |
| tree | c3b93697a4a2b34c2c32af0caf517e37f0081b48 /drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | |
| parent | 33d5bd0705440c158c909da7538f05fc7a0ebcdf (diff) | |
| download | linux-20acbed47d30efbf14e5aecc5ec5e5f152db7810.tar.xz | |
drm/amdgpu/vce: VCE entity initialization relies on ring initializtion
Entity init should after ring init, as the entity's sched_rq's initialization
is in ring init.
SWDEV-161495
Signed-off-by: Emily Deng <Emily.Deng@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 33 | 
1 files changed, 23 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index b6ab4f5350c8..0cc5190f4f36 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -90,8 +90,6 @@ static void amdgpu_vce_idle_work_handler(struct work_struct *work);   */  int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)  { -	struct amdgpu_ring *ring; -	struct drm_sched_rq *rq;  	const char *fw_name;  	const struct common_firmware_header *hdr;  	unsigned ucode_version, version_major, version_minor, binary_id; @@ -188,14 +186,6 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)  		return r;  	} -	ring = &adev->vce.ring[0]; -	rq = &ring->sched.sched_rq[DRM_SCHED_PRIORITY_NORMAL]; -	r = drm_sched_entity_init(&adev->vce.entity, &rq, 1, NULL); -	if (r != 0) { -		DRM_ERROR("Failed setting up VCE run queue.\n"); -		return r; -	} -  	for (i = 0; i < AMDGPU_MAX_VCE_HANDLES; ++i) {  		atomic_set(&adev->vce.handles[i], 0);  		adev->vce.filp[i] = NULL; @@ -236,6 +226,29 @@ int amdgpu_vce_sw_fini(struct amdgpu_device *adev)  }  /** + * amdgpu_vce_entity_init - init entity + * + * @adev: amdgpu_device pointer + * + */ +int amdgpu_vce_entity_init(struct amdgpu_device *adev) +{ +	struct amdgpu_ring *ring; +	struct drm_sched_rq *rq; +	int r; + +	ring = &adev->vce.ring[0]; +	rq = &ring->sched.sched_rq[DRM_SCHED_PRIORITY_NORMAL]; +	r = drm_sched_entity_init(&adev->vce.entity, &rq, 1, NULL); +	if (r != 0) { +		DRM_ERROR("Failed setting up VCE run queue.\n"); +		return r; +	} + +	return 0; +} + +/**   * amdgpu_vce_suspend - unpin VCE fw memory   *   * @adev: amdgpu_device pointer  | 
