€•¬4Œ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ŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/pt_BR/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:”…””}”(hjh²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&]”uh1jhjh²hh³hÊh´Nubj)”}”(hŒ["Write" the IFWI image to the sysfs file `psp_vbflash`. This will stage the IFWI in memory.”h]”hÝ)”}”(hj.h]”(hŒ-“Write†the IFWI image to the sysfs file ”…””}”(hj0h²hh³Nh´Nubhç)”}”(hŒ `psp_vbflash`”h]”hŒ psp_vbflash”…””}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj0ubhŒ%. This will stage the IFWI in memory.”…””}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)”}”(hŒG"Read" from the `psp_vbflash` sysfs file to initiate the flash process.”h]”hÝ)”}”(hjWh]”(hŒ“Read†from the ”…””}”(hjYh²hh³Nh´Nubhç)”}”(hŒ `psp_vbflash`”h]”hŒ psp_vbflash”…””}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhjYubhŒ* sysfs file to initiate the flash process.”…””}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²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 ”…””}”(hj‚h²hh³Nh´Nubhç)”}”(hŒ`psp_vbflash_status`”h]”hŒpsp_vbflash_status”…””}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hæhj‚ubhŒ: sysfs file to determine when the flash process completes.”…””}”(hj‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jhhË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&]”uh1jhjî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´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjî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”…””}”(hjBh²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”…””}”(hjTh²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”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjth²hh³hÊh´K ubhŒtarget”“”)”}”(hŒ.. _usbc_pd_fw:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ usbc-pd-fw”uh1j…h´Khjth²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´Khjth²hŒexpect_referenced_by_name”}”j«j‡sŒexpect_referenced_by_id”}”j’j‡subhÝ)”}”(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´Mfhjth²hubj†)”}”(hŒ.. _psp_vbflash:”h]”h}”(h]”h ]”h"]”h$]”h&]”j‘Œ psp-vbflash”uh1j…h´K hjth²hh³j“ubhÝ)”}”(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´Mlhjth²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´MÈhjth²hubj†)”}”(hŒ.. _psp_vbflash_status:”h]”h}”(h]”h ]”h"]”h$]”h&]”j‘Œpsp-vbflash-status”uh1j…h´Khjth²hh³j“ubhÝ)”}”(hŒ**psp_vbflash_status**”h]”j™)”}”(hjh]”hŒpsp_vbflash_status”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjubah}”(h]”jah ]”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´MÎhjth²hj¯}”jj÷sj±}”jj÷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.”…””}”(hjh²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Ôhjth²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”j_Œ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’]”j‡ajÌ]”jÂaj]”j÷auŒnameids”}”(j9j6j¸jµjqjnj1j.j«j’jâjÌjjuŒ nametypes”}”(j9‰j¸‰jq‰j1‰j«ˆjâˆjˆuh}”(j6h·jµhËjnj»j.jtj’j”jÌjÍjjuŒ 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”K uh1jÆubjÇ)”}”(hhh]”hÝ)”}”(hhh]”hŒ8Hyperlink target "psp-vbflash-status" is not referenced.”…””}”hjsbah}”(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.