Re: [PATCH v2 1/2] Documentation: fpga: dfl: add PCI Identification documentation

From: matthew . gerlach
Date: Fri Mar 04 2022 - 13:28:47 EST




On Fri, 4 Mar 2022, Russ Weight wrote:



On 3/3/22 14:04, Tom Rix wrote:

On 3/2/22 4:35 PM, matthew.gerlach@xxxxxxxxxxxxxxx wrote:
From: Matthew Gerlach <matthew.gerlach@xxxxxxxxxxxxxxx>

Add documentation on identifying FPGA based PCI cards prompted
by discussion on the linux-fpga@xxxxxxxxxxxxxxx mailing list.

Signed-off-by: Matthew Gerlach <matthew.gerlach@xxxxxxxxxxxxxxx>
---
v2: Introduced in v2.
---
  Documentation/fpga/dfl.rst | 20 ++++++++++++++++++++
  1 file changed, 20 insertions(+)

diff --git a/Documentation/fpga/dfl.rst b/Documentation/fpga/dfl.rst
index ef9eec71f6f3..5fb2ca8e76d7 100644
--- a/Documentation/fpga/dfl.rst
+++ b/Documentation/fpga/dfl.rst
@@ -502,6 +502,26 @@ Developer only needs to provide a sub feature driver with matched feature id.
  FME Partial Reconfiguration Sub Feature driver (see drivers/fpga/dfl-fme-pr.c)
  could be a reference.
  +PCI Device Identification
+================================
+Since FPGA based PCI cards can be reconfigured to a perform a completely
+new function at runtime, properly identifying such cards and binding the
+correct driver can be challenging. In many use cases, deployed FPGA based
+PCI cards are essentially static and the PCI Product ID and Vendor ID pair
+is sufficient to identify the card.  The DFL framework helps with the
+dynamic case of deployed FPGA cards changing at run time by providing
+more detailed information about card discoverable at runtime.
+
+At one level, the DFL on a PCI card describes the function of the card.
+However, the same DFL could be instantiated on different physical cards.
+Conversely, different DFLs could be instantiated on the same physical card.
+Practical management of a cloud containing a heterogeneous set of such cards
+requires a PCI level of card identification. While the PCI Product ID and
+Vendor ID may be sufficient to bind the dfl-pci driver, it is expected
+that FPGA PCI cards would advertise suitable Subsystem ID and Subsystem
+Vendor ID values. PCI Vital Product Data (VPD) can also be used for
+more granular information about the board.

This describes a bit more of the problem, it should describe it wrt ofs dev id. The introduction of the ofs dev should be explicitly called out as a generic pci id.

The problem I'm describing exists for all FPGA based PCI cards; so I am purposely trying to be abstract as much as possible.


Why couldn't one of the old pci id's be reused ?

Yes, old pci id's could be reused, and people have done just that. We thought a new PCI ID would minimize confusion with cards that have already been deployed.


How will the subvendor/subid be enforced ?

Subvendor and Subid are managed just like any other PCI card with or without a FPGA.


Is the current security manager patchset smart enough to save the board from being bricked when a user doesn't look beyond the pci id ?

Yes - the security manager is invoked based of DFL feature ID and revision, and the functionality is differentiated based on the same information.


What happens if a board uses this device id but doesn't have a max10 to do the update ?

If a board doesn't have a max10, then there will be no DFH for a max10 in the board's DFLs. Presumeably, the board would need some update process, and an approprate DFH would be in that board's DFL.


Tom

+
  Location of DFLs on a PCI Device
  ================================
  The original method for finding a DFL on a PCI device assumed the start of the