lib/nvme: restore spdk_nvme_ctrlr_get_registers

This function was intended to be deleted as unused, however it can be
useful for debug and test capabilities.

Its declaration was left in header file, so just adding implementation
for PCIE and VFIO USER transports.

Signed-off-by: Szulik, Maciej <maciej.szulik@intel.com>
Change-Id: I670acb53c2f88a844525a0ecea27143b055f117b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17400
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
Szulik, Maciej 2023-03-29 12:37:51 +02:00 committed by Jim Harris
parent 414ff9bc23
commit 7858e18b05
5 changed files with 33 additions and 0 deletions

View File

@ -4140,6 +4140,8 @@ struct spdk_nvme_transport_ops {
int array_size); int array_size);
int (*ctrlr_ready)(struct spdk_nvme_ctrlr *ctrlr); int (*ctrlr_ready)(struct spdk_nvme_ctrlr *ctrlr);
volatile struct spdk_nvme_registers *(*ctrlr_get_registers)(struct spdk_nvme_ctrlr *ctrlr);
}; };
/** /**

View File

@ -148,6 +148,14 @@ nvme_pcie_reg_addr(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset)
return (volatile void *)((uintptr_t)pctrlr->regs + offset); return (volatile void *)((uintptr_t)pctrlr->regs + offset);
} }
static volatile struct spdk_nvme_registers *
nvme_pcie_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
{
struct nvme_pcie_ctrlr *pctrlr = nvme_pcie_ctrlr(ctrlr);
return pctrlr->regs;
}
static int static int
nvme_pcie_ctrlr_set_reg_4(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint32_t value) nvme_pcie_ctrlr_set_reg_4(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint32_t value)
{ {
@ -1067,6 +1075,7 @@ const struct spdk_nvme_transport_ops pcie_ops = {
.ctrlr_destruct = nvme_pcie_ctrlr_destruct, .ctrlr_destruct = nvme_pcie_ctrlr_destruct,
.ctrlr_enable = nvme_pcie_ctrlr_enable, .ctrlr_enable = nvme_pcie_ctrlr_enable,
.ctrlr_get_registers = nvme_pcie_ctrlr_get_registers,
.ctrlr_set_reg_4 = nvme_pcie_ctrlr_set_reg_4, .ctrlr_set_reg_4 = nvme_pcie_ctrlr_set_reg_4,
.ctrlr_set_reg_8 = nvme_pcie_ctrlr_set_reg_8, .ctrlr_set_reg_8 = nvme_pcie_ctrlr_set_reg_8,
.ctrlr_get_reg_4 = nvme_pcie_ctrlr_get_reg_4, .ctrlr_get_reg_4 = nvme_pcie_ctrlr_get_reg_4,

View File

@ -853,3 +853,15 @@ spdk_nvme_transport_set_opts(const struct spdk_nvme_transport_opts *opts, size_t
return 0; return 0;
} }
volatile struct spdk_nvme_registers *
spdk_nvme_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
{
const struct spdk_nvme_transport *transport = nvme_get_transport(ctrlr->trid.trstring);
if (transport->ops.ctrlr_get_registers) {
return transport->ops.ctrlr_get_registers(ctrlr);
}
return NULL;
}

View File

@ -32,6 +32,14 @@ nvme_vfio_ctrlr(struct spdk_nvme_ctrlr *ctrlr)
return SPDK_CONTAINEROF(pctrlr, struct nvme_vfio_ctrlr, pctrlr); return SPDK_CONTAINEROF(pctrlr, struct nvme_vfio_ctrlr, pctrlr);
} }
static volatile struct spdk_nvme_registers *
nvme_vfio_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
{
struct nvme_vfio_ctrlr *vctrlr = nvme_vfio_ctrlr(ctrlr);
return vctrlr->pctrlr.regs;
}
static int static int
nvme_vfio_ctrlr_set_reg_4(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint32_t value) nvme_vfio_ctrlr_set_reg_4(struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, uint32_t value)
{ {
@ -321,6 +329,7 @@ const struct spdk_nvme_transport_ops vfio_ops = {
.ctrlr_destruct = nvme_vfio_ctrlr_destruct, .ctrlr_destruct = nvme_vfio_ctrlr_destruct,
.ctrlr_enable = nvme_vfio_ctrlr_enable, .ctrlr_enable = nvme_vfio_ctrlr_enable,
.ctrlr_get_registers = nvme_vfio_ctrlr_get_registers,
.ctrlr_set_reg_4 = nvme_vfio_ctrlr_set_reg_4, .ctrlr_set_reg_4 = nvme_vfio_ctrlr_set_reg_4,
.ctrlr_set_reg_8 = nvme_vfio_ctrlr_set_reg_8, .ctrlr_set_reg_8 = nvme_vfio_ctrlr_set_reg_8,
.ctrlr_get_reg_4 = nvme_vfio_ctrlr_get_reg_4, .ctrlr_get_reg_4 = nvme_vfio_ctrlr_get_reg_4,

View File

@ -117,6 +117,7 @@
spdk_nvme_ctrlr_set_remove_cb; spdk_nvme_ctrlr_set_remove_cb;
spdk_nvme_ctrlr_get_memory_domains; spdk_nvme_ctrlr_get_memory_domains;
spdk_nvme_ctrlr_get_discovery_log_page; spdk_nvme_ctrlr_get_discovery_log_page;
spdk_nvme_ctrlr_get_registers;
spdk_nvme_poll_group_create; spdk_nvme_poll_group_create;
spdk_nvme_poll_group_add; spdk_nvme_poll_group_add;