xref: /openbmc/linux/Documentation/driver-api/vfio-pci-device-specific-driver-acceptance.rst (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*f621eb13SAlex Williamson.. SPDX-License-Identifier: GPL-2.0
2*f621eb13SAlex Williamson
3*f621eb13SAlex WilliamsonAcceptance criteria for vfio-pci device specific driver variants
4*f621eb13SAlex Williamson================================================================
5*f621eb13SAlex Williamson
6*f621eb13SAlex WilliamsonOverview
7*f621eb13SAlex Williamson--------
8*f621eb13SAlex WilliamsonThe vfio-pci driver exists as a device agnostic driver using the
9*f621eb13SAlex Williamsonsystem IOMMU and relying on the robustness of platform fault
10*f621eb13SAlex Williamsonhandling to provide isolated device access to userspace.  While the
11*f621eb13SAlex Williamsonvfio-pci driver does include some device specific support, further
12*f621eb13SAlex Williamsonextensions for yet more advanced device specific features are not
13*f621eb13SAlex Williamsonsustainable.  The vfio-pci driver has therefore split out
14*f621eb13SAlex Williamsonvfio-pci-core as a library that may be reused to implement features
15*f621eb13SAlex Williamsonrequiring device specific knowledge, ex. saving and loading device
16*f621eb13SAlex Williamsonstate for the purposes of supporting migration.
17*f621eb13SAlex Williamson
18*f621eb13SAlex WilliamsonIn support of such features, it's expected that some device specific
19*f621eb13SAlex Williamsonvariants may interact with parent devices (ex. SR-IOV PF in support of
20*f621eb13SAlex Williamsona user assigned VF) or other extensions that may not be otherwise
21*f621eb13SAlex Williamsonaccessible via the vfio-pci base driver.  Authors of such drivers
22*f621eb13SAlex Williamsonshould be diligent not to create exploitable interfaces via these
23*f621eb13SAlex Williamsoninteractions or allow unchecked userspace data to have an effect
24*f621eb13SAlex Williamsonbeyond the scope of the assigned device.
25*f621eb13SAlex Williamson
26*f621eb13SAlex WilliamsonNew driver submissions are therefore requested to have approval via
27*f621eb13SAlex Williamsonsign-off/ack/review/etc for any interactions with parent drivers.
28*f621eb13SAlex WilliamsonAdditionally, drivers should make an attempt to provide sufficient
29*f621eb13SAlex Williamsondocumentation for reviewers to understand the device specific
30*f621eb13SAlex Williamsonextensions, for example in the case of migration data, how is the
31*f621eb13SAlex Williamsondevice state composed and consumed, which portions are not otherwise
32*f621eb13SAlex Williamsonavailable to the user via vfio-pci, what safeguards exist to validate
33*f621eb13SAlex Williamsonthe data, etc.  To that extent, authors should additionally expect to
34*f621eb13SAlex Williamsonrequire reviews from at least one of the listed reviewers, in addition
35*f621eb13SAlex Williamsonto the overall vfio maintainer.
36