On Mon, Jun 26, 2023 at 11:04 AM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > Needs a basic patch description. Even just "add documentation" With that fixed, the series is: Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> > --- > Documentation/gpu/amdgpu/flashing.rst | 33 +++++++++++++++++++++++++ > Documentation/gpu/amdgpu/index.rst | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 16 ++++++++++++ > 3 files changed, 50 insertions(+) > create mode 100644 Documentation/gpu/amdgpu/flashing.rst > > diff --git a/Documentation/gpu/amdgpu/flashing.rst b/Documentation/gpu/amdgpu/flashing.rst > new file mode 100644 > index 0000000000000..bd745c42a538f > --- /dev/null > +++ b/Documentation/gpu/amdgpu/flashing.rst > @@ -0,0 +1,33 @@ > +======================= > + dGPU firmware flashing > +======================= > + > +IFWI > +---- > +Flashing the dGPU integrated firmware image (IFWI) is supported by GPUs that > +use the PSP to orchestrate the update (Navi3x or newer GPUs). > +For supported GPUs, `amdgpu` will export a series of sysfs files that can be > +used for the flash process. > + > +The IFWI flash process is: > + > +1. Ensure the IFWI image is intended for the dGPU on the system. > +2. "Write" the IFWI image to the sysfs file `psp_vbflash`. This will stage the IFWI in memory. > +3. "Read" from the `psp_vbflash` sysfs file to initiate the flash process. > +4. Poll the `psp_vbflash_status` sysfs file to determine when the flash process completes. > + > +USB-C PD F/W > +------------ > +On GPUs that support flashing an updated USB-C PD firmware image, the process > +is done using the `usbc_pd_fw` sysfs file. > + > +* Reading the file will provide the current firmware version. > +* Writing the name of a firmware payload stored in `/lib/firmware/amdgpu` to the sysfs file will initiate the flash process. > + > +The firmware payload stored in `/lib/firmware/amdgpu` can be named any name > +as long as it doesn't conflict with other existing binaries that are used by > +`amdgpu`. > + > +sysfs files > +----------- > +.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > diff --git a/Documentation/gpu/amdgpu/index.rst b/Documentation/gpu/amdgpu/index.rst > index 03c2966cae798..912e699fd3731 100644 > --- a/Documentation/gpu/amdgpu/index.rst > +++ b/Documentation/gpu/amdgpu/index.rst > @@ -10,6 +10,7 @@ Next (GCN), Radeon DNA (RDNA), and Compute DNA (CDNA) architectures. > module-parameters > driver-core > display/index > + flashing > xgmi > ras > thermal > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > index 7872004ed7f9b..047760bafcc23 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > @@ -3476,6 +3476,11 @@ void psp_copy_fw(struct psp_context *psp, uint8_t *start_addr, uint32_t bin_size > drm_dev_exit(idx); > } > > +/** > + * DOC: usbc_pd_fw > + * Reading from this file will retrieve the USB-C PD firmware version. Writing to > + * this file will trigger the update process. > + */ > static DEVICE_ATTR(usbc_pd_fw, S_IRUGO | S_IWUSR, > psp_usbc_pd_fw_sysfs_read, > psp_usbc_pd_fw_sysfs_write); > @@ -3569,6 +3574,11 @@ static ssize_t amdgpu_psp_vbflash_read(struct file *filp, struct kobject *kobj, > return 0; > } > > +/** > + * DOC: psp_vbflash > + * Writing to this file will stage an IFWI for update. Reading from this file > + * will trigger the update process. > + */ > static struct bin_attribute psp_vbflash_bin_attr = { > .attr = {.name = "psp_vbflash", .mode = 0660}, > .size = 0, > @@ -3576,6 +3586,12 @@ static struct bin_attribute psp_vbflash_bin_attr = { > .read = amdgpu_psp_vbflash_read, > }; > > +/** > + * DOC: psp_vbflash_status > + * The status of the flash process. > + * 0: IFWI flash not complete. > + * 1: IFWI flash complete. > + */ > static ssize_t amdgpu_psp_vbflash_status(struct device *dev, > struct device_attribute *attr, > char *buf) > -- > 2.34.1 >