Lines Matching defs:mapping
244 * This holds the information tracking a local process mapping of an NVMe queue
248 /* iov of local process mapping. */
302 struct nvme_q_mapping mapping;
342 struct nvme_q_mapping mapping;
564 q_addr(struct nvme_q_mapping *mapping)
566 return mapping->iov.iov_base;
1404 map_q(struct nvmf_vfio_user_ctrlr *vu_ctrlr, struct nvme_q_mapping *mapping,
1409 assert(mapping->len != 0);
1410 assert(q_addr(mapping) == NULL);
1412 ret = map_one(vu_ctrlr->endpoint->vfu_ctx, mapping->prp1, mapping->len,
1413 mapping->sg, &mapping->iov, flags);
1419 memset(q_addr(mapping), 0, mapping->len);
1426 unmap_q(struct nvmf_vfio_user_ctrlr *vu_ctrlr, struct nvme_q_mapping *mapping)
1428 if (q_addr(mapping) != NULL) {
1429 vfu_sgl_put(vu_ctrlr->endpoint->vfu_ctx, mapping->sg,
1430 &mapping->iov, 1);
1431 mapping->iov.iov_base = NULL;
1447 assert(q_addr(&sq->mapping) == NULL);
1453 sq->mapping.prp1 = regs->asq;
1454 sq->mapping.len = sq->size * sizeof(struct spdk_nvme_cmd);
1458 ret = map_q(ctrlr, &sq->mapping, MAP_INITIALIZE);
1652 assert(q_addr(&cq->mapping) == NULL);
1658 cq->mapping.prp1 = regs->acq;
1659 cq->mapping.len = cq->size * sizeof(struct spdk_nvme_cpl);
1665 ret = map_q(ctrlr, &cq->mapping, MAP_RW | MAP_INITIALIZE);
1777 if (spdk_unlikely(cq == NULL || q_addr(&cq->mapping) == NULL)) {
1799 cpl = ((struct spdk_nvme_cpl *)q_addr(&cq->mapping)) + *cq_tailp(cq);
1856 unmap_q(ctrlr, &cq->mapping);
1877 unmap_q(vu_ctrlr, &sq->mapping);
1916 unmap_q(ctrlr, &sq->mapping);
1920 free(sq->mapping.sg);
1928 unmap_q(ctrlr, &cq->mapping);
1929 free(cq->mapping.sg);
1949 sq->mapping.sg = calloc(1, dma_sg_size());
1950 if (sq->mapping.sg == NULL) {
1978 cq->mapping.sg = calloc(1, dma_sg_size());
1979 if (cq->mapping.sg == NULL) {
2082 sq->mapping.prp1 = cmd->dptr.prp.prp1;
2083 sq->mapping.len = sq->size * sizeof(struct spdk_nvme_cmd);
2085 err = map_q(ctrlr, &sq->mapping, MAP_INITIALIZE);
2094 q_addr(&sq->mapping));
2186 cq->mapping.prp1 = cmd->dptr.prp.prp1;
2187 cq->mapping.len = cq->size * sizeof(struct spdk_nvme_cpl);
2191 err = map_q(ctrlr, &cq->mapping, MAP_RW | MAP_INITIALIZE);
2200 q_addr(&cq->mapping));
2589 queue = q_addr(&sq->mapping);
2692 map_start = info->mapping.iov_base;
2693 map_end = info->mapping.iov_base + info->mapping.iov_len;
2695 if (((uintptr_t)info->mapping.iov_base & MASK_2MB) ||
2696 (info->mapping.iov_len & MASK_2MB)) {
2716 ret = spdk_mem_register(info->mapping.iov_base, info->mapping.iov_len);
2731 /* For shared CQ case, we will use q_addr() to avoid mapping CQ multiple times */
2732 if (cq->size && q_addr(&cq->mapping) == NULL) {
2733 ret = map_q(ctrlr, &cq->mapping, MAP_RW | MAP_QUIET);
2736 cq->qid, cq->mapping.prp1,
2737 cq->mapping.prp1 + cq->mapping.len);
2743 ret = map_q(ctrlr, &sq->mapping, MAP_R | MAP_QUIET);
2746 sq->qid, sq->mapping.prp1,
2747 sq->mapping.prp1 + sq->mapping.len);
2770 map_start = info->mapping.iov_base;
2771 map_end = info->mapping.iov_base + info->mapping.iov_len;
2773 if (((uintptr_t)info->mapping.iov_base & MASK_2MB) ||
2774 (info->mapping.iov_len & MASK_2MB)) {
2790 if (q_addr(&sq->mapping) >= map_start && q_addr(&sq->mapping) <= map_end) {
2791 unmap_q(ctrlr, &sq->mapping);
2796 if (q_addr(&cq->mapping) >= map_start && q_addr(&cq->mapping) <= map_end) {
2797 unmap_q(ctrlr, &cq->mapping);
2823 ret = spdk_mem_unregister(info->mapping.iov_base, info->mapping.iov_len);
2842 unmap_q(vu_ctrlr, &vu_ctrlr->sqs[0]->mapping);
2843 unmap_q(vu_ctrlr, &vu_ctrlr->cqs[0]->mapping);
3565 migr_state.qps[sqid].sq.dma_addr = sq->mapping.prp1;
3576 migr_state.qps[cqid].cq.dma_addr = cq->mapping.prp1;
3720 sq->mapping.prp1 = migr_qp.sq.dma_addr;
3721 sq->mapping.len = sq->size * sizeof(struct spdk_nvme_cmd);
3723 sq->mapping.prp1, sq->mapping.len,
3724 sq->mapping.sg, &sq->mapping.iov,
3728 sqid, sq->mapping.prp1, sq->size);
3763 cq->mapping.prp1 = migr_qp.cq.dma_addr;
3764 cq->mapping.len = cq->size * sizeof(struct spdk_nvme_cpl);
3769 cq->mapping.prp1, cq->mapping.len,
3770 cq->mapping.sg, &cq->mapping.iov,
3774 cqid, cq->mapping.prp1, cq->size);
3914 if (cq == NULL || q_addr(&cq->mapping) == NULL) {
3918 vfu_sgl_mark_dirty(endpoint->vfu_ctx, cq->mapping.sg, 1);