[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Y8BDDQi9W86UfszF@nvidia.com>
Date: Thu, 12 Jan 2023 13:27:41 -0400
From: Jason Gunthorpe <jgg@...dia.com>
To: Matthew Rosato <mjrosato@...ux.ibm.com>
Cc: Sean Christopherson <seanjc@...gle.com>,
alex.williamson@...hat.com, pbonzini@...hat.com, cohuck@...hat.com,
farman@...ux.ibm.com, pmorel@...ux.ibm.com,
borntraeger@...ux.ibm.com, frankja@...ux.ibm.com,
imbrenda@...ux.ibm.com, david@...hat.com, akrowiak@...ux.ibm.com,
jjherne@...ux.ibm.com, pasic@...ux.ibm.com,
zhenyuw@...ux.intel.com, zhi.a.wang@...el.com,
linux-s390@...r.kernel.org, kvm@...r.kernel.org,
intel-gvt-dev@...ts.freedesktop.org,
intel-gfx@...ts.freedesktop.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] KVM: async kvm_destroy_vm for vfio devices
On Thu, Jan 12, 2023 at 12:21:17PM -0500, Matthew Rosato wrote:
> So should I work up a v2 that does symbol gets for kvm_get_kvm_safe
> and kvm_put_kvm from vfio_main and drop kvm_put_kvm_async? Or is
> the patch Yi is working on changing things such that will also
> address the deadlock issue?
I don't think Yi's part will help
> +361,22 @@ static int vfio_device_first_open(struct vfio_device
> *device, if (ret) goto err_module_put;
>
> + if (kvm && !vfio_kvm_get(kvm)) {
Do call it kvm_get_safe though
> + ret = -ENOENT;
> + goto err_unuse_iommu;
> + }
> device->kvm = kvm;
> if (device->ops->open_device) {
> ret = device->ops->open_device(device);
> if (ret)
> - goto err_unuse_iommu;
> + goto err_put_kvm;
> }
> return 0;
>
> -err_unuse_iommu:
> +err_put_kvm:
> + vfio_put_kvm(kvm);
> device->kvm = NULL;
> +err_unuse_iommu:
> if (iommufd)
> vfio_iommufd_unbind(device);
> else
> @@ -465,6 +471,9 @@ static int vfio_device_fops_release(struct inode *inode, struct file *filep)
>
> vfio_device_group_close(device);
>
> + if (device->open_count == 0 && device->group->kvm)
> + vfio_kvm_put(device->group->kvm);
> +
No, you can't touch group->kvm without holding the group lock,
that is the whole point of the problem..
This has to be device->kvm
Jason
Powered by blists - more mailing lists