diff options
Diffstat (limited to 'drivers/gpu/host1x/context.c')
| -rw-r--r-- | drivers/gpu/host1x/context.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpu/host1x/context.c b/drivers/gpu/host1x/context.c index b08cf11f9a66..8beedcf080ab 100644 --- a/drivers/gpu/host1x/context.c +++ b/drivers/gpu/host1x/context.c @@ -35,8 +35,6 @@ int host1x_memory_context_list_init(struct host1x *host1x)  	cdl->len = err / 4;  	for (i = 0; i < cdl->len; i++) { -		struct iommu_fwspec *fwspec; -  		ctx = &cdl->devs[i];  		ctx->host = host1x; @@ -70,14 +68,12 @@ int host1x_memory_context_list_init(struct host1x *host1x)  			goto del_devices;  		} -		fwspec = dev_iommu_fwspec_get(&ctx->dev); -		if (!fwspec || !device_iommu_mapped(&ctx->dev)) { +		if (!tegra_dev_iommu_get_stream_id(&ctx->dev, &ctx->stream_id) || +		    !device_iommu_mapped(&ctx->dev)) {  			dev_err(host1x->dev, "Context device %d has no IOMMU!\n", i);  			device_del(&ctx->dev);  			goto del_devices;  		} - -		ctx->stream_id = fwspec->ids[0] & 0xffff;  	}  	return 0; @@ -104,6 +100,7 @@ void host1x_memory_context_list_free(struct host1x_memory_context_list *cdl)  }  struct host1x_memory_context *host1x_memory_context_alloc(struct host1x *host1x, +							  struct device *dev,  							  struct pid *pid)  {  	struct host1x_memory_context_list *cdl = &host1x->context_list; @@ -118,6 +115,9 @@ struct host1x_memory_context *host1x_memory_context_alloc(struct host1x *host1x,  	for (i = 0; i < cdl->len; i++) {  		struct host1x_memory_context *cd = &cdl->devs[i]; +		if (cd->dev.iommu->iommu_dev != dev->iommu->iommu_dev) +			continue; +  		if (cd->owner == pid) {  			refcount_inc(&cd->ref);  			mutex_unlock(&cdl->lock);  |