Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143387412
D20282.id58375.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D20282.id58375.diff
View Options
Index: head/sys/cam/nvme/nvme_xpt.c
===================================================================
--- head/sys/cam/nvme/nvme_xpt.c
+++ head/sys/cam/nvme/nvme_xpt.c
@@ -722,6 +722,8 @@
struct ccb_trans_settings cts;
struct cam_path *path = periph->path;
struct ccb_trans_settings_nvme *nvmex;
+ struct sbuf sb;
+ char buffer[120];
cam_periph_assert(periph, MA_OWNED);
@@ -736,13 +738,18 @@
/* Ask the SIM for its base transfer speed */
xpt_path_inq(&cpi, periph->path);
- printf("%s%d: nvme version %d.%d x%d (max x%d) lanes PCIe Gen%d (max Gen%d) link",
+ sbuf_new(&sb, buffer, sizeof(buffer), SBUF_FIXEDLEN);
+ sbuf_printf(&sb, "%s%d: nvme version %d.%d",
periph->periph_name, periph->unit_number,
NVME_MAJOR(nvmex->spec),
- NVME_MINOR(nvmex->spec),
- nvmex->lanes, nvmex->max_lanes,
- nvmex->speed, nvmex->max_speed);
- printf("\n");
+ NVME_MINOR(nvmex->spec));
+ if (nvmex->valid & CTS_NVME_VALID_LINK)
+ sbuf_printf(&sb, " x%d (max x%d) lanes PCIe Gen%d (max Gen%d) link",
+ nvmex->lanes, nvmex->max_lanes,
+ nvmex->speed, nvmex->max_speed);
+ sbuf_printf(&sb, "\n");
+ sbuf_finish(&sb);
+ sbuf_putbuf(&sb);
}
static void
Index: head/sys/dev/nvme/nvme_sim.c
===================================================================
--- head/sys/dev/nvme/nvme_sim.c
+++ head/sys/dev/nvme/nvme_sim.c
@@ -212,7 +212,7 @@
struct ccb_trans_settings_nvme *nvmep;
struct ccb_trans_settings_nvme *nvmex;
device_t dev;
- uint32_t status, caps;
+ uint32_t status, caps, flags;
dev = ctrlr->dev;
cts = &ccb->cts;
@@ -221,12 +221,16 @@
status = pcie_read_config(dev, PCIER_LINK_STA, 2);
caps = pcie_read_config(dev, PCIER_LINK_CAP, 2);
- nvmex->valid = CTS_NVME_VALID_SPEC | CTS_NVME_VALID_LINK;
+ flags = pcie_read_config(dev, PCIER_FLAGS, 2);
nvmex->spec = nvme_mmio_read_4(ctrlr, vs);
- nvmex->speed = status & PCIEM_LINK_STA_SPEED;
- nvmex->lanes = (status & PCIEM_LINK_STA_WIDTH) >> 4;
- nvmex->max_speed = caps & PCIEM_LINK_CAP_MAX_SPEED;
- nvmex->max_lanes = (caps & PCIEM_LINK_CAP_MAX_WIDTH) >> 4;
+ nvmex->valid = CTS_NVME_VALID_SPEC;
+ if ((flags & PCIEM_FLAGS_TYPE) == PCIEM_TYPE_ENDPOINT) {
+ nvmex->valid |= CTS_NVME_VALID_LINK;
+ nvmex->speed = status & PCIEM_LINK_STA_SPEED;
+ nvmex->lanes = (status & PCIEM_LINK_STA_WIDTH) >> 4;
+ nvmex->max_speed = caps & PCIEM_LINK_CAP_MAX_SPEED;
+ nvmex->max_lanes = (caps & PCIEM_LINK_CAP_MAX_WIDTH) >> 4;
+ }
/* XXX these should be something else maybe ? */
nvmep->valid = 1;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 30, 6:59 PM (16 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28103603
Default Alt Text
D20282.id58375.diff (2 KB)
Attached To
Mode
D20282: Fix nda(4) PCIe link status output
Attached
Detach File
Event Timeline
Log In to Comment