From: Tokunori Ikegami Date: Thu, 3 Nov 2022 15:56:33 +0000 (+0900) Subject: nvme: Change to use pci resource bar at first by show-regs command X-Git-Tag: v2.3~42 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=21fde2d657184194bc25e1a83cbb862177aa9625;p=users%2Fsagi%2Fnvme-cli.git nvme: Change to use pci resource bar at first by show-regs command This is to prevent to submit the unnecessary or unsupported commands to device mentioned by the issue #1593. Signed-off-by: Tokunori Ikegami --- diff --git a/nvme.c b/nvme.c index 74970649..795ba769 100644 --- a/nvme.c +++ b/nvme.c @@ -4543,6 +4543,8 @@ static int nvme_get_properties(int fd, void **pbar) err = 0; value = -1; } else if (err) { + fprintf(stderr, "get-property: %s\n", + nvme_strerror(errno)); free(*pbar); break; } @@ -4585,15 +4587,19 @@ static void *mmap_registers(nvme_root_t r, struct nvme_dev *dev) fd = open(path, O_RDONLY); if (fd < 0) { - fprintf(stderr, "%s did not find a pci resource, open failed %s\n", + if (map_log_level(0, false) >= LOG_DEBUG) + fprintf(stderr, + "%s did not find a pci resource, open failed %s\n", dev->name, strerror(errno)); return NULL; } membase = mmap(NULL, getpagesize(), PROT_READ, MAP_SHARED, fd, 0); if (membase == MAP_FAILED) { - fprintf(stderr, "%s failed to map. ", dev->name); - fprintf(stderr, "Did your kernel enable CONFIG_IO_STRICT_DEVMEM?\n"); + if (map_log_level(0, false) >= LOG_DEBUG) { + fprintf(stderr, "%s failed to map. ", dev->name); + fprintf(stderr, "Did your kernel enable CONFIG_IO_STRICT_DEVMEM?\n"); + } membase = NULL; } @@ -4610,7 +4616,7 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu enum nvme_print_flags flags; struct nvme_dev *dev; - bool fabrics = true; + bool fabrics = false; nvme_root_t r; void *bar; int err; @@ -4641,16 +4647,13 @@ static int show_registers(int argc, char **argv, struct command *cmd, struct plu goto close_dev; if (cfg.human_readable) flags |= VERBOSE; - - err = nvme_get_properties(dev_fd(dev), &bar); - if (err) { - bar = mmap_registers(r, dev); - fabrics = false; - if (bar) - err = 0; + bar = mmap_registers(r, dev); + if (!bar) { + err = nvme_get_properties(dev_fd(dev), &bar); + if (!bar) + goto close_dev; + fabrics = true; } - if (!bar) - goto close_dev; nvme_show_ctrl_registers(bar, fabrics, flags); if (fabrics)