diff options
| -rw-r--r-- | drivers/vhost/vdpa.c | 14 | 
1 files changed, 6 insertions, 8 deletions
| diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index 63a53680a85c..e31ec9ebc4ce 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -1312,26 +1312,24 @@ static int vhost_vdpa_alloc_domain(struct vhost_vdpa *v)  	struct vdpa_device *vdpa = v->vdpa;  	const struct vdpa_config_ops *ops = vdpa->config;  	struct device *dma_dev = vdpa_get_dma_dev(vdpa); -	const struct bus_type *bus;  	int ret;  	/* Device want to do DMA by itself */  	if (ops->set_map || ops->dma_map)  		return 0; -	bus = dma_dev->bus; -	if (!bus) -		return -EFAULT; -  	if (!device_iommu_capable(dma_dev, IOMMU_CAP_CACHE_COHERENCY)) {  		dev_warn_once(&v->dev,  			      "Failed to allocate domain, device is not IOMMU cache coherent capable\n");  		return -ENOTSUPP;  	} -	v->domain = iommu_domain_alloc(bus); -	if (!v->domain) -		return -EIO; +	v->domain = iommu_paging_domain_alloc(dma_dev); +	if (IS_ERR(v->domain)) { +		ret = PTR_ERR(v->domain); +		v->domain = NULL; +		return ret; +	}  	ret = iommu_attach_device(v->domain, dma_dev);  	if (ret) |