static int ivshmem_load_old(QEMUFile *f, void *opaque, int version_id) { IVShmemState *s = opaque; PCIDevice *pdev = PCI_DEVICE(s); int ret; IVSHMEM_DPRINTF("ivshmem_load_old\n"); if (version_id != 0) { return -EINVAL; } ret = ivshmem_pre_load(s); if (ret) { return ret; } ret = pci_device_load(pdev, f); if (ret) { return ret; } if (ivshmem_has_feature(s, IVSHMEM_MSI)) { msix_load(pdev, f); ivshmem_msix_vector_use(s); } else { s->intrstatus = qemu_get_be32(f); s->intrmask = qemu_get_be32(f); } return 0; }
static int ivshmem_load(QEMUFile* f, void *opaque, int version_id) { IVSHMEM_DPRINTF("ivshmem_load\n"); IVShmemState *proxy = opaque; int ret; if (version_id > 0) { return -EINVAL; } if (proxy->role_val == IVSHMEM_PEER) { fprintf(stderr, "ivshmem: 'peer' devices are not migratable\n"); return -EINVAL; } ret = pci_device_load(&proxy->dev, f); if (ret) { return ret; } if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) { msix_load(&proxy->dev, f); ivshmem_use_msix(proxy); } else { proxy->intrstatus = qemu_get_be32(f); proxy->intrmask = qemu_get_be32(f); } return 0; }
static int ivshmem_load_old(QEMUFile *f, void *opaque, int version_id) { IVShmemState *s = opaque; PCIDevice *pdev = PCI_DEVICE(s); int ret; IVSHMEM_DPRINTF("ivshmem_load_old\n"); if (version_id != 0) { return -EINVAL; } if (s->role_val == IVSHMEM_PEER) { error_report("'peer' devices are not migratable"); return -EINVAL; } ret = pci_device_load(pdev, f); if (ret) { return ret; } if (ivshmem_has_feature(s, IVSHMEM_MSI)) { msix_load(pdev, f); ivshmem_use_msix(s); } else { s->intrstatus = qemu_get_be32(f); s->intrmask = qemu_get_be32(f); } return 0; }
static int get_msix_state(QEMUFile *f, void *pv, size_t size) { msix_load(pv, f); return 0; }
static int get_msix_state(QEMUFile *f, void *pv, size_t size, VMStateField *field) { msix_load(pv, f); return 0; }