On Mon, Oct 05, 2020 at 11:50:58AM -0700, [email protected] wrote: > +static void pci_proxy_dev_realize(PCIDevice *device, Error **errp) > +{ > + PCIProxyDev *dev = PCI_PROXY_DEV(device); > + int fd; > + > + if (dev->fd) { > + fd = monitor_fd_param(cur_mon, dev->fd, errp); > + if (fd == -1) { > + error_prepend(errp, "proxy: unable to parse fd: "); > + return; > + } > + proxy_set_socket(dev, fd, errp); > + } else { > + error_setg(errp, "fd parameter not specified for %s", > + DEVICE(device)->id); > + return; > + } > + > + error_setg(&dev->migration_blocker, "%s does not support migration", > + TYPE_PCI_PROXY_DEV); > + if (migrate_add_blocker(dev->migration_blocker, errp)) { > + error_free(dev->migration_blocker); > + error_free(*errp); > + dev->migration_blocker = NULL; > + error_setg(errp, "Failed to set migration blocker"); > + } > + > + qemu_mutex_init(&dev->io_mutex); > + qio_channel_set_blocking(dev->ioc, true, NULL); > +} > + > +static void pci_proxy_dev_exit(PCIDevice *pdev) > +{ > + PCIProxyDev *dev = PCI_PROXY_DEV(pdev); > + > + qio_channel_close(dev->ioc, NULL);
Call migrate_del_blocker() and delete dev->migration_blocker?
signature.asc
Description: PGP signature
