€•Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œ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/xe/xe_pcode”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ*SPDX-License-Identifier: (GPL-2.0+ OR MIT)”h]”hŒ*SPDX-License-Identifier: (GPL-2.0+ OR MIT)”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ=/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒPcode”h]”hŒPcode”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hX+Xe PCODE is the component responsible for interfacing with the PCODE firmware. It shall provide a very simple ABI to other Xe components, but be the single and consolidated place that will communicate with PCODE. All read and write operations to PCODE will be internal and private to this component.”h]”hX+Xe PCODE is the component responsible for interfacing with the PCODE firmware. It shall provide a very simple ABI to other Xe components, but be the single and consolidated place that will communicate with PCODE. All read and write operations to PCODE will be internal and private to this component.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:7: ./drivers/gpu/drm/xe/xe_pcode.c”h´KhhÊh²hubhÞ)�”}”(hŒ>What's next: - PCODE hw metrics - PCODE for display operations”h]”hŒ@What’s next: - PCODE hw metrics - PCODE for display operations”…”�”}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:7: ./drivers/gpu/drm/xe/xe_pcode.c”h´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Internal API”h]”hŒ Internal API”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhýh²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œxe_pcode_request (C function)”Œc.xe_pcode_request”hNt”auh1jhhýh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒrint xe_pcode_request (struct xe_tile *tile, u32 mbox, u32 request, u32 reply_mask, u32 reply, int timeout_base_ms)”h]”hŒdesc_signature_line”“”)�”}”(hŒqint xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request, u32 reply_mask, u32 reply, int timeout_base_ms)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j0hj,h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K³ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jBhj,h²hh³jAh´K³ubhŒ desc_name”“”)�”}”(hŒxe_pcode_request”h]”hŒ desc_sig_name”“”)�”}”(hŒxe_pcode_request”h]”hŒxe_pcode_request”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jYhjUubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jShj,h²hh³jAh´K³ubhŒdesc_parameterlist”“”)�”}”(hŒ](struct xe_tile *tile, u32 mbox, u32 request, u32 reply_mask, u32 reply, int timeout_base_ms)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct xe_tile *tile”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j~hjzubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjzubh)�”}”(hhh]”jZ)�”}”(hŒxe_tile”h]”hŒxe_tile”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j¢Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j¼Œ ASTIdentifier”“”)�”}”j·j]sbŒc.xe_pcode_request”†”asbuh1hhjzubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjzubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j×hjzubjZ)�”}”(hŒtile”h]”hŒtile”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubjy)�”}”(hŒu32 mbox”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÅŒc.xe_pcode_request”†”asbuh1hhjýubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjýubjZ)�”}”(hŒmbox”h]”hŒmbox”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubjy)�”}”(hŒ u32 request”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jNŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÅŒc.xe_pcode_request”†”asbuh1hhjEubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjEubjZ)�”}”(hŒrequest”h]”hŒrequest”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubjy)�”}”(hŒu32 reply_mask”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”j–Œmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÅŒc.xe_pcode_request”†”asbuh1hhj�ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj�ubjZ)�”}”(hŒ reply_mask”h]”hŒ reply_mask”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubjy)�”}”(hŒ u32 reply”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jÞŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÅŒc.xe_pcode_request”†”asbuh1hhjÕubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjÕubjZ)�”}”(hŒreply”h]”hŒreply”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubjy)�”}”(hŒint timeout_base_ms”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hjubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjubjZ)�”}”(hŒtimeout_base_ms”h]”hŒtimeout_base_ms”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjtubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhj,h²hh³jAh´K³ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j*Œsphinx_line_type”Œ declarator”hj&h²hh³jAh´K³ubah}”(h]”jah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j$h³jAh´K³hj!h²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ'send PCODE request until acknowledgment”h]”hŒ'send PCODE request until acknowledgment”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K³hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj!h²hh³jAh´K³ubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”Œdomain”jµŒobjtype”j‰Œdesctype”j‰Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhýh³Nh´NubhŒ container”“”)�”}”(hXg**Parameters** ``struct xe_tile *tile`` tile ``u32 mbox`` PCODE mailbox ID the request is targeted for ``u32 request`` request ID ``u32 reply_mask`` mask used to check for request acknowledgment ``u32 reply`` value used to check for request acknowledgment ``int timeout_base_ms`` timeout for polling with preemption enabled **Description** Keep resending the **request** to **mbox** until PCODE acknowledges it, PCODE reports an error or an overall timeout of **timeout_base_ms**+50 ms expires. The request is acknowledged once the PCODE reply dword equals **reply** after applying **reply_mask**. Polling is first attempted with preemption enabled for **timeout_base_ms** and if this times out for another 50 ms with preemption disabled. Returns 0 on success, ``-ETIMEDOUT`` in case of a timeout, <0 in case of some other error as reported by PCODE.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj›h]”hŒ Parameters”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K·hj•ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ``struct xe_tile *tile`` tile ”h]”(hŒterm”“”)�”}”(hŒ``struct xe_tile *tile``”h]”hŒliteral”“”)�”}”(hjÂh]”hŒstruct xe_tile *tile”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K´hjºubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒtile”h]”hŒtile”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÙh´K´hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jÙh´K´hjµubj¹)�”}”(hŒ:``u32 mbox`` PCODE mailbox ID the request is targeted for ”h]”(j¿)�”}”(hŒ ``u32 mbox``”h]”jÅ)�”}”(hjÿh]”hŒu32 mbox”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KµhjùubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ,PCODE mailbox ID the request is targeted for”h]”hŒ,PCODE mailbox ID the request is targeted for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Kµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jh´Kµhjµubj¹)�”}”(hŒ``u32 request`` request ID ”h]”(j¿)�”}”(hŒ``u32 request``”h]”jÅ)�”}”(hj8h]”hŒ u32 request”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K¶hj2ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ request ID”h]”hŒ request ID”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jMh´K¶hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jMh´K¶hjµubj¹)�”}”(hŒA``u32 reply_mask`` mask used to check for request acknowledgment ”h]”(j¿)�”}”(hŒ``u32 reply_mask``”h]”jÅ)�”}”(hjqh]”hŒu32 reply_mask”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K·hjkubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ-mask used to check for request acknowledgment”h]”hŒ-mask used to check for request acknowledgment”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j†h´K·hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j†h´K·hjµubj¹)�”}”(hŒ=``u32 reply`` value used to check for request acknowledgment ”h]”(j¿)�”}”(hŒ ``u32 reply``”h]”jÅ)�”}”(hjªh]”hŒ u32 reply”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K¸hj¤ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ.value used to check for request acknowledgment”h]”hŒ.value used to check for request acknowledgment”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¿h´K¸hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j¿h´K¸hjµubj¹)�”}”(hŒD``int timeout_base_ms`` timeout for polling with preemption enabled ”h]”(j¿)�”}”(hŒ``int timeout_base_ms``”h]”jÅ)�”}”(hjãh]”hŒint timeout_base_ms”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K¹hjÝubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ+timeout for polling with preemption enabled”h]”hŒ+timeout for polling with preemption enabled”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jøh´K¹hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jøh´K¹hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hj•ubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´K»hj•ubhÞ)�”}”(hXŽKeep resending the **request** to **mbox** until PCODE acknowledges it, PCODE reports an error or an overall timeout of **timeout_base_ms**+50 ms expires. The request is acknowledged once the PCODE reply dword equals **reply** after applying **reply_mask**. Polling is first attempted with preemption enabled for **timeout_base_ms** and if this times out for another 50 ms with preemption disabled.”h]”(hŒKeep resending the ”…”�”}”(hj4h²hh³Nh´Nubjž)�”}”(hŒ **request**”h]”hŒrequest”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ to ”…”�”}”(hj4h²hh³Nh´Nubjž)�”}”(hŒ**mbox**”h]”hŒmbox”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒN until PCODE acknowledges it, PCODE reports an error or an overall timeout of ”…”�”}”(hj4h²hh³Nh´Nubjž)�”}”(hŒj**timeout_base_ms**+50 ms expires. The request is acknowledged once the PCODE reply dword equals **reply**”h]”hŒftimeout_base_ms**+50 ms expires. The request is acknowledged once the PCODE reply dword equals **reply”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ after applying ”…”�”}”(hj4h²hh³Nh´Nubjž)�”}”(hŒ**reply_mask**”h]”hŒ reply_mask”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ9. Polling is first attempted with preemption enabled for ”…”�”}”(hj4h²hh³Nh´Nubjž)�”}”(hŒ**timeout_base_ms**”h]”hŒtimeout_base_ms”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒB and if this times out for another 50 ms with preemption disabled.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Kºhj•ubhÞ)�”}”(hŒoReturns 0 on success, ``-ETIMEDOUT`` in case of a timeout, <0 in case of some other error as reported by PCODE.”h]”(hŒReturns 0 on success, ”…”�”}”(hj�h²hh³Nh´NubjÅ)�”}”(hŒ``-ETIMEDOUT``”h]”hŒ -ETIMEDOUT”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj�ubhŒK in case of a timeout, <0 in case of some other error as reported by PCODE.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KÁhj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)xe_pcode_init_min_freq_table (C function)”Œc.xe_pcode_init_min_freq_table”hNt”auh1jhhýh²hh³Nh´Nubj )�”}”(hhh]”(j%)�”}”(hŒYint xe_pcode_init_min_freq_table (struct xe_tile *tile, u32 min_gt_freq, u32 max_gt_freq)”h]”j+)�”}”(hŒXint xe_pcode_init_min_freq_table(struct xe_tile *tile, u32 min_gt_freq, u32 max_gt_freq)”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hjÚh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KêubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjÚh²hh³jìh´KêubjT)�”}”(hŒxe_pcode_init_min_freq_table”h]”jZ)�”}”(hŒxe_pcode_init_min_freq_table”h]”hŒxe_pcode_init_min_freq_table”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjûubah}”(h]”h ]”(jmjneh"]”h$]”h&]”hÅhÆuh1jShjÚh²hh³jìh´Kêubjs)�”}”(hŒ8(struct xe_tile *tile, u32 min_gt_freq, u32 max_gt_freq)”h]”(jy)�”}”(hŒstruct xe_tile *tile”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjubh)�”}”(hhh]”jZ)�”}”(hŒxe_tile”h]”hŒxe_tile”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”j;Œmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÄ)�”}”j·jsbŒc.xe_pcode_init_min_freq_table”†”asbuh1hhjubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjubjZ)�”}”(hŒtile”h]”hŒtile”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjubjy)�”}”(hŒu32 min_gt_freq”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”j’Œmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jUŒc.xe_pcode_init_min_freq_table”†”asbuh1hhj‰ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj‰ubjZ)�”}”(hŒ min_gt_freq”h]”hŒ min_gt_freq”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjubjy)�”}”(hŒu32 max_gt_freq”h]”(h)�”}”(hhh]”jZ)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jÚŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jUŒc.xe_pcode_init_min_freq_table”†”asbuh1hhjÑubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjÑubjZ)�”}”(hŒ max_gt_freq”h]”hŒ max_gt_freq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhjÚh²hh³jìh´Kêubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j*j_j`hjÖh²hh³jìh´Kêubah}”(h]”jÑah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j$h³jìh´KêhjÓh²hubjm)�”}”(hhh]”hÞ)�”}”(hŒ&Initialize PCODE's QOS frequency table”h]”hŒ(Initialize PCODE’s QOS frequency table”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Kêhj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÓh²hh³jìh´Kêubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”j�jµjŽjFj�jFj�‰j‘‰j’‰uh1jh²hhhýh³Nh´Nubj”)�”}”(hX**Parameters** ``struct xe_tile *tile`` tile instance ``u32 min_gt_freq`` Minimal (RPn) GT frequency in units of 50MHz. ``u32 max_gt_freq`` Maximal (RP0) GT frequency in units of 50MHz. **Description** This function initialize PCODE's QOS frequency table for a proper minimal frequency/power steering decision, depending on the current requested GT frequency. For older platforms this was a more complete table including the IA freq. However for the latest platforms this table become a simple 1-1 Ring vs GT frequency. Even though, without setting it, PCODE might not take the right decisions for some memory frequencies and affect latency. It returns 0 on success, and -ERROR number on failure, -EINVAL if max frequency is higher then the minimal, and other errors directly translated from the PCODE Error returns: - -ENXIO: "Illegal Command" - -ETIMEDOUT: "Timed out" - -EINVAL: "Illegal Data" - -ENXIO, "Illegal Subcommand" - -EBUSY: "PCODE Locked" - -EOVERFLOW, "GT ratio out of range" - -EACCES, "PCODE Rejected" - -EPROTO, "Unknown"”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jž)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KîhjJubj´)�”}”(hhh]”(j¹)�”}”(hŒ'``struct xe_tile *tile`` tile instance ”h]”(j¿)�”}”(hŒ``struct xe_tile *tile``”h]”jÅ)�”}”(hjoh]”hŒstruct xe_tile *tile”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KëhjiubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ tile instance”h]”hŒ tile instance”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j„h´Këhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j„h´Këhjfubj¹)�”}”(hŒB``u32 min_gt_freq`` Minimal (RPn) GT frequency in units of 50MHz. ”h]”(j¿)�”}”(hŒ``u32 min_gt_freq``”h]”jÅ)�”}”(hj¨h]”hŒu32 min_gt_freq”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Kìhj¢ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ-Minimal (RPn) GT frequency in units of 50MHz.”h]”hŒ-Minimal (RPn) GT frequency in units of 50MHz.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j½h´Kìhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j½h´Kìhjfubj¹)�”}”(hŒB``u32 max_gt_freq`` Maximal (RP0) GT frequency in units of 50MHz. ”h]”(j¿)�”}”(hŒ``u32 max_gt_freq``”h]”jÅ)�”}”(hjáh]”hŒu32 max_gt_freq”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KíhjÛubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ-Maximal (RP0) GT frequency in units of 50MHz.”h]”hŒ-Maximal (RP0) GT frequency in units of 50MHz.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jöh´Kíhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jöh´Kíhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hjJubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KïhjJubhÞ)�”}”(hX·This function initialize PCODE's QOS frequency table for a proper minimal frequency/power steering decision, depending on the current requested GT frequency. For older platforms this was a more complete table including the IA freq. However for the latest platforms this table become a simple 1-1 Ring vs GT frequency. Even though, without setting it, PCODE might not take the right decisions for some memory frequencies and affect latency.”h]”hX¹This function initialize PCODE’s QOS frequency table for a proper minimal frequency/power steering decision, depending on the current requested GT frequency. For older platforms this was a more complete table including the IA freq. However for the latest platforms this table become a simple 1-1 Ring vs GT frequency. Even though, without setting it, PCODE might not take the right decisions for some memory frequencies and affect latency.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KîhjJubhÞ)�”}”(hX�It returns 0 on success, and -ERROR number on failure, -EINVAL if max frequency is higher then the minimal, and other errors directly translated from the PCODE Error returns: - -ENXIO: "Illegal Command" - -ETIMEDOUT: "Timed out" - -EINVAL: "Illegal Data" - -ENXIO, "Illegal Subcommand" - -EBUSY: "PCODE Locked" - -EOVERFLOW, "GT ratio out of range" - -EACCES, "PCODE Rejected" - -EPROTO, "Unknown"”h]”hX­It returns 0 on success, and -ERROR number on failure, -EINVAL if max frequency is higher then the minimal, and other errors directly translated from the PCODE Error returns: - -ENXIO: “Illegal Commandâ€� - -ETIMEDOUT: “Timed outâ€� - -EINVAL: “Illegal Dataâ€� - -ENXIO, “Illegal Subcommandâ€� - -EBUSY: “PCODE Lockedâ€� - -EOVERFLOW, “GT ratio out of rangeâ€� - -EACCES, “PCODE Rejectedâ€� - -EPROTO, “Unknownâ€�”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´KõhjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒxe_pcode_ready (C function)”Œc.xe_pcode_ready”hNt”auh1jhhýh²hh³Nh´Nubj )�”}”(hhh]”(j%)�”}”(hŒ6int xe_pcode_ready (struct xe_device *xe, bool locked)”h]”j+)�”}”(hŒ5int xe_pcode_ready(struct xe_device *xe, bool locked)”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hjlh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjlh²hh³j~h´MubjT)�”}”(hŒxe_pcode_ready”h]”jZ)�”}”(hŒxe_pcode_ready”h]”hŒxe_pcode_ready”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj�ubah}”(h]”h ]”(jmjneh"]”h$]”h&]”hÅhÆuh1jShjlh²hh³j~h´Mubjs)�”}”(hŒ#(struct xe_device *xe, bool locked)”h]”(jy)�”}”(hŒstruct xe_device *xe”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj©ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj©ubh)�”}”(hhh]”jZ)�”}”(hŒ xe_device”h]”hŒ xe_device”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jÍŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÄ)�”}”j·j“sbŒc.xe_pcode_ready”†”asbuh1hhj©ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj©ubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj©ubjZ)�”}”(hŒxe”h]”hŒxe”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhj¥ubjy)�”}”(hŒ bool locked”h]”(j1)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hj ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj ubjZ)�”}”(hŒlocked”h]”hŒlocked”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhjlh²hh³j~h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j*j_j`hjhh²hh³j~h´Mubah}”(h]”jcah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j$h³j~h´Mhjeh²hubjm)�”}”(hhh]”hÞ)�”}”(hŒEnsure PCODE is initialized”h]”hŒEnsure PCODE is initialized”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Mhjb h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjeh²hh³j~h´Mubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”j�jµjŽj} j�j} j�‰j‘‰j’‰uh1jh²hhhýh³Nh´Nubj”)�”}”(hXª**Parameters** ``struct xe_device *xe`` xe instance ``bool locked`` true if lock held, false otherwise **Description** PCODE init mailbox is polled only on root gt of root tile as the root tile provides the initialization is complete only after all the tiles have completed the initialization. Called only on early probe without locks and with locks in resume path. Returns 0 on success, and -error number on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jž)�”}”(hj‡ h]”hŒ Parameters”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M"hj� ubj´)�”}”(hhh]”(j¹)�”}”(hŒ%``struct xe_device *xe`` xe instance ”h]”(j¿)�”}”(hŒ``struct xe_device *xe``”h]”jÅ)�”}”(hj¦ h]”hŒstruct xe_device *xe”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Mhj  ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ xe instance”h]”hŒ xe instance”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j» h´Mhj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj  ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j» h´Mhj� ubj¹)�”}”(hŒ3``bool locked`` true if lock held, false otherwise ”h]”(j¿)�”}”(hŒ``bool locked``”h]”jÅ)�”}”(hjß h]”hŒ bool locked”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M hjÙ ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ"true if lock held, false otherwise”h]”hŒ"true if lock held, false otherwise”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jô h´M hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jô h´M hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hj� ubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M"hj� ubhÞ)�”}”(hŒöPCODE init mailbox is polled only on root gt of root tile as the root tile provides the initialization is complete only after all the tiles have completed the initialization. Called only on early probe without locks and with locks in resume path.”h]”hŒöPCODE init mailbox is polled only on root gt of root tile as the root tile provides the initialization is complete only after all the tiles have completed the initialization. Called only on early probe without locks and with locks in resume path.”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M!hj� ubhÞ)�”}”(hŒ3Returns 0 on success, and -error number on failure.”h]”hŒ3Returns 0 on success, and -error number on failure.”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M'hj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ xe_pcode_init_early (C function)”Œc.xe_pcode_init_early”hNt”auh1jhhýh²hh³Nh´Nubj )�”}”(hhh]”(j%)�”}”(hŒ.int xe_pcode_init_early (struct xe_tile *tile)”h]”j+)�”}”(hŒ-int xe_pcode_init_early(struct xe_tile *tile)”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hjj h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MJubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjj h²hh³j| h´MJubjT)�”}”(hŒxe_pcode_init_early”h]”jZ)�”}”(hŒxe_pcode_init_early”h]”hŒxe_pcode_init_early”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹ ubah}”(h]”h ]”(jmjneh"]”h$]”h&]”hÅhÆuh1jShjj h²hh³j| h´MJubjs)�”}”(hŒ(struct xe_tile *tile)”h]”jy)�”}”(hŒstruct xe_tile *tile”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hj§ ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj§ ubh)�”}”(hhh]”jZ)�”}”(hŒxe_tile”h]”hŒxe_tile”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jË Œmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÄ)�”}”j·j‘ sbŒc.xe_pcode_init_early”†”asbuh1hhj§ ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj§ ubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj§ ubjZ)�”}”(hŒtile”h]”hŒtile”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj§ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhj£ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhjj h²hh³j| h´MJubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j*j_j`hjf h²hh³j| h´MJubah}”(h]”ja ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j$h³j| h´MJhjc h²hubjm)�”}”(hhh]”hÞ)�”}”(hŒInitialize components of PCODE”h]”hŒInitialize components of PCODE”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MJhj+ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjc h²hh³j| h´MJubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”j�jµjŽjF j�jF j�‰j‘‰j’‰uh1jh²hhhýh³Nh´Nubj”)�”}”(hŒà**Parameters** ``struct xe_tile *tile`` tile instance **Description** This function initializes the xe_pcode component. To be called once only during probe. **Return** 0 on success or a negative error code on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jž)�”}”(hjP h]”hŒ Parameters”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MNhjJ ubj´)�”}”(hhh]”j¹)�”}”(hŒ'``struct xe_tile *tile`` tile instance ”h]”(j¿)�”}”(hŒ``struct xe_tile *tile``”h]”jÅ)�”}”(hjo h]”hŒstruct xe_tile *tile”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MKhji ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ tile instance”h]”hŒ tile instance”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j„ h´MKhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhji ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j„ h´MKhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hjJ ubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hjª h]”hŒ Description”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MMhjJ ubhÞ)�”}”(hŒVThis function initializes the xe_pcode component. To be called once only during probe.”h]”hŒVThis function initializes the xe_pcode component. To be called once only during probe.”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MLhjJ ubhÞ)�”}”(hŒ **Return**”h]”jž)�”}”(hjÑ h]”hŒReturn”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MOhjJ ubhÞ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MPhjJ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!xe_pcode_probe_early (C function)”Œc.xe_pcode_probe_early”hNt”auh1jhhýh²hh³Nh´Nubj )�”}”(hhh]”(j%)�”}”(hŒ/int xe_pcode_probe_early (struct xe_device *xe)”h]”j+)�”}”(hŒ.int xe_pcode_probe_early(struct xe_device *xe)”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hj h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MXubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj h²hh³j$ h´MXubjT)�”}”(hŒxe_pcode_probe_early”h]”jZ)�”}”(hŒxe_pcode_probe_early”h]”hŒxe_pcode_probe_early”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj3 ubah}”(h]”h ]”(jmjneh"]”h$]”h&]”hÅhÆuh1jShj h²hh³j$ h´MXubjs)�”}”(hŒ(struct xe_device *xe)”h]”jy)�”}”(hŒstruct xe_device *xe”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjO ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjO ubh)�”}”(hhh]”jZ)�”}”(hŒ xe_device”h]”hŒ xe_device”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjn ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”js Œmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÄ)�”}”j·j9 sbŒc.xe_pcode_probe_early”†”asbuh1hhjO ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjO ubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjO ubjZ)�”}”(hŒxe”h]”hŒxe”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjO ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjK ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhj h²hh³j$ h´MXubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j*j_j`hj h²hh³j$ h´MXubah}”(h]”j ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j$h³j$ h´MXhj h²hubjm)�”}”(hhh]”hÞ)�”}”(hŒinitializes PCODE”h]”hŒinitializes PCODE”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MXhjÓ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj h²hh³j$ h´MXubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”j�jµjŽjî j�jî j�‰j‘‰j’‰uh1jh²hhhýh³Nh´Nubj”)�”}”(hŒå**Parameters** ``struct xe_device *xe`` xe instance **Description** This function checks the initialization status of PCODE To be called once only during early probe without locks. Returns 0 on success, error code otherwise”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jž)�”}”(hjø h]”hŒ Parameters”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M\hjò ubj´)�”}”(hhh]”j¹)�”}”(hŒ%``struct xe_device *xe`` xe instance ”h]”(j¿)�”}”(hŒ``struct xe_device *xe``”h]”jÅ)�”}”(hj h]”hŒstruct xe_device *xe”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MYhj ubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ xe instance”h]”hŒ xe instance”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j, h´MYhj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j, h´MYhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hjò ubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hjR h]”hŒ Description”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M[hjò ubhÞ)�”}”(hŒpThis function checks the initialization status of PCODE To be called once only during early probe without locks.”h]”hŒpThis function checks the initialization status of PCODE To be called once only during early probe without locks.”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MZhjò ubhÞ)�”}”(hŒ*Returns 0 on success, error code otherwise”h]”hŒ*Returns 0 on success, error code otherwise”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´M]hjò ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!xe_get_pcode_version (C function)”Œc.xe_get_pcode_version”hNt”auh1jhhýh²hh³Nh´Nubj )�”}”(hhh]”(j%)�”}”(hŒQint xe_get_pcode_version (struct xe_device *xe, struct xe_pcode_version *version)”h]”j+)�”}”(hŒPint xe_get_pcode_version(struct xe_device *xe, struct xe_pcode_version *version)”h]”(j1)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”j=ah"]”h$]”h&]”uh1j0hj¢ h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MgubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhj¢ h²hh³j´ h´MgubjT)�”}”(hŒxe_get_pcode_version”h]”jZ)�”}”(hŒxe_get_pcode_version”h]”hŒxe_get_pcode_version”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjà ubah}”(h]”h ]”(jmjneh"]”h$]”h&]”hÅhÆuh1jShj¢ h²hh³j´ h´Mgubjs)�”}”(hŒ8(struct xe_device *xe, struct xe_pcode_version *version)”h]”(jy)�”}”(hŒstruct xe_device *xe”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjß ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjß ubh)�”}”(hhh]”jZ)�”}”(hŒ xe_device”h]”hŒ xe_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjþ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”jŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jÄ)�”}”j·jÉ sbŒc.xe_get_pcode_version”†”asbuh1hhjß ubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjß ubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjß ubjZ)�”}”(hŒxe”h]”hŒxe”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjß ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjÛ ubjy)�”}”(hŒ struct xe_pcode_version *version”h]”(j)�”}”(hj‚h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j‹ah"]”h$]”h&]”uh1j~hjQubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjQubh)�”}”(hhh]”jZ)�”}”(hŒxe_pcode_version”h]”hŒxe_pcode_version”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jµŒreftype”j·Œ reftarget”juŒmodname”NŒ classname”Nj»j¾)�”}”jÁ]”jŒc.xe_get_pcode_version”†”asbuh1hhjQubjC)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jOah"]”h$]”h&]”uh1jBhjQubjØ)�”}”(hjÛh]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjQubjZ)�”}”(hŒversion”h]”hŒversion”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jxhjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jrhj¢ h²hh³j´ h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j*j_j`hjž h²hh³j´ h´Mgubah}”(h]”j™ ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j$h³j´ h´Mghj› h²hubjm)�”}”(hhh]”hÞ)�”}”(hŒ$Read pcode version via PMT telemetry”h]”hŒ$Read pcode version via PMT telemetry”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MghjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj› h²hh³j´ h´Mgubeh}”(h]”h ]”(jµŒfunction”eh"]”h$]”h&]”j�jµjŽjîj�jîj�‰j‘‰j’‰uh1jh²hhhýh³Nh´Nubj”)�”}”(hX=**Parameters** ``struct xe_device *xe`` xe instance ``struct xe_pcode_version *version`` pointer to struct xe_pcode_version to store version info **Description** Reads the pcode version from PMT telemetry and fills the provided **version** structure. **Return** 0 on success, negative error code on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jž)�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Mkhjòubj´)�”}”(hhh]”(j¹)�”}”(hŒ%``struct xe_device *xe`` xe instance ”h]”(j¿)�”}”(hŒ``struct xe_device *xe``”h]”jÅ)�”}”(hjh]”hŒstruct xe_device *xe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MhhjubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ xe instance”h]”hŒ xe instance”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j,h´Mhhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³j,h´Mhhjubj¹)�”}”(hŒ^``struct xe_pcode_version *version`` pointer to struct xe_pcode_version to store version info ”h]”(j¿)�”}”(hŒ$``struct xe_pcode_version *version``”h]”jÅ)�”}”(hjPh]”hŒ struct xe_pcode_version *version”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MihjJubjÛ)�”}”(hhh]”hÞ)�”}”(hŒ8pointer to struct xe_pcode_version to store version info”h]”hŒ8pointer to struct xe_pcode_version to store version info”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jeh´Mihjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸h³jeh´Mihjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hjòubhÞ)�”}”(hŒ**Description**”h]”jž)�”}”(hj‹h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MkhjòubhÞ)�”}”(hŒXReads the pcode version from PMT telemetry and fills the provided **version** structure.”h]”(hŒBReads the pcode version from PMT telemetry and fills the provided ”…”�”}”(hj¡h²hh³Nh´Nubjž)�”}”(hŒ **version**”h]”hŒversion”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡ubhŒ structure.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MjhjòubhÞ)�”}”(hŒ **Return**”h]”jž)�”}”(hjÄh]”hŒReturn”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´MmhjòubhÞ)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:13: ./drivers/gpu/drm/xe/xe_pcode.c”h´Mnhjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j“hhýh²hh³Nh´NubhŒtarget”“”)�”}”(hŒ.. _xe-survivability-mode:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œxe-survivability-mode”uh1jðh´Khhýh²hh³hÇubeh}”(h]”Œ internal-api”ah ]”h"]”Œ internal api”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubeh}”(h]”Œpcode”ah ]”h"]”Œpcode”ah$]”h&]”uh1hÈhhh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSurvivability Mode”h]”hŒSurvivability Mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KubhÞ)�”}”(hŒ¹Survivability Mode is a software based workflow for recovering a system in a failed boot state Here system recoverability is concerned with recovering the firmware responsible for boot.”h]”hŒ¹Survivability Mode is a software based workflow for recovering a system in a failed boot state Here system recoverability is concerned with recovering the firmware responsible for boot.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´Khjh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒBoot Survivability”h]”hŒBoot Survivability”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj.h³Nh´NubhÞ)�”}”(hX;Boot Survivability is implemented by loading the driver with bare minimum (no drm card) to allow the firmware to be flashed through mei driver and collect telemetry. The driver's probe flow is modified such that it enters survivability mode when pcode initialization is incomplete and boot status denotes a failure.”h]”hX=Boot Survivability is implemented by loading the driver with bare minimum (no drm card) to allow the firmware to be flashed through mei driver and collect telemetry. The driver’s probe flow is modified such that it enters survivability mode when pcode initialization is incomplete and boot status denotes a failure.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´Khj.ubhÞ)�”}”(hXpSurvivability mode can also be entered manually using the survivability mode attribute available through configfs which is beneficial in several usecases. It can be used to address scenarios where pcode does not detect failure or for validation purposes. It can also be used in In-Field-Repair (IFR) to repair a single card without impacting the other cards in a node.”h]”hXpSurvivability mode can also be entered manually using the survivability mode attribute available through configfs which is beneficial in several usecases. It can be used to address scenarios where pcode does not detect failure or for validation purposes. It can also be used in In-Field-Repair (IFR) to repair a single card without impacting the other cards in a node.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K"hj.ubhÞ)�”}”(hŒ6Use below command enable survivability mode manually::”h]”hŒ5Use below command enable survivability mode manually:”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K'hj.ubhŒ literal_block”“”)�”}”(hŒ@# echo 1 > /sys/kernel/config/xe/0000:03:00.0/survivability_mode”h]”hŒ@# echo 1 > /sys/kernel/config/xe/0000:03:00.0/survivability_mode”…”�”}”hjnsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jlh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K)hj.ubhÞ)�”}”(hŒWIt is the responsibility of the user to clear the mode once firmware flash is complete.”h]”hŒWIt is the responsibility of the user to clear the mode once firmware flash is complete.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K+hj.ubhÞ)�”}”(hŒ@Refer :ref:`xe_configfs` for more details on how to use configfs”h]”(hŒRefer ”…”�”}”(hjŒh²hh³Nh´Nubh)�”}”(hŒ:ref:`xe_configfs`”h]”hŒinline”“”)�”}”(hj–h]”hŒ xe_configfs”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j˜hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œgpu/xe/xe_pcode”Œ refdomain”j¥Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œ xe_configfs”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K-hjŒubhŒ( for more details on how to use configfs”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¹h´K-hj.ubhÞ)�”}”(hŒšSurvivability mode is indicated by the below admin-only readable sysfs entry. It provides information about the type of survivability mode (Boot/Runtime).”h]”hŒšSurvivability mode is indicated by the below admin-only readable sysfs entry. It provides information about the type of survivability mode (Boot/Runtime).”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K/hj.ubjm)�”}”(hŒ=# cat /sys/bus/pci/devices//survivability_mode Boot”h]”hŒ=# cat /sys/bus/pci/devices//survivability_mode Boot”…”�”}”hjÓsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œshell”Œhighlight_args”}”uh1jlh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K2hj.ubhÞ)�”}”(hŒhAny additional debug information if present will be visible under the directory ``survivability_info``::”h]”(hŒPAny additional debug information if present will be visible under the directory ”…”�”}”(hjçh²hh³Nh´NubjÅ)�”}”(hŒ``survivability_info``”h]”hŒsurvivability_info”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjçubhŒ:”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K7hj.ubjm)�”}”(hŒý/sys/bus/pci/devices//survivability_info/ ├── aux_info0 ├── aux_info1 ├── aux_info2 ├── aux_info3 ├── aux_info4 ├── capability_info ├── fdo_mode ├── postcode_trace └── postcode_trace_overflow”h]”hŒý/sys/bus/pci/devices//survivability_info/ ├── aux_info0 ├── aux_info1 ├── aux_info2 ├── aux_info3 ├── aux_info4 ├── capability_info ├── fdo_mode ├── postcode_trace └── postcode_trace_overflow”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jlh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K:hj.ubhÞ)�”}”(hŒ+This directory has the following attributes”h]”hŒ+This directory has the following attributes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KEhj.ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒS``capability_info`` : Indicates Boot status and support for additional information ”h]”hÞ)�”}”(hŒR``capability_info`` : Indicates Boot status and support for additional information”h]”(jÅ)�”}”(hŒ``capability_info``”h]”hŒcapability_info”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj1ubhŒ? : Indicates Boot status and support for additional information”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KGhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(ubj,)�”}”(hŒú``postcode_trace``, ``postcode_trace_overflow`` : Each postcode is a 8bit value and represents a boot failure event. When a new failure event is logged by PCODE the existing postcodes are shifted left. These entries provide a history of 8 postcodes. ”h]”hÞ)�”}”(hŒù``postcode_trace``, ``postcode_trace_overflow`` : Each postcode is a 8bit value and represents a boot failure event. When a new failure event is logged by PCODE the existing postcodes are shifted left. These entries provide a history of 8 postcodes.”h]”(jÅ)�”}”(hŒ``postcode_trace``”h]”hŒpostcode_trace”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjXubhŒ, ”…”�”}”(hjXh²hh³Nh´NubjÅ)�”}”(hŒ``postcode_trace_overflow``”h]”hŒpostcode_trace_overflow”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhjXubhŒÊ : Each postcode is a 8bit value and represents a boot failure event. When a new failure event is logged by PCODE the existing postcodes are shifted left. These entries provide a history of 8 postcodes.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KIhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(ubj,)�”}”(hŒB``aux_info`` : Some failures have additional debug information ”h]”hÞ)�”}”(hŒA``aux_info`` : Some failures have additional debug information”h]”(jÅ)�”}”(hŒ``aux_info``”h]”hŒ aux_info”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj‘ubhŒ2 : Some failures have additional debug information”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KMhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(ubj,)�”}”(hXb``fdo_mode`` : To allow recovery in scenarios where MEI itself fails, a new SPI Flash Descriptor Override (FDO) mode is added in v2 survivability breadcrumbs. This mode is enabled by PCODE and provides the ability to directly update the firmware via SPI Driver without any dependency on MEI. Xe KMD initializes the nvm aux driver if FDO mode is enabled. ”h]”hÞ)�”}”(hXa``fdo_mode`` : To allow recovery in scenarios where MEI itself fails, a new SPI Flash Descriptor Override (FDO) mode is added in v2 survivability breadcrumbs. This mode is enabled by PCODE and provides the ability to directly update the firmware via SPI Driver without any dependency on MEI. Xe KMD initializes the nvm aux driver if FDO mode is enabled.”h]”(jÅ)�”}”(hŒ ``fdo_mode``”h]”hŒfdo_mode”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj¸ubhXU : To allow recovery in scenarios where MEI itself fails, a new SPI Flash Descriptor Override (FDO) mode is added in v2 survivability breadcrumbs. This mode is enabled by PCODE and provides the ability to directly update the firmware via SPI Driver without any dependency on MEI. Xe KMD initializes the nvm aux driver if FDO mode is enabled.”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KOhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j&h³jMh´KGhj.ubeh}”(h]”Œboot-survivability”ah ]”h"]”Œboot survivability”ah$]”h&]”uh1hÈhjh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRuntime Survivability”h]”hŒRuntime Survivability”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjëh³Nh´NubhÞ)�”}”(hX�Certain runtime firmware errors can cause the device to enter a wedged state (:ref:`xe-device-wedging`) requiring a firmware flash to restore normal operation. Runtime Survivability Mode indicates that a firmware flash is necessary to recover the device and is indicated by the presence of survivability mode sysfs. Survivability mode sysfs provides information about the type of survivability mode.”h]”(hŒNCertain runtime firmware errors can cause the device to enter a wedged state (”…”�”}”(hjüh²hh³Nh´Nubh)�”}”(hŒ:ref:`xe-device-wedging`”h]”j™)�”}”(hjh]”hŒxe-device-wedging”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j¤Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j˜hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j±Œ refdomain”jŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj·Œxe-device-wedging”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KWhjüubhX)) requiring a firmware flash to restore normal operation. Runtime Survivability Mode indicates that a firmware flash is necessary to recover the device and is indicated by the presence of survivability mode sysfs. Survivability mode sysfs provides information about the type of survivability mode.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j$h´KWhjëubjm)�”}”(hŒ@# cat /sys/bus/pci/devices//survivability_mode Runtime”h]”hŒ@# cat /sys/bus/pci/devices//survivability_mode Runtime”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjá‰jâŒshell”jä}”uh1jlh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´K]hjëubhÞ)�”}”(hŒÅOn some CSC firmware errors, PCODE sets FDO mode and the only recovery possible is through firmware flash using SPI driver. Userspace can check if FDO mode is set by checking the below sysfs entry.”h]”hŒÅOn some CSC firmware errors, PCODE sets FDO mode and the only recovery possible is through firmware flash using SPI driver. Userspace can check if FDO mode is set by checking the below sysfs entry.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´Kbhjëubjm)�”}”(hŒI# cat /sys/bus/pci/devices//survivability_info/fdo_mode enabled”h]”hŒI# cat /sys/bus/pci/devices//survivability_info/fdo_mode enabled”…”�”}”hjOsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjá‰jâŒshell”jä}”uh1jlh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´KfhjëubhÞ)�”}”(hŒßWhen such errors occur, userspace is notified with the drm device wedged uevent and runtime survivability mode. User can then initiate a firmware flash using userspace tools like fwupd to restore device to normal operation.”h]”hŒßWhen such errors occur, userspace is notified with the drm device wedged uevent and runtime survivability mode. User can then initiate a firmware flash using userspace tools like fwupd to restore device to normal operation.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œj/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_pcode:22: ./drivers/gpu/drm/xe/xe_survivability_mode.c”h´Kkhjëubeh}”(h]”Œruntime-survivability”ah ]”h"]”Œruntime survivability”ah$]”h&]”uh1hÈhjh²hh³Nh´Nubeh}”(h]”(Œsurvivability-mode”jýeh ]”h"]”(Œsurvivability mode”Œxe-survivability-mode”eh$]”h&]”uh1hÈhhh²hh³hÇh´KŒexpect_referenced_by_name”}”j}jòsŒexpect_referenced_by_id”}”jýjòsubeh}”(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òasŒnameids”}”(j jjjj}jýj|jyjèjåjtjquŒ nametypes”}”(j ‰j‰j}ˆj|‰jè‰jt‰uh}”(jhÊjhýjj&jÑjÖjcjhja jf j j j™ jž jýjjyjjåj.jqjë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Œ;Hyperlink target "xe-survivability-mode" is not referenced.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.