€•±8Œ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/power/shutdown-debugging”Œ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/power/shutdown-debugging”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/it_IT/power/shutdown-debugging”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/power/shutdown-debugging”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/power/shutdown-debugging”Œ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/power/shutdown-debugging”Œ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/power/shutdown-debugging”Œ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”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒF/var/lib/git/docbuild/linux/Documentation/power/shutdown-debugging.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ+Debugging Kernel Shutdown Hangs with pstore”h]”hŒ+Debugging Kernel Shutdown Hangs with pstore”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒeIf the system hangs while shutting down, the kernel logs may need to be retrieved to debug the issue.”h]”hŒeIf the system hangs while shutting down, the kernel logs may need to be retrieved to debug the issue.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒuOn systems that have a UART available, it is best to configure the kernel to use this UART for kernel console output.”h]”hŒuOn systems that have a UART available, it is best to configure the kernel to use this UART for kernel console output.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hŒ¢If a UART isn't available, the ``pstore`` subsystem provides a mechanism to persist this data across a system reset, allowing it to be retrieved on the next boot.”h]”(hŒ!If a UART isn’t available, the ”…”�”}”(hj h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``pstore``”h]”hŒpstore”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒy subsystem provides a mechanism to persist this data across a system reset, allowing it to be retrieved on the next boot.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒKernel Configuration”h]”hŒKernel Configuration”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj6h²hh³hÇh´Kubhï)�”}”(hŒoTo enable ``pstore`` and enable saving kernel ring buffer logs, set the following kernel configuration options:”h]”(hŒ To enable ”…”�”}”(hjGh²hh³Nh´Nubj)�”}”(hŒ ``pstore``”h]”hŒpstore”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubhŒ[ and enable saving kernel ring buffer logs, set the following kernel configuration options:”…”�”}”(hjGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj6h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ``CONFIG_PSTORE=y``”h]”hï)�”}”(hjph]”j)�”}”(hjph]”hŒCONFIG_PSTORE=y”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ``CONFIG_PSTORE_CONSOLE=y`` ”h]”hï)�”}”(hŒ``CONFIG_PSTORE_CONSOLE=y``”h]”j)�”}”(hj”h]”hŒCONFIG_PSTORE_CONSOLE=y”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jgh³hÇh´Khj6h²hubhï)�”}”(hŒnAdditionally, enable a backend to store the data. Depending upon your platform some potential options include:”h]”hŒnAdditionally, enable a backend to store the data. Depending upon your platform some potential options include:”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj6h²hubjh)�”}”(hhh]”(jm)�”}”(hŒ``CONFIG_EFI_VARS_PSTORE=y``”h]”hï)�”}”(hjÊh]”j)�”}”(hjÊh]”hŒCONFIG_EFI_VARS_PSTORE=y”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÅh²hh³hÇh´Nubjm)�”}”(hŒ``CONFIG_PSTORE_RAM=y``”h]”hï)�”}”(hjêh]”j)�”}”(hjêh]”hŒCONFIG_PSTORE_RAM=y”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÅh²hh³hÇh´Nubjm)�”}”(hŒ``CONFIG_CHROMEOS_PSTORE=y``”h]”hï)�”}”(hj h]”j)�”}”(hj h]”hŒCONFIG_CHROMEOS_PSTORE=y”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÅh²hh³hÇh´Nubjm)�”}”(hŒ``CONFIG_PSTORE_BLK=y`` ”h]”hï)�”}”(hŒ``CONFIG_PSTORE_BLK=y``”h]”j)�”}”(hj.h]”hŒCONFIG_PSTORE_BLK=y”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÅh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jµj¶uh1jgh³hÇh´Khj6h²hubeh}”(h]”Œkernel-configuration”ah ]”h"]”Œkernel configuration”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒKernel Command-line Parameters”h]”hŒKernel Command-line Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjWh²hh³hÇh´K#ubhï)�”}”(hŒ1Add these parameters to your kernel command line:”h]”hŒ1Add these parameters to your kernel command line:”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K$hjWh²hubjh)�”}”(hhh]”(jm)�”}”(hŒ�``printk.always_kmsg_dump=Y`` * Forces the kernel to dump the entire message buffer to pstore during shutdown”h]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒu``printk.always_kmsg_dump=Y`` * Forces the kernel to dump the entire message buffer to pstore during shutdown”h]”(hŒterm”“”)�”}”(hŒ``printk.always_kmsg_dump=Y``”h]”j)�”}”(hjŒh]”hŒprintk.always_kmsg_dump=Y”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆh³hÇh´K'hj„ubhŒ definition”“”)�”}”(hhh]”jh)�”}”(hhh]”jm)�”}”(hŒSForces the kernel to dump the entire message buffer to pstore during shutdown”h]”j~)�”}”(hhh]”jƒ)�”}”(hŒMForces the kernel to dump the entire message buffer to pstore during shutdown”h]”(j‰)�”}”(hŒDForces the kernel to dump the entire message buffer to pstore during”h]”hŒDForces the kernel to dump the entire message buffer to pstore during”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆh³hÇh´K'hj°ubj¢)�”}”(hhh]”hï)�”}”(hŒshutdown”h]”hŒshutdown”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³hÇh´K'hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¦ubah}”(h]”h ]”h"]”h$]”h&]”jµj¶uh1jgh³hÇh´K'hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³hÇh´K'hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjvh²hh³Nh´Nubjm)�”}”(hŒa``efi_pstore.pstore_disable=N`` * For EFI-based systems, ensures the EFI backend is active ”h]”j~)�”}”(hhh]”jƒ)�”}”(hŒ[``efi_pstore.pstore_disable=N`` * For EFI-based systems, ensures the EFI backend is active ”h]”(j‰)�”}”(hŒ``efi_pstore.pstore_disable=N``”h]”j)�”}”(hjh]”hŒefi_pstore.pstore_disable=N”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jˆh³hÇh´K*hjubj¢)�”}”(hhh]”jh)�”}”(hhh]”jm)�”}”(hŒ9For EFI-based systems, ensures the EFI backend is active ”h]”hï)�”}”(hŒ8For EFI-based systems, ensures the EFI backend is active”h]”hŒ8For EFI-based systems, ensures the EFI backend is active”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K*hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj.ubah}”(h]”h ]”h"]”h$]”h&]”jµj¶uh1jgh³hÇh´K*hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‚h³hÇh´K*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jµj¶uh1jgh³hÇh´K&hjWh²hubeh}”(h]”Œkernel-command-line-parameters”ah ]”h"]”Œkernel command-line parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K#ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ'Userspace Interaction and Log Retrieval”h]”hŒ'Userspace Interaction and Log Retrieval”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjuh²hh³hÇh´K-ubhï)�”}”(hŒ�On the next boot after a hang, pstore logs will be available in the pstore filesystem (``/sys/fs/pstore``) and can be retrieved by userspace.”h]”(hŒWOn the next boot after a hang, pstore logs will be available in the pstore filesystem (”…”�”}”(hj†h²hh³Nh´Nubj)�”}”(hŒ``/sys/fs/pstore``”h]”hŒ/sys/fs/pstore”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†ubhŒ$) and can be retrieved by userspace.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K.hjuh²hubhï)�”}”(hŒNOn systemd systems, the ``systemd-pstore`` service will help do the following:”h]”(hŒOn systemd systems, the ”…”�”}”(hj¦h²hh³Nh´Nubj)�”}”(hŒ``systemd-pstore``”h]”hŒsystemd-pstore”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubhŒ$ service will help do the following:”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K1hjuh²hubhŒenumerated_list”“”)�”}”(hhh]”(jm)�”}”(hŒ(Locate pstore data in ``/sys/fs/pstore``”h]”hï)�”}”(hjÍh]”(hŒLocate pstore data in ”…”�”}”(hjÏh²hh³Nh´Nubj)�”}”(hŒ``/sys/fs/pstore``”h]”hŒ/sys/fs/pstore”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÈh²hh³hÇh´Nubjm)�”}”(hŒ/Read and save it to ``/var/lib/systemd/pstore``”h]”hï)�”}”(hjòh]”(hŒRead and save it to ”…”�”}”(hjôh²hh³Nh´Nubj)�”}”(hŒ``/var/lib/systemd/pstore``”h]”hŒ/var/lib/systemd/pstore”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K4hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÈh²hh³hÇh´Nubjm)�”}”(hŒ$Clear pstore data for the next event”h]”hï)�”}”(hjh]”hŒ$Clear pstore data for the next event”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K5hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÈh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jÆhjuh²hh³hÇh´K3ubeh}”(h]”Œ'userspace-interaction-and-log-retrieval”ah ]”h"]”Œ'userspace interaction and log retrieval”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K-ubeh}”(h]”Œ+debugging-kernel-shutdown-hangs-with-pstore”ah ]”h"]”Œ+debugging kernel shutdown hangs with pstore”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”jjŒ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”}”(jDjAj3j0jTjQjrjoj<j9uŒ nametypes”}”(jD‰j3‰jT‰jr‰j<‰uh}”(jAhÊj0hÝjQj6jojWj9juuŒ 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.