Re: [PATCH v1 09/22] vfio/common: check PASID alloc/free availability

Peter Xu
2020-03-23T22:07:04Z

On Sun, Mar 22, 2020 at 05:36:06AM -0700, Liu Yi L wrote:

[...]

> @@ -1256,11 +1334,19 @@ static int vfio_init_container(VFIOContainer *container, int group_fd,
> }
>
> if (iommu_type == VFIO_TYPE1_NESTING_IOMMU) {
> - /*
> - * TODO: config flags per host IOMMU nesting capability
> - * e.g. check if VFIO_TYPE1_NESTING_IOMMU supports PASID
> - * alloc/free
> - */
> + struct vfio_iommu_type1_info_cap_nesting nesting = {
> + .nesting_capabilities = 0x0,
> + .stage1_formats = 0, };
> +
> + ret = vfio_get_nesting_iommu_cap(container, &nesting);
> + if (ret) {
> + error_setg_errno(errp, -ret,
> + "Failed to get nesting iommu cap");
> + return ret;
> + }
> +
> + flags |= (nesting.nesting_capabilities & VFIO_IOMMU_PASID_REQS) ?
> + HOST_IOMMU_PASID_REQUEST : 0;

I replied in the previous patch but I forgot to use reply-all...

Anyway I'll comment again here - I think it'll be slightly better we
use the previous patch to only offer the vfio specific hooks, and this
patch to do all the rest including host_iommu_ctx_init() below, which
will avoid creating the host_iommu_ctx_init().

Thanks,

> host_iommu_ctx_init(&container->host_icx,
> sizeof(container->host_icx),
> TYPE_VFIO_HOST_IOMMU_CONTEXT,
> --
> 2.7.4
>

--
Peter Xu