fwctl pds driver¶
- Author:
Shannon Nelson
Overview¶
The PDS Core device makes a fwctl service available through an auxiliary_device named pds_core.fwctl.N. The pds_fwctl driver binds to this device and registers itself with the fwctl subsystem. The resulting userspace interface is used by an application that is a part of the AMD Pensando software package for the Distributed Service Card (DSC).
The pds_fwctl driver has little knowledge of the firmware’s internals. It only knows how to send commands through pds_core’s message queue to the firmware for fwctl requests. The set of fwctl operations available depends on the firmware in the DSC, and the userspace application version must match the firmware so that they can talk to each other.
When a connection is created the pds_fwctl driver requests from the firmware a list of firmware object endpoints, and for each endpoint the driver requests a list of operations for that endpoint.
Each operation description includes a firmware defined command attribute that maps to the FWCTL scope levels. The driver translates those firmware values into the FWCTL scope values which can then be used for filtering the scoped user requests.
pds_fwctl User API¶
Each RPC request includes the target endpoint and the operation id, and in and out buffer lengths and pointers. The driver verifies the existence of the requested endpoint and operations, then checks the request scope against the required scope of the operation. The request is then put together with the request data and sent through pds_core’s message queue to the firmware, and the results are returned to the caller.
The RPC endpoints, operations, and buffer contents are defined by the particular firmware package in the device, which varies across the available product configurations. The details are available in the specific product SDK documentation.