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