Adding documentation for the Intel VMD driver and updating the index file to include it. Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@xxxxxxxxx> --- Documentation/PCI/controller/vmd.rst | 51 ++++++++++++++++++++++++++++ Documentation/PCI/index.rst | 1 + 2 files changed, 52 insertions(+) create mode 100644 Documentation/PCI/controller/vmd.rst diff --git a/Documentation/PCI/controller/vmd.rst b/Documentation/PCI/controller/vmd.rst new file mode 100644 index 000000000000..e1a019035245 --- /dev/null +++ b/Documentation/PCI/controller/vmd.rst @@ -0,0 +1,51 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +================================================================= +Linux Base Driver for the Intel(R) Volume Management Device (VMD) +================================================================= + +Intel vmd Linux driver. + +Contents +======== + +- Overview +- Features +- Limitations + +The Intel VMD provides the means to provide volume management across separate +PCI Express HBAs and SSDs without requiring operating system support or +communication between drivers. It does this by obscuring each storage +controller from the OS, but allowing a single driver to be loaded that would +control each storage controller. A Volume Management Device (VMD) provides a +single device for a single storage driver. The VMD resides in the IIO root +complex and it appears to the OS as a root bus integrated endpoint. In the IIO, +the VMD is in a central location to manipulate access to storage devices which +may be attached directly to the IIO or indirectly through the PCH. Instead of +allowing individual storage devices to be detected by the OS and allow it to +load a separate driver instance for each, the VMD provides configuration +settings to allow specific devices and root ports on the root bus to be +invisible to the OS. + +VMD works by creating separate PCI domains for each VMD device in the system. +This makes VMD look more like a host bridge than an endpoint so VMD must try +to adhere to the ACPI Operating System Capabilities (_OSC) flags of the system. +A couple of the _OSC flags regard hotplug support. Hotplug is a feature that +is always enabled when using VMD regardless of the _OSC flags. + +Features +======== + +- Virtualization +- MSIX interrupts +- Power Management +- Hotplug + +Limitations +=========== + +When VMD is enabled and used in a hypervisor the _OSC flags provided by the +hypervisor BIOS may not be correct. The most critical of these flags are the +hotplug bits. If these bits are incorrect then the storage devices behind the +VMD will not be able to be hotplugged. The driver always supports hotplug for +the devices behind it so the hotplug bits reported by the OS are not used. diff --git a/Documentation/PCI/index.rst b/Documentation/PCI/index.rst index e73f84aebde3..6558adc703f9 100644 --- a/Documentation/PCI/index.rst +++ b/Documentation/PCI/index.rst @@ -18,3 +18,4 @@ PCI Bus Subsystem pcieaer-howto endpoint/index boot-interrupts + controller/vmd -- 2.39.1