aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2021-12-06 17:23:14 +0000
committerAlexander Motin <mav@FreeBSD.org>2022-01-21 18:49:57 +0000
commit67873a4fcabfd9f9dbd95be978df535209d8cc84 (patch)
treedf9afe643634a668088b1071f290df327b067bfd
parentf7735c3952d9d54f745f1682ba1f13a70897a8f7 (diff)
downloadsrc-67873a4fcabfd9f9dbd95be978df535209d8cc84.tar.gz
src-67873a4fcabfd9f9dbd95be978df535209d8cc84.zip
nvd: For AHCI attached devices, report ahci bridge
When an NVME device is attached via a AHCI controller, we have no access to its config space. So instead of information about the nvme drive itself, return info about the AHCI controller as the next best thing. Since the Intel Hardware RAID support looks at these values, this likely is best. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D33286 (cherry picked from commit b8194f37666768dac35a0e1105c41242aad9b2d0)
-rw-r--r--sys/dev/nvd/nvd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/nvd/nvd.c b/sys/dev/nvd/nvd.c
index 061304471905..ea44458885d2 100644
--- a/sys/dev/nvd/nvd.c
+++ b/sys/dev/nvd/nvd.c
@@ -484,6 +484,13 @@ nvd_new_disk(struct nvme_namespace *ns, void *ctrlr_arg)
NVME_MODEL_NUMBER_LENGTH);
strlcpy(disk->d_descr, descr, sizeof(descr));
+ /*
+ * For devices that are reported as children of the AHCI controller,
+ * which has no access to the config space for this controller, report
+ * the AHCI controller's data.
+ */
+ if (ctrlr->ctrlr->quirks & QUIRK_AHCI)
+ dev = device_get_parent(dev);
disk->d_hba_vendor = pci_get_vendor(dev);
disk->d_hba_device = pci_get_device(dev);
disk->d_hba_subvendor = pci_get_subvendor(dev);