On Mon, 10 May 2021 12:44:15 -0400 Tony Krowiak <akrowiak@xxxxxxxxxxxxx> wrote: > @@ -1601,8 +1676,10 @@ void vfio_ap_mdev_remove_queue(struct ap_device *apdev) > mutex_lock(&matrix_dev->lock); > q = dev_get_drvdata(&apdev->device); > > - if (q->matrix_mdev) > + if (q->matrix_mdev) { > vfio_ap_mdev_unlink_queue_fr_mdev(q); > + vfio_ap_mdev_refresh_apcb(q->matrix_mdev); > + } > > vfio_ap_mdev_reset_queue(q, 1); > dev_set_drvdata(&apdev->device, NULL); At this point we don't know if !!kvm_busy or kvm_busy AFAICT. If !!kvm_busy, then we may end up changing a shadow_apcb while an other thread is in the middle of committing it to the SD satellite. That would be no good. Regards, Halil