Re: [PATCH v1 1/2] iommu/virtio: Set driver data before enabling virtqueues

Will Deacon <[email protected]>
Newsgroups dev.linux.lists.iommu,dev.linux.lists.virtualization,org.kernel.vger.linux-kernel
Message-ID <amE5Ld70N9tsf_dL@willie-the-truck>
On Tue, Jul 14, 2026 at 10:59:13AM +0800, weimin xiong wrote:
> From: Xiong Weimin <[email protected]>
> 
> The event virtqueue callback retrieves the driver state through
> vq->vdev->priv. viommu_probe() currently initializes that pointer only
> after virtio_device_ready() and after the event queue is populated.
> 
> Store the driver data before creating the virtqueues so callbacks always
> see initialized driver state once the device is made ready. Clear the
> pointer again on probe failure.
> 
> Signed-off-by: Xiong Weimin <[email protected]>
> ---
>  drivers/iommu/virtio-iommu.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 9118377d7..4c91a82d2 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -1173,11 +1173,12 @@ static int viommu_probe(struct virtio_device *vdev)
>  	ida_init(&viommu->domain_ids);
>  	viommu->dev = dev;
>  	viommu->vdev = vdev;
> +	vdev->priv = viommu;
>  	INIT_LIST_HEAD(&viommu->requests);
>  
>  	ret = viommu_init_vqs(viommu);
>  	if (ret)
> -		return ret;
> +		goto err_clear_priv;

I guess it would make sense to pass the 'vdev' instead of the 'viommu'
pointer to viommu_init_vqs(), now that you have linked them together.

Will
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.