Lines Matching defs:migr_state
3494 struct vfio_user_nvme_migr_state *migr_state)
3499 memcpy(&migr_state->ctrlr_header, data_ptr, sizeof(struct vfio_user_nvme_migr_header));
3501 if (migr_state->ctrlr_header.magic != VFIO_USER_NVME_MIGR_MAGIC) {
3502 SPDK_ERRLOG("%s: bad magic number %x\n", endpoint_id(endpoint), migr_state->ctrlr_header.magic);
3507 data_ptr = endpoint->migr_data + migr_state->ctrlr_header.nvmf_data_offset;
3508 memcpy(&migr_state->nvmf_data, data_ptr, migr_state->ctrlr_header.nvmf_data_len);
3511 data_ptr = endpoint->migr_data + migr_state->ctrlr_header.qp_offset;
3512 memcpy(&migr_state->qps, data_ptr, migr_state->ctrlr_header.qp_len);
3515 data_ptr = endpoint->migr_data + migr_state->ctrlr_header.bar_offset[VFU_PCI_DEV_BAR0_REGION_IDX];
3516 memcpy(&migr_state->doorbells, data_ptr,
3517 migr_state->ctrlr_header.bar_len[VFU_PCI_DEV_BAR0_REGION_IDX]);
3520 data_ptr = endpoint->migr_data + migr_state->ctrlr_header.bar_offset[VFU_PCI_DEV_CFG_REGION_IDX];
3521 memcpy(&migr_state->cfg, data_ptr, migr_state->ctrlr_header.bar_len[VFU_PCI_DEV_CFG_REGION_IDX]);
3539 struct vfio_user_nvme_migr_state migr_state = {
3552 migr_state.ctrlr_header.magic = VFIO_USER_NVME_MIGR_MAGIC;
3555 spdk_nvmf_ctrlr_save_migr_data(ctrlr, &migr_state.nvmf_data);
3561 migr_state.qps[sqid].sq.sqid = sq->qid;
3562 migr_state.qps[sqid].sq.cqid = sq->cqid;
3563 migr_state.qps[sqid].sq.head = *sq_headp(sq);
3564 migr_state.qps[sqid].sq.size = sq->size;
3565 migr_state.qps[sqid].sq.dma_addr = sq->mapping.prp1;
3570 migr_state.qps[cqid].cq.cqid = cqid;
3571 migr_state.qps[cqid].cq.tail = *cq_tailp(cq);
3572 migr_state.qps[cqid].cq.ien = cq->ien;
3573 migr_state.qps[cqid].cq.iv = cq->iv;
3574 migr_state.qps[cqid].cq.size = cq->size;
3575 migr_state.qps[cqid].cq.phase = cq->phase;
3576 migr_state.qps[cqid].cq.dma_addr = cq->mapping.prp1;
3581 migr_state.ctrlr_header.num_io_queues = i - 1;
3584 doorbell_base = (uint32_t *)&migr_state.doorbells;
3588 memcpy(&migr_state.cfg, (void *)endpoint->pci_config_space, NVME_REG_CFG_SIZE);
3596 migr_state.ctrlr_header.nvmf_data_offset = data_offset;
3597 migr_state.ctrlr_header.nvmf_data_len = sizeof(struct spdk_nvmf_ctrlr_migr_data);
3598 memcpy(data_ptr, &migr_state.nvmf_data, sizeof(struct spdk_nvmf_ctrlr_migr_data));
3603 migr_state.ctrlr_header.qp_offset = data_offset;
3604 migr_state.ctrlr_header.qp_len = i * (sizeof(struct nvme_migr_sq_state) + sizeof(
3606 memcpy(data_ptr, &migr_state.qps, migr_state.ctrlr_header.qp_len);
3609 data_offset += migr_state.ctrlr_header.qp_len;
3610 data_ptr += migr_state.ctrlr_header.qp_len;
3611 migr_state.ctrlr_header.bar_offset[VFU_PCI_DEV_BAR0_REGION_IDX] = data_offset;
3612 migr_state.ctrlr_header.bar_len[VFU_PCI_DEV_BAR0_REGION_IDX] = NVMF_VFIO_USER_DOORBELLS_SIZE;
3613 memcpy(data_ptr, &migr_state.doorbells, NVMF_VFIO_USER_DOORBELLS_SIZE);
3618 migr_state.ctrlr_header.bar_offset[VFU_PCI_DEV_CFG_REGION_IDX] = data_offset;
3619 migr_state.ctrlr_header.bar_len[VFU_PCI_DEV_CFG_REGION_IDX] = NVME_REG_CFG_SIZE;
3620 memcpy(data_ptr, &migr_state.cfg, NVME_REG_CFG_SIZE);
3624 migr_state.ctrlr_header.sdbl = true;
3625 migr_state.ctrlr_header.shadow_doorbell_buffer = vu_ctrlr->shadow_doorbell_buffer;
3626 migr_state.ctrlr_header.eventidx_buffer = vu_ctrlr->eventidx_buffer;
3630 memcpy(endpoint->migr_data, &migr_state.ctrlr_header, sizeof(struct vfio_user_nvme_migr_header));
3633 vfio_user_ctrlr_dump_migr_data("SAVE", &migr_state, vu_ctrlr->sdbl);
3671 struct vfio_user_nvme_migr_state *migr_state)
3681 vfio_user_ctrlr_dump_migr_data("RESUME", migr_state, vu_ctrlr->sdbl);
3686 migr_qp = migr_state->qps[i];
3737 migr_qp = migr_state->qps[i];
3792 struct vfio_user_nvme_migr_state migr_state = {
3802 rc = vfio_user_migr_stream_to_data(endpoint, &migr_state);
3808 if (migr_state.ctrlr_header.sdbl) {
3811 migr_state.ctrlr_header.shadow_doorbell_buffer,
3812 migr_state.ctrlr_header.eventidx_buffer,
3820 vu_ctrlr->shadow_doorbell_buffer = migr_state.ctrlr_header.shadow_doorbell_buffer;
3821 vu_ctrlr->eventidx_buffer = migr_state.ctrlr_header.eventidx_buffer;
3826 rc = vfio_user_migr_ctrlr_construct_qps(vu_ctrlr, &migr_state);
3832 memcpy((void *)endpoint->pci_config_space, &migr_state.cfg, NVME_REG_CFG_SIZE);
3834 doorbell_base = (uint32_t *)&migr_state.doorbells;
3839 rc = spdk_nvmf_ctrlr_restore_migr_data(ctrlr, &migr_state.nvmf_data);
3845 for (i = 0; i < migr_state.nvmf_data.num_aer_cids; i++) {
3847 migr_state.nvmf_data.aer_cids[i]);
3850 cmd.cid = migr_state.nvmf_data.aer_cids[i];