€•±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.