Re: [RFC 2/4] virtio: Override device's DMA OPS with virtio_direct_dma_ops selectively

From: Christoph Hellwig
Date: Mon Jul 30 2018 - 05:25:55 EST


> +const struct dma_map_ops virtio_direct_dma_ops;

This belongs into a header if it is non-static. If you only
use it in this file anyway please mark it static and avoid a forward
declaration.

> +
> int virtio_finalize_features(struct virtio_device *dev)
> {
> int ret = dev->config->finalize_features(dev);
> @@ -174,6 +176,9 @@ int virtio_finalize_features(struct virtio_device *dev)
> if (ret)
> return ret;
>
> + if (virtio_has_iommu_quirk(dev))
> + set_dma_ops(dev->dev.parent, &virtio_direct_dma_ops);

This needs a big fat comment explaining what is going on here.

Also not new, but I find the existance of virtio_has_iommu_quirk and its
name horribly confusing. It might be better to open code it here once
only a single caller is left.