€•`¾Œ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_devcoredump”Œ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_devcoredump”Œ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_devcoredump”Œ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_devcoredump”Œ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_devcoredump”Œ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_devcoredump”Œ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_devcoredump”Œ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³ŒC/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒXe Device Coredump”h]”hŒXe Device Coredump”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXmXe uses dev_coredump infrastructure for exposing the crash errors in a standardized way. Once a crash occurs, devcoredump exposes a temporary node under ``/sys/class/devcoredump/devcd/``. The same node is also accessible in ``/sys/class/drm/card/device/devcoredump/``. The ``failing_device`` symlink points to the device that crashed and created the coredump.”h]”(hŒ™Xe uses dev_coredump infrastructure for exposing the crash errors in a standardized way. Once a crash occurs, devcoredump exposes a temporary node under ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ$``/sys/class/devcoredump/devcd/``”h]”hŒ /sys/class/devcoredump/devcd/”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒ&. The same node is also accessible in ”…”�”}”(hhßh²hh³Nh´Nubhè)�”}”(hŒ.``/sys/class/drm/card/device/devcoredump/``”h]”hŒ*/sys/class/drm/card/device/devcoredump/”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒ. The ”…”�”}”(hhßh²hh³Nh´Nubhè)�”}”(hŒ``failing_device``”h]”hŒfailing_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒD symlink points to the device that crashed and created the coredump.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´KhhÊh²hubhÞ)�”}”(hŒQThe following characteristics are observed by xe when creating a device coredump:”h]”hŒQThe following characteristics are observed by xe when creating a device coredump:”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K%hhÊh²hubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒü**Snapshot at hang**: The 'data' file contains a snapshot of the HW and driver states at the time the hang happened. Due to the driver recovering from resets/crashes, it may not correspond to the state of the system when the file is read by userspace. ”h]”(hŒterm”“”)�”}”(hŒ**Snapshot at hang**:”h]”(hŒstrong”“”)�”}”(hŒ**Snapshot at hang**”h]”hŒSnapshot at hang”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjBubhŒ:”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K,hj<ubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒåThe 'data' file contains a snapshot of the HW and driver states at the time the hang happened. Due to the driver recovering from resets/crashes, it may not correspond to the state of the system when the file is read by userspace.”h]”hŒéThe ‘data’ file contains a snapshot of the HW and driver states at the time the hang happened. Due to the driver recovering from resets/crashes, it may not correspond to the state of the system when the file is read by userspace.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K)hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j`h´K,hj7ubj;)�”}”(hXO**Coredump release**: After a coredump is generated, it stays in kernel memory until released by userspace by writing anything to it, or after an internal timer expires. The exact timeout may vary and should not be relied upon. Example to release a coredump: .. code-block:: shell $ > /sys/class/drm/card0/device/devcoredump/data ”h]”(jA)�”}”(hŒ**Coredump release**:”h]”(jG)�”}”(hŒ**Coredump release**”h]”hŒCoredump release”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj…ubhŒ:”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K6hj�ubjb)�”}”(hhh]”(hÞ)�”}”(hŒìAfter a coredump is generated, it stays in kernel memory until released by userspace by writing anything to it, or after an internal timer expires. The exact timeout may vary and should not be relied upon. Example to release a coredump:”h]”hŒìAfter a coredump is generated, it stays in kernel memory until released by userspace by writing anything to it, or after an internal timer expires. The exact timeout may vary and should not be relied upon. Example to release a coredump:”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K/hj¢ubhŒ literal_block”“”)�”}”(hŒ0$ > /sys/class/drm/card0/device/devcoredump/data”h]”hŒ0$ > /sys/class/drm/card0/device/devcoredump/data”…”�”}”hj¶sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œshell”Œhighlight_args”}”uh1j´h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K4hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jahj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j¡h´K6hj7ubj;)�”}”(hXÄ**First failure only**: In general, the first hang is the most critical one since the following hangs can be a consequence of the initial hang. For this reason a snapshot is taken only for the first failure. Until the devcoredump is released by userspace or kernel, all subsequent hangs do not override the snapshot nor create new ones. Devcoredump has a delayed work queue that will eventually delete the file node and free all the dump information. ”h]”(jA)�”}”(hŒ**First failure only**:”h]”(jG)�”}”(hŒ**First failure only**”h]”hŒFirst failure only”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÚubhŒ:”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K?hjÖubjb)�”}”(hhh]”hÞ)�”}”(hXªIn general, the first hang is the most critical one since the following hangs can be a consequence of the initial hang. For this reason a snapshot is taken only for the first failure. Until the devcoredump is released by userspace or kernel, all subsequent hangs do not override the snapshot nor create new ones. Devcoredump has a delayed work queue that will eventually delete the file node and free all the dump information.”h]”hXªIn general, the first hang is the most critical one since the following hangs can be a consequence of the initial hang. For this reason a snapshot is taken only for the first failure. Until the devcoredump is released by userspace or kernel, all subsequent hangs do not override the snapshot nor create new ones. Devcoredump has a delayed work queue that will eventually delete the file node and free all the dump information.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:7: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K9hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jöh´K?hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5hhÊh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Internal API”h]”hŒ Internal API”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ xe_devcoredump_read (C function)”Œc.xe_devcoredump_read”hNt”auh1j,hjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒcssize_t xe_devcoredump_read (char *buffer, loff_t offset, size_t count, void *data, size_t datalen)”h]”hŒdesc_signature_line”“”)�”}”(hŒbssize_t xe_devcoredump_read(char *buffer, loff_t offset, size_t count, void *data, size_t datalen)”h]”(h)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jQhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jUŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jpŒ ASTIdentifier”“”)�”}”jkŒxe_devcoredump_read”sbŒc.xe_devcoredump_read”†”asbuh1hhjJh²hh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K¬ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jhjJh²hh³j~h´K¬ubhŒ desc_name”“”)�”}”(hŒxe_devcoredump_read”h]”jR)�”}”(hj{h]”hŒxe_devcoredump_read”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj’ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j�hjJh²hh³j~h´K¬ubhŒdesc_parameterlist”“”)�”}”(hŒG(char *buffer, loff_t offset, size_t count, void *data, size_t datalen)”h]”(hŒdesc_parameter”“”)�”}”(hŒ char *buffer”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j·hj³ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj³ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÖhj³ubjR)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj­ubj²)�”}”(hŒ loff_t offset”h]”(h)�”}”(hhh]”jR)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jŒmodname”NŒ classname”Njojr)�”}”ju]”jyŒc.xe_devcoredump_read”†”asbuh1hhjüubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjüubjR)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj­ubj²)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jR)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jMŒmodname”NŒ classname”Njojr)�”}”ju]”jyŒc.xe_devcoredump_read”†”asbuh1hhjDubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjDubjR)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj­ubj²)�”}”(hŒ void *data”h]”(j¸)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjŒubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjŒubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhjŒubjR)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj­ubj²)�”}”(hŒsize_t datalen”h]”(h)�”}”(hhh]”jR)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”j׌modname”NŒ classname”Njojr)�”}”ju]”jyŒc.xe_devcoredump_read”†”asbuh1hhjÎubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjÎubjR)�”}”(hŒdatalen”h]”hŒdatalen”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj­ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j«hjJh²hh³j~h´K¬ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jHŒsphinx_line_type”Œ declarator”hjDh²hh³j~h´K¬ubah}”(h]”j;ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jBh³j~h´K¬hj?h²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ.Read data from the Xe device coredump snapshot”h]”hŒ.Read data from the Xe device coredump snapshot”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K¬hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj?h²hh³j~h´K¬ubeh}”(h]”h ]”(jiŒfunction”eh"]”h$]”h&]”Œdomain”jiŒobjtype”jMŒdesctype”jMŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j=h²hhjh³Nh´NubhŒ container”“”)�”}”(hXß**Parameters** ``char *buffer`` Destination buffer to copy the coredump data into ``loff_t offset`` Offset in the coredump data to start reading from ``size_t count`` Number of bytes to read ``void *data`` Pointer to the xe_devcoredump structure ``size_t datalen`` Length of the data (unused) **Description** Reads a chunk of the coredump snapshot data into the provided buffer. If the devcoredump is smaller than 1.5 GB (XE_DEVCOREDUMP_CHUNK_MAX), it is read directly from a pre-written buffer. For larger devcoredumps, the pre-written buffer must be periodically repopulated from the snapshot state due to kmalloc size limitations. **Return** Number of bytes copied on success, or a negative error code on failure.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jG)�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K°hjYubj6)�”}”(hhh]”(j;)�”}”(hŒC``char *buffer`` Destination buffer to copy the coredump data into ”h]”(jA)�”}”(hŒ``char *buffer``”h]”hè)�”}”(hj~h]”hŒ char *buffer”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K­hjxubjb)�”}”(hhh]”hÞ)�”}”(hŒ1Destination buffer to copy the coredump data into”h]”hŒ1Destination buffer to copy the coredump data into”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j“h´K­hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j“h´K­hjuubj;)�”}”(hŒD``loff_t offset`` Offset in the coredump data to start reading from ”h]”(jA)�”}”(hŒ``loff_t offset``”h]”hè)�”}”(hj·h]”hŒ loff_t offset”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K®hj±ubjb)�”}”(hhh]”hÞ)�”}”(hŒ1Offset in the coredump data to start reading from”h]”hŒ1Offset in the coredump data to start reading from”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÌh´K®hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jÌh´K®hjuubj;)�”}”(hŒ)``size_t count`` Number of bytes to read ”h]”(jA)�”}”(hŒ``size_t count``”h]”hè)�”}”(hjðh]”hŒ size_t count”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K¯hjêubjb)�”}”(hhh]”hÞ)�”}”(hŒNumber of bytes to read”h]”hŒNumber of bytes to read”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´K¯hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jh´K¯hjuubj;)�”}”(hŒ7``void *data`` Pointer to the xe_devcoredump structure ”h]”(jA)�”}”(hŒ``void *data``”h]”hè)�”}”(hj)h]”hŒ void *data”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K°hj#ubjb)�”}”(hhh]”hÞ)�”}”(hŒ'Pointer to the xe_devcoredump structure”h]”hŒ'Pointer to the xe_devcoredump structure”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j>h´K°hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j>h´K°hjuubj;)�”}”(hŒ/``size_t datalen`` Length of the data (unused) ”h]”(jA)�”}”(hŒ``size_t datalen``”h]”hè)�”}”(hjbh]”hŒsize_t datalen”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K±hj\ubjb)�”}”(hhh]”hÞ)�”}”(hŒLength of the data (unused)”h]”hŒLength of the data (unused)”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jwh´K±hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jwh´K±hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5hjYubhÞ)�”}”(hŒ**Description**”h]”jG)�”}”(hj�h]”hŒ Description”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K³hjYubhÞ)�”}”(hXDReads a chunk of the coredump snapshot data into the provided buffer. If the devcoredump is smaller than 1.5 GB (XE_DEVCOREDUMP_CHUNK_MAX), it is read directly from a pre-written buffer. For larger devcoredumps, the pre-written buffer must be periodically repopulated from the snapshot state due to kmalloc size limitations.”h]”hXDReads a chunk of the coredump snapshot data into the provided buffer. If the devcoredump is smaller than 1.5 GB (XE_DEVCOREDUMP_CHUNK_MAX), it is read directly from a pre-written buffer. For larger devcoredumps, the pre-written buffer must be periodically repopulated from the snapshot state due to kmalloc size limitations.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K²hjYubhÞ)�”}”(hŒ **Return**”h]”jG)�”}”(hjÄh]”hŒReturn”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K¸hjYubhÞ)�”}”(hŒGNumber of bytes copied on success, or a negative error code on failure.”h]”hŒGNumber of bytes copied on success, or a negative error code on failure.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´K¹hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jWhjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ__xe_devcoredump (C function)”Œc.__xe_devcoredump”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒqvoid __xe_devcoredump (struct xe_gt *gt, struct xe_exec_queue *q, struct xe_sched_job *job, const char *fmt, ...)”h]”jI)�”}”(hŒpvoid __xe_devcoredump(struct xe_gt *gt, struct xe_exec_queue *q, struct xe_sched_job *job, const char *fmt, ...)”h]”(j¸)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjh²hh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mpubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjh²hh³jh´Mpubj‘)�”}”(hŒ__xe_devcoredump”h]”jR)�”}”(hŒ__xe_devcoredump”h]”hŒ__xe_devcoredump”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj&ubah}”(h]”h ]”(j¦j§eh"]”h$]”h&]”hÅhÆuh1j�hjh²hh³jh´Mpubj¬)�”}”(hŒ[(struct xe_gt *gt, struct xe_exec_queue *q, struct xe_sched_job *job, const char *fmt, ...)”h]”(j²)�”}”(hŒstruct xe_gt *gt”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jFhjBubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjBubh)�”}”(hhh]”jR)�”}”(hŒxe_gt”h]”hŒxe_gt”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jjŒmodname”NŒ classname”Njojr)�”}”ju]”jx)�”}”jkj,sbŒc.__xe_devcoredump”†”asbuh1hhjBubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjBubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhjBubjR)�”}”(hŒgt”h]”hŒgt”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj>ubj²)�”}”(hŒstruct xe_exec_queue *q”h]”(jG)�”}”(hjJh]”hŒstruct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¸ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj¸ubh)�”}”(hhh]”jR)�”}”(hŒ xe_exec_queue”h]”hŒ xe_exec_queue”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jÜŒmodname”NŒ classname”Njojr)�”}”ju]”j„Œc.__xe_devcoredump”†”asbuh1hhj¸ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj¸ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhj¸ubjR)�”}”(hŒq”h]”hŒq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj>ubj²)�”}”(hŒstruct xe_sched_job *job”h]”(jG)�”}”(hjJh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj(ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj(ubh)�”}”(hhh]”jR)�”}”(hŒ xe_sched_job”h]”hŒ xe_sched_job”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jLŒmodname”NŒ classname”Njojr)�”}”ju]”j„Œc.__xe_devcoredump”†”asbuh1hhj(ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj(ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhj(ubjR)�”}”(hŒjob”h]”hŒjob”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj>ubj²)�”}”(hŒconst char *fmt”h]”(jG)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj˜ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj˜ubj¸)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj˜ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj˜ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhj˜ubjR)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj>ubj²)�”}”(hŒ...”h]”j×)�”}”(hŒ...”h]”hŒ...”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhjöubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hj>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j«hjh²hh³jh´Mpubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj"ˆuh1jHj#j$hjh²hh³jh´Mpubah}”(h]”jüah ]”(j(j)eh"]”h$]”h&]”j-ˆj.)j/huh1jBh³jh´Mphjþh²hubj1)�”}”(hhh]”hÞ)�”}”(hŒ;Take the required snapshots and initialize coredump device.”h]”hŒ;Take the required snapshots and initialize coredump device.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mphj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjþh²hh³jh´Mpubeh}”(h]”h ]”(jiŒfunction”eh"]”h$]”h&]”jQjijRj<jSj<jT‰jU‰jV‰uh1j=h²hhjh³Nh´NubjX)�”}”(hXò**Parameters** ``struct xe_gt *gt`` The GT where the issue was detected. ``struct xe_exec_queue *q`` The faulty xe_exec_queue, where the issue was detected, may be NULL for hangs that are not tied to an exec queue (e.g. TLB invalidation timeouts); in that case only the GT-level state (GuC log and CT state) is captured. ``struct xe_sched_job *job`` The faulty xe_sched_job, where the issue was detected, may be NULL. ``const char *fmt`` Printf format + args to describe the reason for the core dump ``...`` variable arguments **Description** This function should be called at the crash time within the serialized gt_reset. It is skipped if we still have the core dump device available with the information of the 'first' snapshot.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jG)�”}”(hjFh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mthj@ubj6)�”}”(hhh]”(j;)�”}”(hŒ:``struct xe_gt *gt`` The GT where the issue was detected. ”h]”(jA)�”}”(hŒ``struct xe_gt *gt``”h]”hè)�”}”(hjeh]”hŒstruct xe_gt *gt”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mqhj_ubjb)�”}”(hhh]”hÞ)�”}”(hŒ$The GT where the issue was detected.”h]”hŒ$The GT where the issue was detected.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jzh´Mqhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jzh´Mqhj\ubj;)�”}”(hŒø``struct xe_exec_queue *q`` The faulty xe_exec_queue, where the issue was detected, may be NULL for hangs that are not tied to an exec queue (e.g. TLB invalidation timeouts); in that case only the GT-level state (GuC log and CT state) is captured. ”h]”(jA)�”}”(hŒ``struct xe_exec_queue *q``”h]”hè)�”}”(hjžh]”hŒstruct xe_exec_queue *q”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Muhj˜ubjb)�”}”(hhh]”hÞ)�”}”(hŒÛThe faulty xe_exec_queue, where the issue was detected, may be NULL for hangs that are not tied to an exec queue (e.g. TLB invalidation timeouts); in that case only the GT-level state (GuC log and CT state) is captured.”h]”hŒÛThe faulty xe_exec_queue, where the issue was detected, may be NULL for hangs that are not tied to an exec queue (e.g. TLB invalidation timeouts); in that case only the GT-level state (GuC log and CT state) is captured.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mrhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j³h´Muhj\ubj;)�”}”(hŒa``struct xe_sched_job *job`` The faulty xe_sched_job, where the issue was detected, may be NULL. ”h]”(jA)�”}”(hŒ``struct xe_sched_job *job``”h]”hè)�”}”(hjØh]”hŒstruct xe_sched_job *job”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MvhjÒubjb)�”}”(hhh]”hÞ)�”}”(hŒCThe faulty xe_sched_job, where the issue was detected, may be NULL.”h]”hŒCThe faulty xe_sched_job, where the issue was detected, may be NULL.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jíh´Mvhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jíh´Mvhj\ubj;)�”}”(hŒR``const char *fmt`` Printf format + args to describe the reason for the core dump ”h]”(jA)�”}”(hŒ``const char *fmt``”h]”hè)�”}”(hj h]”hŒconst char *fmt”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mwhj ubjb)�”}”(hhh]”hÞ)�”}”(hŒ=Printf format + args to describe the reason for the core dump”h]”hŒ=Printf format + args to describe the reason for the core dump”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j& h´Mwhj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j& h´Mwhj\ubj;)�”}”(hŒ``...`` variable arguments ”h]”(jA)�”}”(hŒ``...``”h]”hè)�”}”(hjJ h]”hŒ...”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´KhjD ubjb)�”}”(hhh]”hÞ)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j_ h´Khj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjD ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j_ h´Khj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5hj@ubhÞ)�”}”(hŒ**Description**”h]”jG)�”}”(hj… h]”hŒ Description”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Khj@ubhÞ)�”}”(hŒ¼This function should be called at the crash time within the serialized gt_reset. It is skipped if we still have the core dump device available with the information of the 'first' snapshot.”h]”hŒÀThis function should be called at the crash time within the serialized gt_reset. It is skipped if we still have the core dump device available with the information of the ‘first’ snapshot.”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´Mxhj@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jWhjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ"xe_print_blob_ascii85 (C function)”Œc.xe_print_blob_ascii85”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ�void xe_print_blob_ascii85 (struct drm_printer *p, const char *prefix, char suffix, const void *blob, size_t offset, size_t size)”h]”jI)�”}”(hŒ€void xe_print_blob_ascii85(struct drm_printer *p, const char *prefix, char suffix, const void *blob, size_t offset, size_t size)”h]”(j¸)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjÆ h²hh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´M·ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjÆ h²hh³jØ h´M·ubj‘)�”}”(hŒxe_print_blob_ascii85”h]”jR)�”}”(hŒxe_print_blob_ascii85”h]”hŒxe_print_blob_ascii85”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjç ubah}”(h]”h ]”(j¦j§eh"]”h$]”h&]”hÅhÆuh1j�hjÆ h²hh³jØ h´M·ubj¬)�”}”(hŒf(struct drm_printer *p, const char *prefix, char suffix, const void *blob, size_t offset, size_t size)”h]”(j²)�”}”(hŒstruct drm_printer *p”h]”(jG)�”}”(hjJh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj ubh)�”}”(hhh]”jR)�”}”(hŒ drm_printer”h]”hŒ drm_printer”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj" ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”j' Œmodname”NŒ classname”Njojr)�”}”ju]”jx)�”}”jkjí sbŒc.xe_print_blob_ascii85”†”asbuh1hhj ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhj ubjR)�”}”(hjãh]”hŒp”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubj²)�”}”(hŒconst char *prefix”h]”(jG)�”}”(hjžh]”hŒconst”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjt ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjt ubj¸)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjt ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjt ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhjt ubjR)�”}”(hŒprefix”h]”hŒprefix”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjt ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubj²)�”}”(hŒ char suffix”h]”(j¸)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hjÑ ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjÑ ubjR)�”}”(hŒsuffix”h]”hŒsuffix”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubj²)�”}”(hŒconst void *blob”h]”(jG)�”}”(hjžh]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj ubj¸)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”jÄah"]”h$]”h&]”uh1j·hj ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj ubj×)�”}”(hjÚh]”hŒ*”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jãah"]”h$]”h&]”uh1jÖhj ubjR)�”}”(hŒblob”h]”hŒblob”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubj²)�”}”(hŒ size_t offset”h]”(h)�”}”(hhh]”jR)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjg ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”jl Œmodname”NŒ classname”Njojr)�”}”ju]”jA Œc.xe_print_blob_ascii85”†”asbuh1hhjc ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhjc ubjR)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhjc ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubj²)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jR)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj¯ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jiŒreftype”jkŒ reftarget”j´ Œmodname”NŒ classname”Njojr)�”}”ju]”jA Œc.xe_print_blob_ascii85”†”asbuh1hhj« ubj€)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”jŒah"]”h$]”h&]”uh1jhj« ubjR)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j^ah"]”h$]”h&]”uh1jQhj« ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j±hjÿ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j«hjÆ h²hh³jØ h´M·ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj"ˆuh1jHj#j$hj h²hh³jØ h´M·ubah}”(h]”j½ ah ]”(j(j)eh"]”h$]”h&]”j-ˆj.)j/huh1jBh³jØ h´M·hj¿ h²hubj1)�”}”(hhh]”hÞ)�”}”(hŒ/print a BLOB to some useful location in ASCII85”h]”hŒ/print a BLOB to some useful location in ASCII85”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´M·hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¿ h²hh³jØ h´M·ubeh}”(h]”h ]”(jiŒfunction”eh"]”h$]”h&]”jQjijRj jSj jT‰jU‰jV‰uh1j=h²hhjh³Nh´NubjX)�”}”(hXê**Parameters** ``struct drm_printer *p`` the printer object to output to ``const char *prefix`` optional prefix to add to output string ``char suffix`` optional suffix to add at the end. 0 disables it and is not added to the output, which is useful when using multiple calls to dump data to **p** ``const void *blob`` the Binary Large OBject to dump out ``size_t offset`` offset in bytes to skip from the front of the BLOB, must be a multiple of sizeof(u32) ``size_t size`` the size in bytes of the BLOB, must be a multiple of sizeof(u32) **Description** The output is split into multiple calls to drm_puts() because some print targets, e.g. dmesg, cannot handle arbitrarily long lines. These targets may add newlines, as is the case with dmesg: each drm_puts() call creates a separate line. There is also a scheduler yield call to prevent the 'task has been stuck for 120s' kernel hang check feature from firing when printing to a slow target such as dmesg over a serial port.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jG)�”}”(hj* h]”hŒ Parameters”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´M»hj$ ubj6)�”}”(hhh]”(j;)�”}”(hŒ:``struct drm_printer *p`` the printer object to output to ”h]”(jA)�”}”(hŒ``struct drm_printer *p``”h]”hè)�”}”(hjI h]”hŒstruct drm_printer *p”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÂhjC ubjb)�”}”(hhh]”hÞ)�”}”(hŒthe printer object to output to”h]”hŒthe printer object to output to”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j^ h´MÂhj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j^ h´MÂhj@ ubj;)�”}”(hŒ?``const char *prefix`` optional prefix to add to output string ”h]”(jA)�”}”(hŒ``const char *prefix``”h]”hè)�”}”(hj‚ h]”hŒconst char *prefix”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÃhj| ubjb)�”}”(hhh]”hÞ)�”}”(hŒ'optional prefix to add to output string”h]”hŒ'optional prefix to add to output string”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j— h´MÃhj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj| ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j— h´MÃhj@ ubj;)�”}”(hŒ¡``char suffix`` optional suffix to add at the end. 0 disables it and is not added to the output, which is useful when using multiple calls to dump data to **p** ”h]”(jA)�”}”(hŒ``char suffix``”h]”hè)�”}”(hj» h]”hŒ char suffix”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÆhjµ ubjb)�”}”(hhh]”hÞ)�”}”(hŒ�optional suffix to add at the end. 0 disables it and is not added to the output, which is useful when using multiple calls to dump data to **p**”h]”(hŒ‹optional suffix to add at the end. 0 disables it and is not added to the output, which is useful when using multiple calls to dump data to ”…”�”}”(hjÔ h²hh³Nh´NubjG)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÄhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jÐ h´MÆhj@ ubj;)�”}”(hŒ9``const void *blob`` the Binary Large OBject to dump out ”h]”(jA)�”}”(hŒ``const void *blob``”h]”hè)�”}”(hj h]”hŒconst void *blob”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÇhjý ubjb)�”}”(hhh]”hÞ)�”}”(hŒ#the Binary Large OBject to dump out”h]”hŒ#the Binary Large OBject to dump out”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j h´MÇhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjý ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³j h´MÇhj@ ubj;)�”}”(hŒh``size_t offset`` offset in bytes to skip from the front of the BLOB, must be a multiple of sizeof(u32) ”h]”(jA)�”}”(hŒ``size_t offset``”h]”hè)�”}”(hj< h]”hŒ size_t offset”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÈhj6 ubjb)�”}”(hhh]”hÞ)�”}”(hŒUoffset in bytes to skip from the front of the BLOB, must be a multiple of sizeof(u32)”h]”hŒUoffset in bytes to skip from the front of the BLOB, must be a multiple of sizeof(u32)”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jQ h´MÈhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jQ h´MÈhj@ ubj;)�”}”(hŒQ``size_t size`` the size in bytes of the BLOB, must be a multiple of sizeof(u32) ”h]”(jA)�”}”(hŒ``size_t size``”h]”hè)�”}”(hju h]”hŒ size_t size”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1j@h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MÉhjo ubjb)�”}”(hhh]”hÞ)�”}”(hŒ@the size in bytes of the BLOB, must be a multiple of sizeof(u32)”h]”hŒ@the size in bytes of the BLOB, must be a multiple of sizeof(u32)”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jŠ h´MÉhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jahjo ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:h³jŠ h´MÉhj@ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j5hj$ ubhÞ)�”}”(hŒ**Description**”h]”jG)�”}”(hj° h]”hŒ Description”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´MËhj$ ubhÞ)�”}”(hŒìThe output is split into multiple calls to drm_puts() because some print targets, e.g. dmesg, cannot handle arbitrarily long lines. These targets may add newlines, as is the case with dmesg: each drm_puts() call creates a separate line.”h]”hŒìThe output is split into multiple calls to drm_puts() because some print targets, e.g. dmesg, cannot handle arbitrarily long lines. These targets may add newlines, as is the case with dmesg: each drm_puts() call creates a separate line.”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´M¸hj$ ubhÞ)�”}”(hŒ¹There is also a scheduler yield call to prevent the 'task has been stuck for 120s' kernel hang check feature from firing when printing to a slow target such as dmesg over a serial port.”h]”hŒ½There is also a scheduler yield call to prevent the ‘task has been stuck for 120s’ kernel hang check feature from firing when printing to a slow target such as dmesg over a serial port.”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/xe/xe_devcoredump:13: ./drivers/gpu/drm/xe/xe_devcoredump.c”h´M½hj$ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jWhjh²hh³Nh´Nubeh}”(h]”Œ internal-api”ah ]”h"]”Œ internal api”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubeh}”(h]”Œxe-device-coredump”ah ]”h"]”Œxe device coredump”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”}”Œnameids”}”(jø jõ jð jí uŒ nametypes”}”(jø ‰jð ‰uh}”(jõ hÊjí jj;jDjüjj½ 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”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.