forked from torvalds/linux
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PCI: Add Intel remapped NVMe device support
Consumer products that are configured by default to run the Intel SATA AHCI controller in "RAID" or "Intel RST Premium With Intel Optane System Acceleration" mode are becoming increasingly prevalent. Unde this mode, NVMe devices are remapped into the SATA device and become hidden from the PCI bus, which means that Linux users cannot access their storage devices unless they go into the firmware setup menu to revert back to AHCI mode - assuming such option is available. Lack of support for this mode is also causing complications for vendors who distribute Linux. Add support for the remapped NVMe mode by creating a virtual PCI bus, where the AHCI and NVMe devices are presented separately, allowing the ahci and nvme drivers to bind in the normal way. Unfortunately the NVMe device configuration space is inaccesible under this scheme, so we provide a fake one, and hope that no DeviceID-based quirks are needed. The interrupt is shared between the AHCI and NVMe devices. Allow pci_real_dma_dev() to traverse back to the real DMA device from the PCI devices created on our virtual bus, in case the iommu driver will be involved with data transfers here. The existing ahci driver is modified to not claim devices where remapped NVMe devices are present, allowing this new driver to step in. The details of the remapping scheme came from patches previously posted by Dan Williams and the resulting discussion. https://phabricator.endlessm.com/T24358 https://phabricator.endlessm.com/T29119 Signed-off-by: Daniel Drake <drake@endlessm.com>
- Loading branch information
Showing
5 changed files
with
488 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.