mirror of https://github.com/xemu-project/xemu.git
block/nvme: Trace NVMe spec version supported by the controller
NVMe controllers implement different versions of the spec, and different features of it. It is useful to gather this information when debugging. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210127212137.3482291-3-philmd@redhat.com> Reviewed-by: Klaus Jensen <k.jensen@samsung.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
97b709f32e
commit
fcc8672aca
|
@ -708,6 +708,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace,
|
||||||
AioContext *aio_context = bdrv_get_aio_context(bs);
|
AioContext *aio_context = bdrv_get_aio_context(bs);
|
||||||
int ret;
|
int ret;
|
||||||
uint64_t cap;
|
uint64_t cap;
|
||||||
|
uint32_t ver;
|
||||||
uint64_t timeout_ms;
|
uint64_t timeout_ms;
|
||||||
uint64_t deadline, now;
|
uint64_t deadline, now;
|
||||||
volatile NvmeBar *regs = NULL;
|
volatile NvmeBar *regs = NULL;
|
||||||
|
@ -764,6 +765,11 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace,
|
||||||
bs->bl.request_alignment = s->page_size;
|
bs->bl.request_alignment = s->page_size;
|
||||||
timeout_ms = MIN(500 * NVME_CAP_TO(cap), 30000);
|
timeout_ms = MIN(500 * NVME_CAP_TO(cap), 30000);
|
||||||
|
|
||||||
|
ver = le32_to_cpu(regs->vs);
|
||||||
|
trace_nvme_controller_spec_version(extract32(ver, 16, 16),
|
||||||
|
extract32(ver, 8, 8),
|
||||||
|
extract32(ver, 0, 8));
|
||||||
|
|
||||||
/* Reset device to get a clean state. */
|
/* Reset device to get a clean state. */
|
||||||
regs->cc = cpu_to_le32(le32_to_cpu(regs->cc) & 0xFE);
|
regs->cc = cpu_to_le32(le32_to_cpu(regs->cc) & 0xFE);
|
||||||
/* Wait for CSTS.RDY = 0. */
|
/* Wait for CSTS.RDY = 0. */
|
||||||
|
|
|
@ -136,6 +136,7 @@ qed_aio_write_main(void *s, void *acb, int ret, uint64_t offset, size_t len) "s
|
||||||
# nvme.c
|
# nvme.c
|
||||||
nvme_controller_capability_raw(uint64_t value) "0x%08"PRIx64
|
nvme_controller_capability_raw(uint64_t value) "0x%08"PRIx64
|
||||||
nvme_controller_capability(const char *desc, uint64_t value) "%s: %"PRIu64
|
nvme_controller_capability(const char *desc, uint64_t value) "%s: %"PRIu64
|
||||||
|
nvme_controller_spec_version(uint32_t mjr, uint32_t mnr, uint32_t ter) "Specification supported: %u.%u.%u"
|
||||||
nvme_kick(void *s, unsigned q_index) "s %p q #%u"
|
nvme_kick(void *s, unsigned q_index) "s %p q #%u"
|
||||||
nvme_dma_flush_queue_wait(void *s) "s %p"
|
nvme_dma_flush_queue_wait(void *s) "s %p"
|
||||||
nvme_error(int cmd_specific, int sq_head, int sqid, int cid, int status) "cmd_specific %d sq_head %d sqid %d cid %d status 0x%x"
|
nvme_error(int cmd_specific, int sq_head, int sqid, int cid, int status) "cmd_specific %d sq_head %d sqid %d cid %d status 0x%x"
|
||||||
|
|
Loading…
Reference in New Issue