On Thu, Aug 05, 2021 at 11:07:35AM -0600, Alex Williamson wrote: > @@ -2281,15 +2143,13 @@ static int vfio_pci_try_zap_and_vma_lock_cb(struct pci_dev *pdev, void *data) > > vdev = container_of(device, struct vfio_pci_device, vdev); > > - /* > - * Locking multiple devices is prone to deadlock, runaway and > - * unwind if we hit contention. > - */ > - if (!vfio_pci_zap_and_vma_lock(vdev, true)) { > + if (!down_write_trylock(&vdev->memory_lock)) { > vfio_device_put(device); > return -EBUSY; > } Now that this is simplified so much, I wonder if we can drop the memory_lock and just use the dev_set->lock? That avoids the whole down_write_trylock thing and makes it much more understandable? Jason