if ((private->state != VFIO_CCW_STATE_NOT_OPER) &&
            (private->state != VFIO_CCW_STATE_STANDBY)) {
-               if (!vfio_ccw_mdev_reset(mdev))
+               if (!vfio_ccw_sch_quiesce(private->sch))
                        private->state = VFIO_CCW_STATE_STANDBY;
                /* The state will be NOT_OPER on error. */
        }
 
+       cp_free(&private->cp);
        private->mdev = NULL;
        atomic_inc(&private->avail);
 
                dev_get_drvdata(mdev_parent_dev(mdev));
        int i;
 
+       if ((private->state != VFIO_CCW_STATE_NOT_OPER) &&
+           (private->state != VFIO_CCW_STATE_STANDBY)) {
+               if (!vfio_ccw_mdev_reset(mdev))
+                       private->state = VFIO_CCW_STATE_STANDBY;
+               /* The state will be NOT_OPER on error. */
+       }
+
+       cp_free(&private->cp);
        vfio_unregister_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY,
                                 &private->nb);