nvme: spdk_nvme_ctrlr_get_registers
This function returns a pointer to the PCIe I/O registers for a controller or NULL if unsupported for this transport. Used for PCIe only, other transports return NULL. Use with caution. Signed-off-by: James Bergsten <jamesx.bergsten@intel.com> Change-Id: I849f9de9ad259a65b1eef9c1237345eb7195b9bf Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/452927 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: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
fb6fbf3256
commit
740b2f5622
@ -1504,6 +1504,18 @@ int spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload
|
||||
int slot, enum spdk_nvme_fw_commit_action commit_action,
|
||||
struct spdk_nvme_status *completion_status);
|
||||
|
||||
/**
|
||||
* Return virtual address of PCIe NVM I/O registers
|
||||
*
|
||||
* This function returns a pointer to the PCIe I/O registers for a controller
|
||||
* or NULL if unsupported for this transport.
|
||||
*
|
||||
* \param ctrlr Controller whose registers are to be accessed.
|
||||
*
|
||||
* \return Pointer to virtual address of register bank, or NULL.
|
||||
*/
|
||||
volatile struct spdk_nvme_registers *spdk_nvme_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr);
|
||||
|
||||
/**
|
||||
* Allocate an I/O buffer from the controller memory buffer (Experimental).
|
||||
*
|
||||
|
@ -989,6 +989,7 @@ struct spdk_nvme_ctrlr *spdk_nvme_get_ctrlr_by_trid_unsafe(
|
||||
struct spdk_nvme_qpair *nvme_ ## name ## _ctrlr_create_io_qpair(struct spdk_nvme_ctrlr *ctrlr, uint16_t qid, const struct spdk_nvme_io_qpair_opts *opts); \
|
||||
void *nvme_ ## name ## _ctrlr_alloc_cmb_io_buffer(struct spdk_nvme_ctrlr *ctrlr, size_t size); \
|
||||
int nvme_ ## name ## _ctrlr_free_cmb_io_buffer(struct spdk_nvme_ctrlr *ctrlr, void *buf, size_t size); \
|
||||
volatile struct spdk_nvme_registers *nvme_ ## name ## _ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr); \
|
||||
int nvme_ ## name ## _ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair); \
|
||||
int nvme_ ## name ## _ctrlr_reconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair); \
|
||||
void nvme_ ## name ## _qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr); \
|
||||
|
@ -594,6 +594,14 @@ nvme_pcie_ctrlr_alloc_cmb(struct spdk_nvme_ctrlr *ctrlr, uint64_t length, uint64
|
||||
return 0;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
void *
|
||||
nvme_pcie_ctrlr_alloc_cmb_io_buffer(struct spdk_nvme_ctrlr *ctrlr, size_t size)
|
||||
{
|
||||
|
@ -1761,6 +1761,12 @@ nvme_rdma_ctrlr_get_max_sges(struct spdk_nvme_ctrlr *ctrlr)
|
||||
return spdk_min(ctrlr->cdata.nvmf_specific.msdbd, NVME_RDMA_MAX_SGL_DESCRIPTORS);
|
||||
}
|
||||
|
||||
volatile struct spdk_nvme_registers *
|
||||
nvme_rdma_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *
|
||||
nvme_rdma_ctrlr_alloc_cmb_io_buffer(struct spdk_nvme_ctrlr *ctrlr, size_t size)
|
||||
{
|
||||
|
@ -1852,6 +1852,12 @@ nvme_tcp_ctrlr_get_max_sges(struct spdk_nvme_ctrlr *ctrlr)
|
||||
return 1;
|
||||
}
|
||||
|
||||
volatile struct spdk_nvme_registers *
|
||||
nvme_tcp_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *
|
||||
nvme_tcp_ctrlr_alloc_cmb_io_buffer(struct spdk_nvme_ctrlr *ctrlr, size_t size)
|
||||
{
|
||||
|
@ -185,6 +185,12 @@ nvme_transport_ctrlr_reconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_
|
||||
NVME_TRANSPORT_CALL(ctrlr->trid.trtype, ctrlr_reconnect_qpair, (ctrlr, qpair));
|
||||
}
|
||||
|
||||
volatile struct spdk_nvme_registers *
|
||||
nvme_transport_ctrlr_get_registers(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
NVME_TRANSPORT_CALL(ctrlr->trid.trtype, ctrlr_get_registers, (ctrlr));
|
||||
}
|
||||
|
||||
void
|
||||
nvme_transport_qpair_abort_reqs(struct spdk_nvme_qpair *qpair, uint32_t dnr)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user