diff options
Diffstat (limited to 'drivers/gpu/drm/tegra/submit.c')
| -rw-r--r-- | drivers/gpu/drm/tegra/submit.c | 19 | 
1 files changed, 5 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/tegra/submit.c b/drivers/gpu/drm/tegra/submit.c index 066f88564169..2430fcc97448 100644 --- a/drivers/gpu/drm/tegra/submit.c +++ b/drivers/gpu/drm/tegra/submit.c @@ -609,21 +609,13 @@ int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,  			host1x_memory_context_get(job->memory_context);  		}  	} else if (context->client->ops->get_streamid_offset) { -#ifdef CONFIG_IOMMU_API -		struct iommu_fwspec *spec; -  		/*  		 * Job submission will need to temporarily change stream ID,  		 * so need to tell it what to change it back to.  		 */ -		spec = dev_iommu_fwspec_get(context->client->base.dev); -		if (spec && spec->num_ids > 0) -			job->engine_fallback_streamid = spec->ids[0] & 0xffff; -		else -			job->engine_fallback_streamid = 0x7f; -#else -		job->engine_fallback_streamid = 0x7f; -#endif +		if (!tegra_dev_iommu_get_stream_id(context->client->base.dev, +						   &job->engine_fallback_streamid)) +			job->engine_fallback_streamid = TEGRA_STREAM_ID_BYPASS;  	}  	/* Boot engine. */ @@ -654,7 +646,7 @@ int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,  	args->syncpt.value = job->syncpt_end;  	if (syncobj) { -		struct dma_fence *fence = host1x_fence_create(job->syncpt, job->syncpt_end); +		struct dma_fence *fence = host1x_fence_create(job->syncpt, job->syncpt_end, true);  		if (IS_ERR(fence)) {  			err = PTR_ERR(fence);  			SUBMIT_ERR(context, "failed to create postfence: %d", err); @@ -680,8 +672,7 @@ free_job_data:  		kfree(job_data->used_mappings);  	} -	if (job_data) -		kfree(job_data); +	kfree(job_data);  put_bo:  	gather_bo_put(&bo->base);  unlock: | 
