diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 25 | 
1 files changed, 18 insertions, 7 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index ecd051976bce..12598a4b5c78 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -1275,13 +1275,24 @@ error_unlock:  	return r;  } +static void trace_amdgpu_cs_ibs(struct amdgpu_cs_parser *parser) +{ +	int i; + +	if (!trace_amdgpu_cs_enabled()) +		return; + +	for (i = 0; i < parser->job->num_ibs; i++) +		trace_amdgpu_cs(parser, i); +} +  int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  { -	struct amdgpu_device *adev = dev->dev_private; +	struct amdgpu_device *adev = drm_to_adev(dev);  	union drm_amdgpu_cs *cs = data;  	struct amdgpu_cs_parser parser = {};  	bool reserved_buffers = false; -	int i, r; +	int r;  	if (amdgpu_ras_intr_triggered())  		return -EHWPOISON; @@ -1294,7 +1305,8 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  	r = amdgpu_cs_parser_init(&parser, data);  	if (r) { -		DRM_ERROR("Failed to initialize parser %d!\n", r); +		if (printk_ratelimit()) +			DRM_ERROR("Failed to initialize parser %d!\n", r);  		goto out;  	} @@ -1319,8 +1331,7 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  	reserved_buffers = true; -	for (i = 0; i < parser.job->num_ibs; i++) -		trace_amdgpu_cs(&parser, i); +	trace_amdgpu_cs_ibs(&parser);  	r = amdgpu_cs_vm_handling(&parser);  	if (r) @@ -1421,7 +1432,7 @@ static struct dma_fence *amdgpu_cs_get_fence(struct amdgpu_device *adev,  int amdgpu_cs_fence_to_handle_ioctl(struct drm_device *dev, void *data,  				    struct drm_file *filp)  { -	struct amdgpu_device *adev = dev->dev_private; +	struct amdgpu_device *adev = drm_to_adev(dev);  	union drm_amdgpu_fence_to_handle *info = data;  	struct dma_fence *fence;  	struct drm_syncobj *syncobj; @@ -1597,7 +1608,7 @@ err_free_fence_array:  int amdgpu_cs_wait_fences_ioctl(struct drm_device *dev, void *data,  				struct drm_file *filp)  { -	struct amdgpu_device *adev = dev->dev_private; +	struct amdgpu_device *adev = drm_to_adev(dev);  	union drm_amdgpu_wait_fences *wait = data;  	uint32_t fence_count = wait->in.fence_count;  	struct drm_amdgpu_fence *fences_user; | 
