Linux Driver for the AMD/Pensando(R) DSC adapter family

Copyright(c) 2023 Advanced Micro Devices, Inc

Identifying the Adapter

To find if one or more AMD/Pensando PCI Core devices are installed on the host, check for the PCI devices:

# lspci -d 1dd8:100c
b5:00.0 Processing accelerators: Pensando Systems Device 100c
b6:00.0 Processing accelerators: Pensando Systems Device 100c

If such devices are listed as above, then the pds_core.ko driver should find and configure them for use. There should be log entries in the kernel messages such as these:

$ dmesg | grep pds_core
pds_core 0000:b5:00.0: 252.048 Gb/s available PCIe bandwidth (16.0 GT/s PCIe x16 link)
pds_core 0000:b5:00.0: FW: 1.60.0-73
pds_core 0000:b6:00.0: 252.048 Gb/s available PCIe bandwidth (16.0 GT/s PCIe x16 link)
pds_core 0000:b6:00.0: FW: 1.60.0-73

Driver and firmware version information can be gathered with devlink:

$ devlink dev info pci/0000:b5:00.0
pci/0000:b5:00.0:
  driver pds_core
  serial_number FLM18420073
  versions:
      fixed:
        asic.id 0x0
        asic.rev 0x0
      running:
        fw 1.51.0-73
      stored:
        fw.goldfw 1.15.9-C-22
        fw.mainfwa 1.60.0-73
        fw.mainfwb 1.60.0-57

Info versions

The pds_core driver reports the following versions

devlink info versions implemented

Name

Type

Description

fw

running

Version of firmware running on the device

fw.goldfw

stored

Version of firmware stored in the goldfw slot

fw.mainfwa

stored

Version of firmware stored in the mainfwa slot

fw.mainfwb

stored

Version of firmware stored in the mainfwb slot

asic.id

fixed

The ASIC type for this device

asic.rev

fixed

The revision of the ASIC for this device

Parameters

The pds_core driver implements the following generic parameters for controlling the functionality to be made available as auxiliary_bus devices.

Generic parameters implemented

Name

Mode

Type

Description

enable_vnet

runtime

Boolean

Enables vDPA functionality through an auxiliary_bus device

Firmware Management

The flash command can update a the DSC firmware. The downloaded firmware will be saved into either of firmware bank 1 or bank 2, whichever is not currently in use, and that bank will used for the next boot:

# devlink dev flash pci/0000:b5:00.0 \
          file pensando/dsc_fw_1.63.0-22.tar

Firmware Management (PLDM)

Firmware that supports PLDM can be updated using the devlink flash command with a PLDM firmware package. The entire package can be updated at once:

# devlink dev flash pci/0000:b5:00.0 file firmware.pldmfw

Individual components can also be updated by specifying the component name:

# devlink dev flash pci/0000:b5:00.0 \
          file firmware.pldmfw component fw.cpld

Per-component update uses driver-defined component names (fw, fw.cpld, etc.). Not all components support per-component update - devlink will reject the request if the specified component cannot be updated.

Gold (recovery) components can be updated by specifying the base component name (e.g., fw for fw.gold) with a goldfw package file when the device supports per-component update. The .gold suffix in devlink info output indicates the gold slot version, not a flash target.

Info versions (PLDM)

Firmware that supports PLDM reports component versions using driver-defined names. The driver reports the following component versions:

devlink info versions for PLDM-capable firmware

Name

Type

Description

fw

running, stored

Main firmware

fw.gold

stored

Gold (recovery) firmware

fw.bootloader

running, stored

Boot loader

fw.cpld

running, stored

CPLD

fw.secure

running, stored

Secure boot firmware

fw.fpga

running, stored

FPGA configuration

fw.suc

running, stored

System Unit Controller firmware

fw.suc.bootloader

running, stored

System Unit Controller bootloader

fw.uboot

running, stored

U-Boot bootloader

asic.id

fixed

The ASIC type for this device

asic.rev

fixed

The revision of the ASIC for this device

Example output:

$ devlink dev info pci/0000:00:05.0
pci/0000:00:05.0:
  driver pds_core
  serial_number FLM18420073
  versions:
      fixed:
        asic.id 0x0
        asic.rev 0x0
      running:
        fw.bootloader 1.2.3
        fw 1.3.0
        fw.cpld 3.18
      stored:
        fw.bootloader 1.2.3
        fw.gold 1.2.0
        fw 1.3.0
        fw.cpld 3.18

Health Reporters

The driver supports a devlink health reporter for FW status:

# devlink health show pci/0000:2b:00.0 reporter fw
pci/0000:2b:00.0:
  reporter fw
    state healthy error 0 recover 0
# devlink health diagnose pci/0000:2b:00.0 reporter fw
 Status: healthy State: 1 Generation: 0 Recoveries: 0

Enabling the driver

The driver is enabled via the standard kernel configuration system, using the make command:

make oldconfig/menuconfig/etc.

The driver is located in the menu structure at:

-> Device Drivers
-> Network device support (NETDEVICES [=y])
-> Ethernet driver support
-> AMD devices

-> AMD/Pensando Ethernet PDS_CORE Support

Support

For general Linux networking support, please use the netdev mailing list, which is monitored by AMD/Pensando personnel:

netdev@vger.kernel.org