Plugin: AMDGPU
Introduction
This plugin reports the vbios version of APU devices supported by amdgpu and supports flashing the IFWI of some dGPU devices.
External Interface Access
This plugin requires R/W access to sysfs files located within /sys/bus/pci/drivers/*/amdgpu.
This plugin requires ioctl access to DRM_IOCTL_AMDGPU_INFO.
Firmware Format
This plugin supports the following protocol ID:
- com.amd.pspvbflash
GUID Generation
The plugin will use standard PCI GUIDs, but also generate an AMD GPU specific GUID
with the part number: AMD\$PART_NUMBER
Update behavior
The dGPU will boot into the new firmware when the system is rebooted. The dGPU contains two partitions, and the update will be applied to the inactive partition. If the active partition becomes corrupted for any reason the dGPU may revert back to an older firmware present on the inactive partition.
Version Considerations
This plugin has been available since fwupd version 1.8.11.
Update functionality has been available since fwupd version 1.9.6.
Threat Model
The plugin runs within the privileged fwupd process. The plugin doesn’t directly interface with the hardware, but rather interfaces with the kernel driver which interfaces with the hardware.
  flowchart LR
      subgraph dGPU
        PSP
        SPI[(SPI)]
      end
      subgraph fwupd Process
        fwupdengine(FuEngine)
        plugin(AmdGpu\nPlugin)
      end
      subgraph Linux Kernel
       kernel(amdgpu driver)
      end
      PSP <-.->SPI
      kernel<--"mailbox"-->PSP
      plugin--"psp_vbflash\nsysfs"-->kernel
      plugin<--"psp_vbflash_status\nsysfs"-->kernel
      plugin<--"DRM_IOCTL_AMDGPU_INFO()"-->kernel
      fwupdengine -.- plugin
      PSP ~~~ kernel
      kernel ~~~ fwupdengine
Owners
Anyone can submit a pull request to modify this plugin, but the following people should be consulted before making major or functional changes:
- Mario Limonciello: superm1