nvme: Only attach to storage NVMe devices

Only attach CAM to the nvme storage devices.

Sponsored by:		Netflix
This commit is contained in:
Warner Losh
2025-12-10 15:53:12 -07:00
parent 848602856f
commit 0a19464bf7
2 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -650,7 +650,7 @@ struct ccb_pathinq_settings_nvme {
uint8_t bus;
uint8_t slot;
uint8_t function;
uint8_t extra;
uint8_t progif;
char dev_name[NVME_DEV_NAME_LEN]; /* nvme controller dev name for this device */
};
_Static_assert(sizeof(struct ccb_pathinq_settings_nvme) == 64,
+8 -1
View File
@@ -208,7 +208,7 @@ nvme_sim_action(struct cam_sim *sim, union ccb *ccb)
cpi->xport_specific.nvme.bus = pci_get_bus(dev);
cpi->xport_specific.nvme.slot = pci_get_slot(dev);
cpi->xport_specific.nvme.function = pci_get_function(dev);
cpi->xport_specific.nvme.extra = 0;
cpi->xport_specific.nvme.progif = pci_get_progif(dev);
strlcpy(cpi->xport_specific.nvme.dev_name, device_get_nameunit(dev),
sizeof(cpi->xport_specific.nvme.dev_name));
cpi->hba_vendor = pci_get_vendor(dev);
@@ -314,6 +314,13 @@ nvme_sim_probe(device_t dev)
{
if (nvme_use_nvd)
return (ENXIO);
/*
* Only do storage devices with CAM. NVMHCI 1.0 interfaces are the only
* ones that have namespaces with LBA ranges on them.
*/
if (pci_get_progif(device_get_parent(dev)) !=
PCIP_STORAGE_NVM_ENTERPRISE_NVMHCI_1_0)
return (ENXIO);
device_set_desc(dev, "nvme cam");
return (BUS_PROBE_DEFAULT);