nvme/pcie: Make signature of nvme_pcie_ctrlr_alloc_cmb more like other

alloc functions

Make the signature look more like spdk_dma_malloc and family.

Change-Id: I6a31acf3b9edd136924b6e53b9a23c699429b9dc
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/788
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Ben Walker 2020-02-11 11:01:12 -07:00 committed by Tomasz Zawadzki
parent 7b28450b3f
commit 9ad044c464

View File

@ -994,31 +994,29 @@ nvme_pcie_qpair_reset(struct spdk_nvme_qpair *qpair)
return 0;
}
static int
nvme_pcie_ctrlr_alloc_cmb(struct spdk_nvme_ctrlr *ctrlr, uint64_t length, uint64_t aligned,
uint64_t *offset)
static void *
nvme_pcie_ctrlr_alloc_cmb(struct spdk_nvme_ctrlr *ctrlr, uint64_t size, uint64_t alignment)
{
struct nvme_pcie_ctrlr *pctrlr = nvme_pcie_ctrlr(ctrlr);
uint64_t round_offset;
uintptr_t addr;
if (pctrlr->cmb.mem_register_addr != NULL) {
/* BAR is mapped for data */
return -1;
return NULL;
}
round_offset = pctrlr->cmb.current_offset;
round_offset = (round_offset + (aligned - 1)) & ~(aligned - 1);
addr = (uintptr_t)pctrlr->cmb.bar_va + pctrlr->cmb.current_offset;
addr = (addr + (alignment - 1)) & ~(alignment - 1);
/* CMB may only consume part of the BAR, calculate accordingly */
if (round_offset + length > pctrlr->cmb.end) {
if (addr + size > ((uintptr_t)pctrlr->cmb.bar_va + pctrlr->cmb.size)) {
SPDK_ERRLOG("Tried to allocate past valid CMB range!\n");
return -1;
return NULL;
}
*offset = round_offset;
pctrlr->cmb.current_offset = round_offset + length;
pctrlr->cmb.current_offset = (addr + size) - (uintptr_t)pctrlr->cmb.bar_va;
return 0;
return (void *)addr;
}
static int
@ -1031,7 +1029,6 @@ nvme_pcie_qpair_construct(struct spdk_nvme_qpair *qpair,
struct nvme_tracker *tr;
uint16_t i;
volatile uint32_t *doorbell_base;
uint64_t offset;
uint16_t num_trackers;
size_t page_align = VALUE_2MB;
uint32_t flags = SPDK_MALLOC_DMA;
@ -1070,10 +1067,10 @@ nvme_pcie_qpair_construct(struct spdk_nvme_qpair *qpair,
/* cmd and cpl rings must be aligned on page size boundaries. */
if (ctrlr->opts.use_cmb_sqs) {
if (nvme_pcie_ctrlr_alloc_cmb(ctrlr, pqpair->num_entries * sizeof(struct spdk_nvme_cmd),
sysconf(_SC_PAGESIZE), &offset) == 0) {
pqpair->cmd = pctrlr->cmb.bar_va + offset;
pqpair->cmd_bus_addr = pctrlr->cmb.bar_pa + offset;
pqpair->cmd = nvme_pcie_ctrlr_alloc_cmb(ctrlr, pqpair->num_entries * sizeof(struct spdk_nvme_cmd),
sysconf(_SC_PAGESIZE));
pqpair->cmd_bus_addr = spdk_vtophys(pqpair->cmd, NULL);
if (pqpair->cmd != NULL) {
pqpair->sq_in_cmb = true;
}
}