opnsense-src/sys/dev/nvme
Warner Losh 93289cfcd2 Create a AHCI attachment for nvme.
Intel has created RST and many laptops from vendors like Lenovo and Asus. It's a
mechanism for creating multiple boot devices under windows. It effectively hides
the nvme drive inside of the ahci controller. The details are supposed to be a
trade secret. However, there's a reverse engineered Linux driver, and this
implements similar operations to allow nvme drives to attach. The ahci driver
attaches nvme children that proxy the remapped resources to the child. nvme_ahci
is just like nvme_pci, except it doesn't do the PCI specific things. That's
moved into ahci where appropriate.

When the nvme drive is remapped, MSI-x interrupts aren't forwarded (the linux
driver doesn't know how to use this either). INTx interrupts are used
instead. This is suboptimal, but usually sufficient for the laptops these parts
are in.

This is based loosely on https://www.spinics.net/lists/linux-ide/msg53364.html
submitted, but not accepted by, Linux. It was written by Dan Williams. These
changes were written from scratch by Olivier Houchard.

Submitted by: cognet@ (Olivier Houchard)
2019-08-21 22:18:01 +00:00
..
nvme.c Separate the pci attachment from the rest of nvme 2019-08-21 22:17:55 +00:00
nvme.h Add nvmecontrol resv to handle NVMe reservations. 2019-08-05 17:36:00 +00:00
nvme_ahci.c Create a AHCI attachment for nvme. 2019-08-21 22:18:01 +00:00
nvme_ctrlr.c Separate the pci attachment from the rest of nvme 2019-08-21 22:17:55 +00:00
nvme_ctrlr_cmd.c Make NVMe compatible with the original API 2018-08-22 04:29:24 +00:00
nvme_ns.c Report NOIOB and NPWG fields as stripe size. 2019-08-14 16:12:03 +00:00
nvme_ns_cmd.c Make NVMe compatible with the original API 2018-08-22 04:29:24 +00:00
nvme_pci.c Separate the pci attachment from the rest of nvme 2019-08-21 22:17:55 +00:00
nvme_private.h Separate the pci attachment from the rest of nvme 2019-08-21 22:17:55 +00:00
nvme_qpair.c Improve NVMe hot unplug handling. 2019-08-21 20:17:30 +00:00
nvme_sim.c Fix nda(4) PCIe link status output 2019-06-07 18:34:48 +00:00
nvme_sysctl.c Keep track of the number of commands that exhaust their retry limit. 2019-07-19 18:39:24 +00:00
nvme_test.c Remove #ifdef code to support FreeBSD versions that haven't been 2019-02-27 22:05:01 +00:00
nvme_util.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00