Page MenuHomeFreeBSD

D52363.id.diff
No OneTemporary

D52363.id.diff

diff --git a/sys/cam/nvme/nvme_da.c b/sys/cam/nvme/nvme_da.c
--- a/sys/cam/nvme/nvme_da.c
+++ b/sys/cam/nvme/nvme_da.c
@@ -48,6 +48,7 @@
#include <sys/sbuf.h>
#include <geom/geom.h>
#include <geom/geom_disk.h>
+#include <dev/pci/pcireg.h>
#endif /* _KERNEL */
#ifndef _KERNEL
@@ -653,6 +654,7 @@
switch (code) {
case AC_FOUND_DEVICE:
{
+ struct ccb_pathinq cpi;
struct ccb_getdev *cgd;
cam_status status;
@@ -663,6 +665,18 @@
if (cgd->protocol != PROTO_NVME)
break;
+ /*
+ * For PCIe cards, filter all the cards whose programming
+ * interface doesn't conform to the NVMe storage spec. This
+ * allows the nvme controller to attach to more than just
+ * storage cards that use the nvme model.
+ */
+ xpt_path_inq(&cpi, cgd->ccb_h.path);
+ if (cpi.transport == XPORT_NVME &&
+ cpi.xport_specific.nvme.progif !=
+ PCIP_STORAGE_NVM_ENTERPRISE_NVMHCI_1_0)
+ break;
+
/*
* Allocate a peripheral instance for
* this device and start the probe

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 28, 12:37 AM (18 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28061604
Default Alt Text
D52363.id.diff (1005 B)

Event Timeline