Skip to content

Commit b4259f6

Browse files
committed
Documentation: fpga: dfl: add AFU feature list details
Describe parent/child AFU port relationship. Signed-off-by: Michael Adler <michael.adler@intel.com>
1 parent 0f599ce commit b4259f6

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

Documentation/fpga/dfl.rst

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,40 @@ used for accelerator-specific control registers.
280280
User-space applications can acquire exclusive access to an AFU attached to a
281281
port by using open() on the port device node and release it using close().
282282

283+
AFU MMIO space must begin with a feature list, either version 0 or 1. The GUID
284+
at the head of an AFU feature list defines the GUID with which the AFU is
285+
discovered. Within the first DFH:
286+
287+
- The feature type is 1 (AFU)
288+
- Revision may be an AFU-private version number
289+
- ID is normally 0
290+
291+
AFUs that require connections through multiple PCIe functions define a
292+
parent/child relationship. A parent AFU must use a version 1 feature at
293+
the head of its feature list. Children are enumerated by their GUIDs as
294+
parameters in the parent's version 1 header:
295+
296+
- The parameter ID is 2, version 0 (see
297+
https://github.com/OFS/dfl-feature-id/blob/main/dfl-param-ids.rst)
298+
- The parameter's payload is a list of child GUID_L and GUID_H pairs
299+
- The parameter's next field (payload size in 8 byte words) indicates
300+
the number of children: two 8 byte words for each child
301+
302+
Child AFUs may have either version 0 or version 1 headers:
303+
304+
- The feature type is 1 (AFU)
305+
- ID is normally 1
306+
- The GUID must match a GUID from the parent's child list parameter
307+
308+
Unlike normal AFUs, which may be replicated in hardware and expose the
309+
same GUID multiple times, child GUIDs must typically be unique. A given
310+
parent AFU normally depends on a specific instance of an associated child.
311+
While an AFU's children are often located on the same FPGA, it is not
312+
a requirement. With multiple FPGAs in a system, children will be
313+
discovered with normal AFU GUID searches and may be found anywhere.
314+
Attempting to open a parent AFU will fail if the children can not be
315+
found.
316+
283317
The following functions are exposed through ioctls:
284318

285319
- Get driver API version (DFL_FPGA_GET_API_VERSION)
@@ -641,7 +675,7 @@ could be a reference.
641675

642676
Please refer to below link to existing feature id table and guide for new feature
643677
ids application.
644-
https://github.com/OPAE/dfl-feature-id
678+
https://github.com/OFS/dfl-feature-id
645679

646680

647681
Location of DFLs on a PCI Device

0 commit comments

Comments
 (0)