| .. SPDX-License-Identifier: GPL-2.0 |
| |
| =================== |
| ice devlink support |
| =================== |
| |
| This document describes the devlink features implemented by the ``ice`` |
| device driver. |
| |
| Info versions |
| ============= |
| |
| The ``ice`` driver reports the following versions |
| |
| .. list-table:: devlink info versions implemented |
| :widths: 5 5 5 90 |
| |
| * - Name |
| - Type |
| - Example |
| - Description |
| * - ``board.id`` |
| - fixed |
| - K65390-000 |
| - The Product Board Assembly (PBA) identifier of the board. |
| * - ``fw.mgmt`` |
| - running |
| - 2.1.7 |
| - 3-digit version number of the management firmware running on the |
| Embedded Management Processor of the device. It controls the PHY, |
| link, access to device resources, etc. Intel documentation refers to |
| this as the EMP firmware. |
| * - ``fw.mgmt.api`` |
| - running |
| - 1.5.1 |
| - 3-digit version number (major.minor.patch) of the API exported over |
| the AdminQ by the management firmware. Used by the driver to |
| identify what commands are supported. Historical versions of the |
| kernel only displayed a 2-digit version number (major.minor). |
| * - ``fw.mgmt.build`` |
| - running |
| - 0x305d955f |
| - Unique identifier of the source for the management firmware. |
| * - ``fw.undi`` |
| - running |
| - 1.2581.0 |
| - Version of the Option ROM containing the UEFI driver. The version is |
| reported in ``major.minor.patch`` format. The major version is |
| incremented whenever a major breaking change occurs, or when the |
| minor version would overflow. The minor version is incremented for |
| non-breaking changes and reset to 1 when the major version is |
| incremented. The patch version is normally 0 but is incremented when |
| a fix is delivered as a patch against an older base Option ROM. |
| * - ``fw.psid.api`` |
| - running |
| - 0.80 |
| - Version defining the format of the flash contents. |
| * - ``fw.bundle_id`` |
| - running |
| - 0x80002ec0 |
| - Unique identifier of the firmware image file that was loaded onto |
| the device. Also referred to as the EETRACK identifier of the NVM. |
| * - ``fw.app.name`` |
| - running |
| - ICE OS Default Package |
| - The name of the DDP package that is active in the device. The DDP |
| package is loaded by the driver during initialization. Each |
| variation of the DDP package has a unique name. |
| * - ``fw.app`` |
| - running |
| - 1.3.1.0 |
| - The version of the DDP package that is active in the device. Note |
| that both the name (as reported by ``fw.app.name``) and version are |
| required to uniquely identify the package. |
| * - ``fw.app.bundle_id`` |
| - running |
| - 0xc0000001 |
| - Unique identifier for the DDP package loaded in the device. Also |
| referred to as the DDP Track ID. Can be used to uniquely identify |
| the specific DDP package. |
| * - ``fw.netlist`` |
| - running |
| - 1.1.2000-6.7.0 |
| - The version of the netlist module. This module defines the device's |
| Ethernet capabilities and default settings, and is used by the |
| management firmware as part of managing link and device |
| connectivity. |
| * - ``fw.netlist.build`` |
| - running |
| - 0xee16ced7 |
| - The first 4 bytes of the hash of the netlist module contents. |
| |
| Flash Update |
| ============ |
| |
| The ``ice`` driver implements support for flash update using the |
| ``devlink-flash`` interface. It supports updating the device flash using a |
| combined flash image that contains the ``fw.mgmt``, ``fw.undi``, and |
| ``fw.netlist`` components. |
| |
| .. list-table:: List of supported overwrite modes |
| :widths: 5 95 |
| |
| * - Bits |
| - Behavior |
| * - ``DEVLINK_FLASH_OVERWRITE_SETTINGS`` |
| - Do not preserve settings stored in the flash components being |
| updated. This includes overwriting the port configuration that |
| determines the number of physical functions the device will |
| initialize with. |
| * - ``DEVLINK_FLASH_OVERWRITE_SETTINGS`` and ``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS`` |
| - Do not preserve either settings or identifiers. Overwrite everything |
| in the flash with the contents from the provided image, without |
| performing any preservation. This includes overwriting device |
| identifying fields such as the MAC address, VPD area, and device |
| serial number. It is expected that this combination be used with an |
| image customized for the specific device. |
| |
| The ice hardware does not support overwriting only identifiers while |
| preserving settings, and thus ``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS`` on its |
| own will be rejected. If no overwrite mask is provided, the firmware will be |
| instructed to preserve all settings and identifying fields when updating. |
| |
| Reload |
| ====== |
| |
| The ``ice`` driver supports activating new firmware after a flash update |
| using ``DEVLINK_CMD_RELOAD`` with the ``DEVLINK_RELOAD_ACTION_FW_ACTIVATE`` |
| action. |
| |
| .. code:: shell |
| |
| $ devlink dev reload pci/0000:01:00.0 reload action fw_activate |
| |
| The new firmware is activated by issuing a device specific Embedded |
| Management Processor reset which requests the device to reset and reload the |
| EMP firmware image. |
| |
| The driver does not currently support reloading the driver via |
| ``DEVLINK_RELOAD_ACTION_DRIVER_REINIT``. |
| |
| Port split |
| ========== |
| |
| The ``ice`` driver supports port splitting only for port 0, as the FW has |
| a predefined set of available port split options for the whole device. |
| |
| A system reboot is required for port split to be applied. |
| |
| The following command will select the port split option with 4 ports: |
| |
| .. code:: shell |
| |
| $ devlink port split pci/0000:16:00.0/0 count 4 |
| |
| The list of all available port options will be printed to dynamic debug after |
| each ``split`` and ``unsplit`` command. The first option is the default. |
| |
| .. code:: shell |
| |
| ice 0000:16:00.0: Available port split options and max port speeds (Gbps): |
| ice 0000:16:00.0: Status Split Quad 0 Quad 1 |
| ice 0000:16:00.0: count L0 L1 L2 L3 L4 L5 L6 L7 |
| ice 0000:16:00.0: Active 2 100 - - - 100 - - - |
| ice 0000:16:00.0: 2 50 - 50 - - - - - |
| ice 0000:16:00.0: Pending 4 25 25 25 25 - - - - |
| ice 0000:16:00.0: 4 25 25 - - 25 25 - - |
| ice 0000:16:00.0: 8 10 10 10 10 10 10 10 10 |
| ice 0000:16:00.0: 1 100 - - - - - - - |
| |
| There could be multiple FW port options with the same port split count. When |
| the same port split count request is issued again, the next FW port option with |
| the same port split count will be selected. |
| |
| ``devlink port unsplit`` will select the option with a split count of 1. If |
| there is no FW option available with split count 1, you will receive an error. |
| |
| Regions |
| ======= |
| |
| The ``ice`` driver implements the following regions for accessing internal |
| device data. |
| |
| .. list-table:: regions implemented |
| :widths: 15 85 |
| |
| * - Name |
| - Description |
| * - ``nvm-flash`` |
| - The contents of the entire flash chip, sometimes referred to as |
| the device's Non Volatile Memory. |
| * - ``device-caps`` |
| - The contents of the device firmware's capabilities buffer. Useful to |
| determine the current state and configuration of the device. |
| |
| Users can request an immediate capture of a snapshot via the |
| ``DEVLINK_CMD_REGION_NEW`` |
| |
| .. code:: shell |
| |
| $ devlink region show |
| pci/0000:01:00.0/nvm-flash: size 10485760 snapshot [] max 1 |
| pci/0000:01:00.0/device-caps: size 4096 snapshot [] max 10 |
| |
| $ devlink region new pci/0000:01:00.0/nvm-flash snapshot 1 |
| $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 |
| |
| $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 |
| 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 |
| 0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8 |
| 0000000000000020 0016 0bb8 0016 1720 0000 0000 c00f 3ffc |
| 0000000000000030 bada cce5 bada cce5 bada cce5 bada cce5 |
| |
| $ devlink region read pci/0000:01:00.0/nvm-flash snapshot 1 address 0 length 16 |
| 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 |
| |
| $ devlink region delete pci/0000:01:00.0/nvm-flash snapshot 1 |
| |
| $ devlink region new pci/0000:01:00.0/device-caps snapshot 1 |
| $ devlink region dump pci/0000:01:00.0/device-caps snapshot 1 |
| 0000000000000000 01 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 |
| 0000000000000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000020 02 00 02 01 32 03 00 00 0a 00 00 00 25 00 00 00 |
| 0000000000000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000040 04 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000060 05 00 01 00 03 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000080 06 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000000a0 08 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000000c0 12 00 01 00 01 00 00 00 01 00 01 00 00 00 00 00 |
| 00000000000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000000e0 13 00 01 00 00 01 00 00 00 00 00 00 00 00 00 00 |
| 00000000000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000100 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000120 15 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000140 16 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000160 17 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000180 18 00 01 00 01 00 00 00 01 00 00 00 08 00 00 00 |
| 0000000000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000001a0 22 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000001c0 40 00 01 00 00 08 00 00 08 00 00 00 00 00 00 00 |
| 00000000000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 00000000000001e0 41 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 |
| 00000000000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000200 42 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 |
| 0000000000000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| |
| $ devlink region delete pci/0000:01:00.0/device-caps snapshot 1 |