€•µ3Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/gpu/amdgpu/flashing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒdGPU firmware flashing”h]”hŒdGPU firmware flashing”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒA/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing.rst”h Kubh¢)”}”(hhh]”(h§)”}”(hŒIFWI”h]”hŒIFWI”…””}”(hhºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh·hžhhŸh¶h KubhŒ paragraph”“”)”}”(hŒó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.”h]”(hŒŸ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, ”…””}”(hhÊhžhhŸNh NubhŒtitle_reference”“”)”}”(hŒ`amdgpu`”h]”hŒamdgpu”…””}”(hhÔhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhhÊubhŒL will export a series of sysfs files that can be used for the flash process.”…””}”(hhÊhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubhÉ)”}”(hŒThe IFWI flash process is:”h]”hŒThe IFWI flash process is:”…””}”(hhìhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K hh·hžhubhŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ=Ensure the IFWI image is intended for the dGPU on the system.”h]”hÉ)”}”(hjh]”hŒ=Ensure the IFWI image is intended for the dGPU on the system.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhühžhhŸh¶h Nubj)”}”(hŒ["Write" the IFWI image to the sysfs file `psp_vbflash`. This will stage the IFWI in memory.”h]”hÉ)”}”(hjh]”(hŒ-“Write†the IFWI image to the sysfs file ”…””}”(hjhžhhŸNh NubhÓ)”}”(hŒ `psp_vbflash`”h]”hŒ psp_vbflash”…””}”(hj#hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjubhŒ%. This will stage the IFWI in memory.”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhühžhhŸh¶h Nubj)”}”(hŒG"Read" from the `psp_vbflash` sysfs file to initiate the flash process.”h]”hÉ)”}”(hjCh]”(hŒ“Read†from the ”…””}”(hjEhžhhŸNh NubhÓ)”}”(hŒ `psp_vbflash`”h]”hŒ psp_vbflash”…””}”(hjLhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjEubhŒ* sysfs file to initiate the flash process.”…””}”(hjEhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhühžhhŸh¶h Nubj)”}”(hŒXPoll the `psp_vbflash_status` sysfs file to determine when the flash process completes. ”h]”hÉ)”}”(hŒWPoll the `psp_vbflash_status` sysfs file to determine when the flash process completes.”h]”(hŒ Poll the ”…””}”(hjnhžhhŸNh NubhÓ)”}”(hŒ`psp_vbflash_status`”h]”hŒpsp_vbflash_status”…””}”(hjvhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjnubhŒ: sysfs file to determine when the flash process completes.”…””}”(hjnhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhühžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1húhh·hžhhŸh¶h Kubeh}”(h]”Œifwi”ah ]”h"]”Œifwi”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒ USB-C PD F/W”h]”hŒ USB-C PD F/W”…””}”(hjªhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj§hžhhŸh¶h KubhÉ)”}”(hŒxOn GPUs that support flashing an updated USB-C PD firmware image, the process is done using the `usbc_pd_fw` sysfs file.”h]”(hŒ`On GPUs that support flashing an updated USB-C PD firmware image, the process is done using the ”…””}”(hj¸hžhhŸNh NubhÓ)”}”(hŒ `usbc_pd_fw`”h]”hŒ usbc_pd_fw”…””}”(hjÀhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj¸ubhŒ sysfs file.”…””}”(hj¸hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khj§hžhubhŒ bullet_list”“”)”}”(hhh]”(j)”}”(hŒ;Reading the file will provide the current firmware version.”h]”hÉ)”}”(hjßh]”hŒ;Reading the file will provide the current firmware version.”…””}”(hjáhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjÚhžhhŸh¶h Nubj)”}”(hŒ{Writing the name of a firmware payload stored in `/lib/firmware/amdgpu` to the sysfs file will initiate the flash process. ”h]”hÉ)”}”(hŒzWriting the name of a firmware payload stored in `/lib/firmware/amdgpu` to the sysfs file will initiate the flash process.”h]”(hŒ1Writing the name of a firmware payload stored in ”…””}”(hjøhžhhŸNh NubhÓ)”}”(hŒ`/lib/firmware/amdgpu`”h]”hŒ/lib/firmware/amdgpu”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhjøubhŒ3 to the sysfs file will initiate the flash process.”…””}”(hjøhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjÚhžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jØhŸh¶h Khj§hžhubhÉ)”}”(hŒ¢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`.”h]”(hŒThe firmware payload stored in ”…””}”(hj&hžhhŸNh NubhÓ)”}”(hŒ`/lib/firmware/amdgpu`”h]”hŒ/lib/firmware/amdgpu”…””}”(hj.hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj&ubhŒf can be named any name as long as it doesn’t conflict with other existing binaries that are used by ”…””}”(hj&hžhhŸNh NubhÓ)”}”(hŒ`amdgpu`”h]”hŒamdgpu”…””}”(hj@hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÒhj&ubhŒ.”…””}”(hj&hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khj§hžhubeh}”(h]”Œ usb-c-pd-f-w”ah ]”h"]”Œ usb-c pd f/w”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒ sysfs files”h]”hŒ sysfs files”…””}”(hjchžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj`hžhhŸh¶h K ubhŒtarget”“”)”}”(hŒ.. _usbc_pd_fw:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ usbc-pd-fw”uh1jqh Khj`hžhhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”ubhÉ)”}”(hŒ**usbc_pd_fw**”h]”hŒstrong”“”)”}”(hj‚h]”hŒ usbc_pd_fw”…””}”(hj†hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj€ubah}”(h]”j~ah ]”h"]”Œ usbc_pd_fw”ah$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h Khj`hžhŒexpect_referenced_by_name”}”j—jssŒexpect_referenced_by_id”}”j~jssubhÉ)”}”(hŒyReading from this file will retrieve the USB-C PD firmware version. Writing to this file will trigger the update process.”h]”hŒyReading from this file will retrieve the USB-C PD firmware version. Writing to this file will trigger the update process.”…””}”(hjŸhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h M®hj`hžhubjr)”}”(hŒ.. _psp_vbflash:”h]”h}”(h]”h ]”h"]”h$]”h&]”j}Œ psp-vbflash”uh1jqh Khj`hžhhŸjubhÉ)”}”(hŒ**psp_vbflash**”h]”j…)”}”(hj»h]”hŒ psp_vbflash”…””}”(hj½hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj¹ubah}”(h]”j¸ah ]”h"]”Œ psp_vbflash”ah$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h M³hj`hžhj›}”jÎj®sj}”j¸j®subhÉ)”}”(hŒkWriting to this file will stage an IFWI for update. Reading from this file will trigger the update process.”h]”hŒkWriting to this file will stage an IFWI for update. Reading from this file will trigger the update process.”…””}”(hjÔhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h Mhj`hžhubjr)”}”(hŒ.. _psp_vbflash_status:”h]”h}”(h]”h ]”h"]”h$]”h&]”j}Œpsp-vbflash-status”uh1jqh Khj`hžhhŸjubhÉ)”}”(hŒ**psp_vbflash_status**”h]”j…)”}”(hjðh]”hŒpsp_vbflash_status”…””}”(hjòhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjîubah}”(h]”jíah ]”h"]”Œpsp_vbflash_status”ah$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h Mhj`hžhj›}”jjãsj}”jíjãsubhÉ)”}”(hŒTThe status of the flash process. 0: IFWI flash not complete. 1: IFWI flash complete.”h]”hŒTThe status of the flash process. 0: IFWI flash not complete. 1: IFWI flash complete.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸŒk/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/flashing:33: ./drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c”h Mhj`hžhubeh}”(h]”Œ sysfs-files”ah ]”h"]”Œ sysfs files”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K ubeh}”(h]”Œdgpu-firmware-flashing”ah ]”h"]”Œdgpu firmware flashing”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jKŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(j~]”jsaj¸]”j®ají]”jãauŒnameids”}”(j%j"j¤j¡j]jZjjj—j~jÎj¸jjíuŒ nametypes”}”(j%‰j¤‰j]‰j‰j—ˆjΈjˆuh}”(j"h£j¡h·jZj§jj`j~j€j¸j¹jíjîuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)”}”(hhh]”hÉ)”}”(hhh]”hŒ0Hyperlink target "usbc-pd-fw" is not referenced.”…””}”hj·sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhj´ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”jŒline”Kuh1j²ubj³)”}”(hhh]”hÉ)”}”(hhh]”hŒ1Hyperlink target "psp-vbflash" is not referenced.”…””}”hjÒsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÌŒsource”jŒline”Kuh1j²ubj³)”}”(hhh]”hÉ)”}”(hhh]”hŒ8Hyperlink target "psp-vbflash-status" is not referenced.”…””}”hjìsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhjéubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÌŒsource”jŒline”Kuh1j²ubeŒ transformer”NŒ include_log”]”Œ decoration”Nhžhub.