€• Œ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/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuŒtagname”hhhubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/zh_TW/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/it_IT/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ja_JP/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ko_KR/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/pt_BR/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/sp_SP/arch/x86/amd-debugging”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubeh}”(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³ŒD/var/lib/git/docbuild/linux/Documentation/arch/x86/amd-debugging.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDebugging AMD Zen systems”h]”hŒDebugging AMD Zen systems”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒIntroduction”h]”hŒIntroduction”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ¼This document describes techniques that are useful for debugging issues with
AMD Zen systems. It is intended for use by developers and technical users
to help identify and resolve issues.”h]”hŒ¼This document describes techniques that are useful for debugging issues with
AMD Zen systems. It is intended for use by developers and technical users
to help identify and resolve issues.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubeh}”(h]”Œintroduction”ah ]”h"]”Œintroduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒS3 vs s2idle”h]”hŒS3 vs s2idle”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´Kubhï)�”}”(hX4 On AMD systems, it's not possible to simultaneously support suspend-to-RAM (S3)
and suspend-to-idle (s2idle). To confirm which mode your system supports you
can look at ``cat /sys/power/mem_sleep``. If it shows ``s2idle [deep]`` then
*S3* is supported. If it shows ``[s2idle]`` then *s2idle* is
supported.”h]”(hŒ¬On AMD systems, it’s not possible to simultaneously support suspend-to-RAM (S3)
and suspend-to-idle (s2idle). To confirm which mode your system supports you
can look at ”…”�”}”(hj h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``cat /sys/power/mem_sleep``”h]”hŒcat /sys/power/mem_sleep”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ. If it shows ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ``s2idle [deep]``”h]”hŒ
s2idle [deep]”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ then
”…”�”}”(hj h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*S3*”h]”hŒS3”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jE hj ubhŒ is supported. If it shows ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ``[s2idle]``”h]”hŒ[s2idle]”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ then ”…”�”}”(hj h²hh³Nh´NubjF )�”}”(hŒ*s2idle*”h]”hŒs2idle”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jE hj ubhŒ is
supported.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj h²hubhï)�”}”(hŒuOn systems that support *S3*, the firmware will be utilized to put all hardware into
the appropriate low power state.”h]”(hŒOn systems that support ”…”�”}”(hjƒ h²hh³Nh´NubjF )�”}”(hŒ*S3*”h]”hŒS3”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jE hjƒ ubhŒY, the firmware will be utilized to put all hardware into
the appropriate low power state.”…”�”}”(hjƒ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj h²hubhï)�”}”(hŒóOn systems that support *s2idle*, the kernel will be responsible for transitioning devices
into the appropriate low power state. When all devices are in the appropriate low
power state, the hardware will transition into a hardware sleep state.”h]”(hŒOn systems that support ”…”�”}”(hj£ h²hh³Nh´NubjF )�”}”(hŒ*s2idle*”h]”hŒs2idle”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jE hj£ ubhŒÓ, the kernel will be responsible for transitioning devices
into the appropriate low power state. When all devices are in the appropriate low
power state, the hardware will transition into a hardware sleep state.”…”�”}”(hj£ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj h²hubhï)�”}”(hŒ’After a suspend cycle you can tell how much time was spent in a hardware sleep
state by looking at ``cat /sys/power/suspend_stats/last_hw_sleep``.”h]”(hŒcAfter a suspend cycle you can tell how much time was spent in a hardware sleep
state by looking at ”…”�”}”(hjà h²hh³Nh´Nubj )�”}”(hŒ.``cat /sys/power/suspend_stats/last_hw_sleep``”h]”hŒ*cat /sys/power/suspend_stats/last_hw_sleep”…”�”}”(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³hÇh´Khj h²hubhï)�”}”(hŒ>This flowchart explains how the AMD s2idle suspend flow works.”h]”hŒ>This flowchart explains how the AMD s2idle suspend flow works.”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hj h²hubŒkfigure”Œ
kernel_figure”“”)�”}”(hhh]”hŒfigure”“”)�”}”(hhh]”hŒimage”“”)�”}”(hŒ.. kernel-figure:: suspend.svg
”h]”h}”(h]”h ]”h"]”h$]”h&]”Œuri”Œarch/x86/suspend.svg”Œ
candidates”}”Œ*”j suh1jü hjù h³hÇh´K ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷ hjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jò hj h²hh³hÇh´K#ubhï)�”}”(hŒ=This flowchart explains how the amd s2idle resume flow works.”h]”hŒ=This flowchart explains how the amd s2idle resume flow works.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K$hj h²hubjó )�”}”(hhh]”jø )�”}”(hhh]”jý )�”}”(hŒ.. kernel-figure:: resume.svg
”h]”h}”(h]”h ]”h"]”h$]”h&]”Œuri”Œarch/x86/resume.svg”j
}”j j8 suh1jü hj* h³hÇh´K ubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷ hj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1jò hj h²hh³hÇh´K'ubeh}”(h]”Œs3-vs-s2idle”ah ]”h"]”Œs3 vs s2idle”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒs2idle debugging tool”h]”hŒs2idle debugging tool”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjN h²hh³hÇh´K)ubhï)�”}”(hX As there are a lot of places that problems can occur, a debugging tool has been
created at
`amd-debug-tools `_
that can help test for common problems and offer suggestions.”h]”(hŒ[As there are a lot of places that problems can occur, a debugging tool has been
created at
”…”�”}”(hj_ h²hh³Nh´NubhŒ reference”“”)�”}”(hŒg`amd-debug-tools `_”h]”hŒamd-debug-tools”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œamd-debug-tools”Œrefuri”ŒRhttps://git.kernel.org/pub/scm/linux/kernel/git/superm1/amd-debug-tools.git/about/”uh1jg hj_ ubhŒtarget”“”)�”}”(hŒU ”h]”h}”(h]”Œamd-debug-tools”ah ]”h"]”Œamd-debug-tools”ah$]”h&]”Œrefuri”jz uh1j{ Œ
referenced”Khj_ ubhŒ>
that can help test for common problems and offer suggestions.”…”�”}”(hj_ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K+hjN h²hubhï)�”}”(hX0 If you have an s2idle issue, it's best to start with this and follow instructions
from its findings. If you continue to have an issue, raise a bug with the
report generated from this script to
`drm/amd gitlab `_.”h]”(hŒÄIf you have an s2idle issue, it’s best to start with this and follow instructions
from its findings. If you continue to have an issue, raise a bug with the
report generated from this script to
”…”�”}”(hj• h²hh³Nh´Nubjh )�”}”(hŒm`drm/amd gitlab `_”h]”hŒdrm/amd gitlab”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œdrm/amd gitlab”jy ŒYhttps://gitlab.freedesktop.org/drm/amd/-/issues/new?issuable_template=s2idle_BUG_TEMPLATE”uh1jg hj• ubj| )�”}”(hŒ\ ”h]”h}”(h]”Œdrm-amd-gitlab”ah ]”h"]”Œdrm/amd gitlab”ah$]”h&]”Œrefuri”j uh1j{ jŠ Khj• ubhŒ.”…”�”}”(hj• h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K0hjN h²hubeh}”(h]”Œs2idle-debugging-tool”ah ]”h"]”Œs2idle debugging tool”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K)ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ#Spurious s2idle wakeups from an IRQ”h]”hŒ#Spurious s2idle wakeups from an IRQ”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÍ h²hh³hÇh´K6ubhï)�”}”(hŒ¦Spurious wakeups will generally have an IRQ set to ``/sys/power/pm_wakeup_irq``.
This can be matched to ``/proc/interrupts`` to determine what device woke the system.”h]”(hŒ3Spurious wakeups will generally have an IRQ set to ”…”�”}”(hjÞ h²hh³Nh´Nubj )�”}”(hŒ``/sys/power/pm_wakeup_irq``”h]”hŒ/sys/power/pm_wakeup_irq”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞ ubhŒ.
This can be matched to ”…”�”}”(hjÞ h²hh³Nh´Nubj )�”}”(hŒ``/proc/interrupts``”h]”hŒ/proc/interrupts”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞ ubhŒ* to determine what device woke the system.”…”�”}”(hjÞ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K8hjÍ h²hubhï)�”}”(hŒ„If this isn't enough to debug the problem, then the following sysfs files
can be set to add more verbosity to the wakeup process: ::”h]”hŒƒIf this isn’t enough to debug the problem, then the following sysfs files
can be set to add more verbosity to the wakeup process:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K;hjÍ h²hubhŒ
literal_block”“”)�”}”(hŒ^# echo 1 | sudo tee /sys/power/pm_debug_messages
# echo 1 | sudo tee /sys/power/pm_print_times”h]”hŒ^# echo 1 | sudo tee /sys/power/pm_debug_messages
# echo 1 | sudo tee /sys/power/pm_print_times”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K>hjÍ h²hubhï)�”}”(hŒ«After making those changes, the kernel will display messages that can
be traced back to kernel s2idle loop code as well as display any active
GPIO sources while waking up.”h]”hŒ«After making those changes, the kernel will display messages that can
be traced back to kernel s2idle loop code as well as display any active
GPIO sources while waking up.”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KAhjÍ h²hubhï)�”}”(hŒ†If the wakeup is caused by the ACPI SCI, additional ACPI debugging may be
needed. These commands can enable additional trace data: ::”h]”hŒƒIf the wakeup is caused by the ACPI SCI, additional ACPI debugging may be
needed. These commands can enable additional trace data:”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KEhjÍ h²hubj )�”}”(hX # echo enable | sudo tee /sys/module/acpi/parameters/trace_state
# echo 1 | sudo tee /sys/module/acpi/parameters/aml_debug_output
# echo 0x0800000f | sudo tee /sys/module/acpi/parameters/debug_level
# echo 0xffff0000 | sudo tee /sys/module/acpi/parameters/debug_layer”h]”hX # echo enable | sudo tee /sys/module/acpi/parameters/trace_state
# echo 1 | sudo tee /sys/module/acpi/parameters/aml_debug_output
# echo 0x0800000f | sudo tee /sys/module/acpi/parameters/debug_level
# echo 0xffff0000 | sudo tee /sys/module/acpi/parameters/debug_layer”…”�”}”hjJ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´KHhjÍ h²hubeh}”(h]”Œ#spurious-s2idle-wakeups-from-an-irq”ah ]”h"]”Œ#spurious s2idle wakeups from an irq”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K6ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ#Spurious s2idle wakeups from a GPIO”h]”hŒ#Spurious s2idle wakeups from a GPIO”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj` h²hh³hÇh´KNubhï)�”}”(hX If a GPIO is active when waking up the system ideally you would look at the
schematic to determine what device it is associated with. If the schematic
is not available, another tactic is to look at the ACPI _EVT() entry
to determine what device is notified when that GPIO is active.”h]”hX If a GPIO is active when waking up the system ideally you would look at the
schematic to determine what device it is associated with. If the schematic
is not available, another tactic is to look at the ACPI _EVT() entry
to determine what device is notified when that GPIO is active.”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KPhj` h²hubhï)�”}”(hŒ—For a hypothetical example, say that GPIO 59 woke up the system. You can
look at the SSDT to determine what device is notified when GPIO 59 is active.”h]”hŒ—For a hypothetical example, say that GPIO 59 woke up the system. You can
look at the SSDT to determine what device is notified when GPIO 59 is active.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KUhj` h²hubhï)�”}”(hŒ*First convert the GPIO number into hex. ::”h]”hŒ'First convert the GPIO number into hex.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KXhj` h²hubj )�”}”(hŒ"$ python3 -c "print(hex(59))"
0x3b”h]”hŒ"$ python3 -c "print(hex(59))"
0x3b”…”�”}”hj› sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´KZhj` h²hubhï)�”}”(hŒGNext determine which ACPI table has the ``_EVT`` entry. For example: ::”h]”(hŒ(Next determine which ACPI table has the ”…”�”}”(hj© h²hh³Nh´Nubj )�”}”(hŒ``_EVT``”h]”hŒ_EVT”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj© ubhŒ entry. For example:”…”�”}”(hj© h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K]hj` h²hubj )�”}”(hŒk$ sudo grep EVT /sys/firmware/acpi/tables/SSDT*
grep: /sys/firmware/acpi/tables/SSDT27: binary file matches”h]”hŒk$ sudo grep EVT /sys/firmware/acpi/tables/SSDT*
grep: /sys/firmware/acpi/tables/SSDT27: binary file matches”…”�”}”hjÉ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K_hj` h²hubhï)�”}”(hŒDecode this table::”h]”hŒDecode this table:”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kbhj` h²hubj )�”}”(hŒB$ sudo cp /sys/firmware/acpi/tables/SSDT27 .
$ sudo iasl -d SSDT27”h]”hŒB$ sudo cp /sys/firmware/acpi/tables/SSDT27 .
$ sudo iasl -d SSDT27”…”�”}”hjå sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Kdhj` h²hubhï)�”}”(hŒDThen look at the table and find the matching entry for GPIO 0x3b. ::”h]”hŒAThen look at the table and find the matching entry for GPIO 0x3b.”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kghj` h²hubj )�”}”(hŒ²Case (0x3B)
{
M000 (0x393B)
M460 (" Notify (\\_SB.PCI0.GP17.XHC1, 0x02)\n", Zero, Zero, Zero, Zero, Zero, Zero)
Notify (\_SB.PCI0.GP17.XHC1, 0x02) // Device Wake
}”h]”hŒ²Case (0x3B)
{
M000 (0x393B)
M460 (" Notify (\\_SB.PCI0.GP17.XHC1, 0x02)\n", Zero, Zero, Zero, Zero, Zero, Zero)
Notify (\_SB.PCI0.GP17.XHC1, 0x02) // Device Wake
}”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Kihj` h²hubhï)�”}”(hŒïYou can see in this case that the device ``\_SB.PCI0.GP17.XHC1`` is notified
when GPIO 59 is active. It's obvious this is an XHCI controller, but to go a
step further you can figure out which XHCI controller it is by matching it to
ACPI.::”h]”(hŒ)You can see in this case that the device ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ``\_SB.PCI0.GP17.XHC1``”h]”hŒ\_SB.PCI0.GP17.XHC1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ° is notified
when GPIO 59 is active. It’s obvious this is an XHCI controller, but to go a
step further you can figure out which XHCI controller it is by matching it to
ACPI.:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kphj` h²hubj )�”}”(hX $ grep "PCI0.GP17.XHC1" /sys/bus/acpi/devices/*/path
/sys/bus/acpi/devices/device:2d/path:\_SB_.PCI0.GP17.XHC1
/sys/bus/acpi/devices/device:2e/path:\_SB_.PCI0.GP17.XHC1.RHUB
/sys/bus/acpi/devices/device:2f/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1
/sys/bus/acpi/devices/device:30/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1.CAM0
/sys/bus/acpi/devices/device:31/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1.CAM1
/sys/bus/acpi/devices/device:32/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT2
/sys/bus/acpi/devices/LNXPOWER:0d/path:\_SB_.PCI0.GP17.XHC1.PWRS”h]”hX $ grep "PCI0.GP17.XHC1" /sys/bus/acpi/devices/*/path
/sys/bus/acpi/devices/device:2d/path:\_SB_.PCI0.GP17.XHC1
/sys/bus/acpi/devices/device:2e/path:\_SB_.PCI0.GP17.XHC1.RHUB
/sys/bus/acpi/devices/device:2f/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1
/sys/bus/acpi/devices/device:30/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1.CAM0
/sys/bus/acpi/devices/device:31/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT1.CAM1
/sys/bus/acpi/devices/device:32/path:\_SB_.PCI0.GP17.XHC1.RHUB.PRT2
/sys/bus/acpi/devices/LNXPOWER:0d/path:\_SB_.PCI0.GP17.XHC1.PWRS”…”�”}”hj/ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Kuhj` h²hubhï)�”}”(hŒ}Here you can see it matches to ``device:2d``. Look at the ``physical_node``
to determine what PCI device that actually is. ::”h]”(hŒHere you can see it matches to ”…”�”}”(hj= h²hh³Nh´Nubj )�”}”(hŒ
``device:2d``”h]”hŒ device:2d”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj= ubhŒ. Look at the ”…”�”}”(hj= h²hh³Nh´Nubj )�”}”(hŒ``physical_node``”h]”hŒ
physical_node”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj= ubhŒ/
to determine what PCI device that actually is.”…”�”}”(hj= h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K~hj` h²hubj )�”}”(hŒÀ$ ls -l /sys/bus/acpi/devices/device:2d/physical_node
lrwxrwxrwx 1 root root 0 Feb 12 13:22 /sys/bus/acpi/devices/device:2d/physical_node -> ../../../../../pci0000:00/0000:00:08.1/0000:c2:00.4”h]”hŒÀ$ ls -l /sys/bus/acpi/devices/device:2d/physical_node
lrwxrwxrwx 1 root root 0 Feb 12 13:22 /sys/bus/acpi/devices/device:2d/physical_node -> ../../../../../pci0000:00/0000:00:08.1/0000:c2:00.4”…”�”}”hjo sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K�hj` h²hubhï)�”}”(hŒ[So there you have it: the PCI device associated with this GPIO wakeup was ``0000:c2:00.4``.”h]”(hŒJSo there you have it: the PCI device associated with this GPIO wakeup was ”…”�”}”(hj} h²hh³Nh´Nubj )�”}”(hŒ``0000:c2:00.4``”h]”hŒ0000:c2:00.4”…”�”}”(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³hÇh´K„hj` h²hubhï)�”}”(hŒJThe ``amd_s2idle.py`` script will capture most of these artifacts for you.”h]”(hŒThe ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ``amd_s2idle.py``”h]”hŒ
amd_s2idle.py”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ5 script will capture most of these artifacts for you.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K†hj` h²hubeh}”(h]”Œ#spurious-s2idle-wakeups-from-a-gpio”ah ]”h"]”Œ#spurious s2idle wakeups from a gpio”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KNubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒs2idle PM debug messages”h]”hŒs2idle PM debug messages”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÅ h²hh³hÇh´K‰ubhï)�”}”(hX- During the s2idle flow on AMD systems, the ACPI LPS0 driver is responsible
to check all uPEP constraints. Failing uPEP constraints does not prevent
s0i3 entry. This means that if some constraints are not met, it is possible
the kernel may attempt to enter s2idle even if there are some known issues.”h]”hX- During the s2idle flow on AMD systems, the ACPI LPS0 driver is responsible
to check all uPEP constraints. Failing uPEP constraints does not prevent
s0i3 entry. This means that if some constraints are not met, it is possible
the kernel may attempt to enter s2idle even if there are some known issues.”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K‹hjÅ h²hubhï)�”}”(hX, To activate PM debugging, either specify ``pm_debug_messagess`` kernel
command-line option at boot or write to ``/sys/power/pm_debug_messages``.
Unmet constraints will be displayed in the kernel log and can be
viewed by logging tools that process kernel ring buffer like ``dmesg`` or
``journalctl``."”h]”(hŒ)To activate PM debugging, either specify ”…”�”}”(hjä h²hh³Nh´Nubj )�”}”(hŒ``pm_debug_messagess``”h]”hŒpm_debug_messagess”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubhŒ0 kernel
command-line option at boot or write to ”…”�”}”(hjä h²hh³Nh´Nubj )�”}”(hŒ ``/sys/power/pm_debug_messages``”h]”hŒ/sys/power/pm_debug_messages”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubhŒ€.
Unmet constraints will be displayed in the kernel log and can be
viewed by logging tools that process kernel ring buffer like ”…”�”}”(hjä h²hh³Nh´Nubj )�”}”(hŒ ``dmesg``”h]”hŒdmesg”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubhŒ or
”…”�”}”(hjä h²hh³Nh´Nubj )�”}”(hŒ``journalctl``”h]”hŒ
journalctl”…”�”}”(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³hÇh´K�hjÅ h²hubhï)�”}”(hX+ If the system freezes on entry/exit before these messages are flushed, a
useful debugging tactic is to unbind the ``amd_pmc`` driver to prevent
notification to the platform to start s0i3 entry. This will stop the
system from freezing on entry or exit and let you view all the failed
constraints. ::”h]”(hŒrIf the system freezes on entry/exit before these messages are flushed, a
useful debugging tactic is to unbind the ”…”�”}”(hj: h²hh³Nh´Nubj )�”}”(hŒ``amd_pmc``”h]”hŒamd_pmc”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj: ubhŒ« driver to prevent
notification to the platform to start s0i3 entry. This will stop the
system from freezing on entry or exit and let you view all the failed
constraints.”…”�”}”(hj: h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K–hjÅ h²hubj )�”}”(hŒDcd /sys/bus/platform/drivers/amd_pmc
ls | grep AMD | sudo tee unbind”h]”hŒDcd /sys/bus/platform/drivers/amd_pmc
ls | grep AMD | sudo tee unbind”…”�”}”hjZ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´KœhjÅ h²hubhï)�”}”(hŒSAfter doing this, run the suspend cycle and look specifically for errors around: ::”h]”hŒPAfter doing this, run the suspend cycle and look specifically for errors around:”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŸhjÅ h²hubj )�”}”(hŒHACPI: LPI: Constraint not met; min power state:%s current power state:%s”h]”hŒHACPI: LPI: Constraint not met; min power state:%s current power state:%s”…”�”}”hjv sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´K¡hjÅ h²hubeh}”(h]”Œs2idle-pm-debug-messages”ah ]”h"]”Œs2idle pm debug messages”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K‰ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ$Historical examples of s2idle issues”h]”hŒ$Historical examples of s2idle issues”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjŒ h²hh³hÇh´K¤ubhï)�”}”(hŒ˜To help understand the types of issues that can occur and how to debug them,
here are some historical examples of s2idle issues that have been resolved.”h]”hŒ˜To help understand the types of issues that can occur and how to debug them,
here are some historical examples of s2idle issues that have been resolved.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¦hjŒ h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCore offlining”h]”hŒCore offlining”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj« h²hh³hÇh´Kªubhï)�”}”(hXõ An end user had reported that taking a core offline would prevent the system
from properly entering s0i3. This was debugged using internal AMD tools
to capture and display a stream of metrics from the hardware showing what changed
when a core was offlined. It was determined that the hardware didn't get
notification the offline cores were in the deepest state, and so it prevented
CPU from going into the deepest state. The issue was debugged to a missing
command to put cores into C3 upon offline.”h]”hX÷ An end user had reported that taking a core offline would prevent the system
from properly entering s0i3. This was debugged using internal AMD tools
to capture and display a stream of metrics from the hardware showing what changed
when a core was offlined. It was determined that the hardware didn’t get
notification the offline cores were in the deepest state, and so it prevented
CPU from going into the deepest state. The issue was debugged to a missing
command to put cores into C3 upon offline.”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K«hj« h²hubhï)�”}”(hŒ‚`commit d6b88ce2eb9d2 ("ACPI: processor idle: Allow playing dead in C3 state") `_”h]”(jh )�”}”(hjÌ h]”hŒQcommit d6b88ce2eb9d2 (“ACPI: processor idle: Allow playing dead in C3 stateâ€�)”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒMcommit d6b88ce2eb9d2 ("ACPI: processor idle: Allow playing dead in C3 state")”jy Œ/https://git.kernel.org/torvalds/c/d6b88ce2eb9d2”uh1jg hjÊ ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒGcommit-d6b88ce2eb9d2-acpi-processor-idle-allow-playing-dead-in-c3-state”ah ]”h"]”ŒMcommit d6b88ce2eb9d2 ("acpi: processor idle: allow playing dead in c3 state")”ah$]”h&]”Œrefuri”jÝ uh1j{ jŠ KhjÊ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K³hj« h²hubeh}”(h]”Œcore-offlining”ah ]”h"]”Œcore offlining”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KªubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCorruption after resume”h]”hŒCorruption after resume”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjù h²hh³hÇh´K¶ubhï)�”}”(hX` A big problem that occurred with Rembrandt was that there was graphical
corruption after resume. This happened because of a misalignment of PSP
and driver responsibility. The PSP will save and restore DMCUB, but the
driver assumed it needed to reset DMCUB on resume.
This actually was a misalignment for earlier silicon as well, but was not
observed.”h]”hX` A big problem that occurred with Rembrandt was that there was graphical
corruption after resume. This happened because of a misalignment of PSP
and driver responsibility. The PSP will save and restore DMCUB, but the
driver assumed it needed to reset DMCUB on resume.
This actually was a misalignment for earlier silicon as well, but was not
observed.”…”�”}”(hj
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K·hjù h²hubhï)�”}”(hŒ†`commit 79d6b9351f086 ("drm/amd/display: Don't reinitialize DMCUB on s0ix resume") `_”h]”(jh )�”}”(hj h]”hŒWcommit 79d6b9351f086 (“drm/amd/display: Don’t reinitialize DMCUB on s0ix resumeâ€�)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒQcommit 79d6b9351f086 ("drm/amd/display: Don't reinitialize DMCUB on s0ix resume")”jy Œ/https://git.kernel.org/torvalds/c/79d6b9351f086”uh1jg hj ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒLcommit-79d6b9351f086-drm-amd-display-don-t-reinitialize-dmcub-on-s0ix-resume”ah ]”h"]”ŒQcommit 79d6b9351f086 ("drm/amd/display: don't reinitialize dmcub on s0ix resume")”ah$]”h&]”Œrefuri”j+ uh1j{ jŠ Khj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¾hjù h²hubeh}”(h]”Œcorruption-after-resume”ah ]”h"]”Œcorruption after resume”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´K¶ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒBack to Back suspends fail”h]”hŒBack to Back suspends fail”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjG h²hh³hÇh´KÁubhï)�”}”(hŒ·When using a wakeup source that triggers the IRQ to wakeup, a bug in the
pinctrl-amd driver may capture the wrong state of the IRQ and prevent the
system going back to sleep properly.”h]”hŒ·When using a wakeup source that triggers the IRQ to wakeup, a bug in the
pinctrl-amd driver may capture the wrong state of the IRQ and prevent the
system going back to sleep properly.”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÂhjG h²hubhï)�”}”(hŒ”`commit b8c824a869f22 ("pinctrl: amd: Don't save/restore interrupt status and wake status bits") `_”h]”(jh )�”}”(hjh h]”hŒecommit b8c824a869f22 (“pinctrl: amd: Don’t save/restore interrupt status and wake status bitsâ€�)”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ_commit b8c824a869f22 ("pinctrl: amd: Don't save/restore interrupt status and wake status bits")”jy Œ/https://git.kernel.org/torvalds/c/b8c824a869f22”uh1jg hjf ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒYcommit-b8c824a869f22-pinctrl-amd-don-t-save-restore-interrupt-status-and-wake-status-bits”ah ]”h"]”Œ_commit b8c824a869f22 ("pinctrl: amd: don't save/restore interrupt status and wake status bits")”ah$]”h&]”Œrefuri”jy uh1j{ jŠ Khjf ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÆhjG h²hubeh}”(h]”Œback-to-back-suspends-fail”ah ]”h"]”Œback to back suspends fail”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KÁubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ+Spurious timer based wakeup after 5 minutes”h]”hŒ+Spurious timer based wakeup after 5 minutes”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj• h²hh³hÇh´KÉubhï)�”}”(hŒ®The HPET was being used to program the wakeup source for the system, however
this was causing a spurious wakeup after 5 minutes. The correct alarm to use
was the ACPI alarm.”h]”hŒ®The HPET was being used to program the wakeup source for the system, however
this was causing a spurious wakeup after 5 minutes. The correct alarm to use
was the ACPI alarm.”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÊhj• h²hubhï)�”}”(hŒ…`commit 3d762e21d5637 ("rtc: cmos: Use ACPI alarm for non-Intel x86 systems too") `_”h]”(jh )�”}”(hj¶ h]”hŒTcommit 3d762e21d5637 (“rtc: cmos: Use ACPI alarm for non-Intel x86 systems tooâ€�)”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒPcommit 3d762e21d5637 ("rtc: cmos: Use ACPI alarm for non-Intel x86 systems too")”jy Œ/https://git.kernel.org/torvalds/c/3d762e21d5637”uh1jg hj´ ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒJcommit-3d762e21d5637-rtc-cmos-use-acpi-alarm-for-non-intel-x86-systems-too”ah ]”h"]”ŒPcommit 3d762e21d5637 ("rtc: cmos: use acpi alarm for non-intel x86 systems too")”ah$]”h&]”Œrefuri”jÇ uh1j{ jŠ Khj´ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÎhj• h²hubeh}”(h]”Œ+spurious-timer-based-wakeup-after-5-minutes”ah ]”h"]”Œ+spurious timer based wakeup after 5 minutes”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KÉubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDisk disappears after resume”h]”hŒDisk disappears after resume”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjã h²hh³hÇh´KÑubhï)�”}”(hŒñAfter resuming from s2idle, the NVME disk would disappear. This was due to the
BIOS not specifying the _DSD StorageD3Enable property. This caused the NVME
driver not to put the disk into the expected state at suspend and to fail
on resume.”h]”hŒñAfter resuming from s2idle, the NVME disk would disappear. This was due to the
BIOS not specifying the _DSD StorageD3Enable property. This caused the NVME
driver not to put the disk into the expected state at suspend and to fail
on resume.”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÒhjã h²hubhï)�”}”(hŒ`commit e79a10652bbd3 ("ACPI: x86: Force StorageD3Enable on more products") `_”h]”(jh )�”}”(hj h]”hŒNcommit e79a10652bbd3 (“ACPI: x86: Force StorageD3Enable on more productsâ€�)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒJcommit e79a10652bbd3 ("ACPI: x86: Force StorageD3Enable on more products")”jy Œ/https://git.kernel.org/torvalds/c/e79a10652bbd3”uh1jg hj ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒDcommit-e79a10652bbd3-acpi-x86-force-storaged3enable-on-more-products”ah ]”h"]”ŒJcommit e79a10652bbd3 ("acpi: x86: force storaged3enable on more products")”ah$]”h&]”Œrefuri”j uh1j{ jŠ Khj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K×hjã h²hubeh}”(h]”Œdisk-disappears-after-resume”ah ]”h"]”Œdisk disappears after resume”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KÑubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ
Spurious IRQ1”h]”hŒ
Spurious IRQ1”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj1 h²hh³hÇh´KÚubhï)�”}”(hŒƒA number of Renoir, Lucienne, Cezanne, & Barcelo platforms have a
platform firmware bug where IRQ1 is triggered during s0i3 resume.”h]”hŒƒA number of Renoir, Lucienne, Cezanne, & Barcelo platforms have a
platform firmware bug where IRQ1 is triggered during s0i3 resume.”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÛhj1 h²hubhï)�”}”(hŒsThis was fixed in the platform firmware, but a number of systems didn't
receive any more platform firmware updates.”h]”hŒuThis was fixed in the platform firmware, but a number of systems didn’t
receive any more platform firmware updates.”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÞhj1 h²hubhï)�”}”(hŒƒ`commit 8e60615e89321 ("platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN") `_”h]”(jh )�”}”(hj` h]”hŒRcommit 8e60615e89321 (“platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZNâ€�)”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒNcommit 8e60615e89321 ("platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN")”jy Œ/https://git.kernel.org/torvalds/c/8e60615e89321”uh1jg hj^ ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒHcommit-8e60615e89321-platform-x86-amd-pmc-disable-irq1-wakeup-for-rn-czn”ah ]”h"]”ŒNcommit 8e60615e89321 ("platform/x86/amd: pmc: disable irq1 wakeup for rn/czn")”ah$]”h&]”Œrefuri”jq uh1j{ jŠ Khj^ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Káhj1 h²hubeh}”(h]”Œ
spurious-irq1”ah ]”h"]”Œ
spurious irq1”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KÚubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒHardware timeout”h]”hŒHardware timeout”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj� h²hh³hÇh´Käubhï)�”}”(hŒùThe hardware performs many actions besides accepting the values from
amd-pmc driver. As the communication path with the hardware is a mailbox,
it's possible that it might not respond quickly enough.
This issue manifested as a failure to suspend: ::”h]”hŒøThe hardware performs many actions besides accepting the values from
amd-pmc driver. As the communication path with the hardware is a mailbox,
it’s possible that it might not respond quickly enough.
This issue manifested as a failure to suspend:”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kåhj� h²hubj )�”}”(hŒ„PM: dpm_run_callback(): acpi_subsys_suspend_noirq+0x0/0x50 returns -110
amd_pmc AMDI0005:00: PM: failed to suspend noirq: error -110”h]”hŒ„PM: dpm_run_callback(): acpi_subsys_suspend_noirq+0x0/0x50 returns -110
amd_pmc AMDI0005:00: PM: failed to suspend noirq: error -110”…”�”}”hj¬ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Kêhj� h²hubhï)�”}”(hŒKThe timing problem was identified by comparing the values of the idle mask.”h]”hŒKThe timing problem was identified by comparing the values of the idle mask.”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kíhj� h²hubhï)�”}”(hŒ‹`commit 3c3c8e88c8712 ("platform/x86: amd-pmc: Increase the response register timeout") `_”h]”(jh )�”}”(hjÊ h]”hŒZcommit 3c3c8e88c8712 (“platform/x86: amd-pmc: Increase the response register timeoutâ€�)”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒVcommit 3c3c8e88c8712 ("platform/x86: amd-pmc: Increase the response register timeout")”jy Œ/https://git.kernel.org/torvalds/c/3c3c8e88c8712”uh1jg hjÈ ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒPcommit-3c3c8e88c8712-platform-x86-amd-pmc-increase-the-response-register-timeout”ah ]”h"]”ŒVcommit 3c3c8e88c8712 ("platform/x86: amd-pmc: increase the response register timeout")”ah$]”h&]”Œrefuri”jÛ uh1j{ jŠ KhjÈ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kïhj� h²hubeh}”(h]”Œhardware-timeout”ah ]”h"]”Œhardware timeout”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´KäubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ2Failed to reach hardware sleep state with panel on”h]”hŒ2Failed to reach hardware sleep state with panel on”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj÷ h²hh³hÇh´Kòubhï)�”}”(hŒ�On some Strix systems certain panels were observed to block the system from
entering a hardware sleep state if the internal panel was on during the sequence.”h]”hŒ�On some Strix systems certain panels were observed to block the system from
entering a hardware sleep state if the internal panel was on during the sequence.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kóhj÷ h²hubhï)�”}”(hŒªEven though the panel got turned off during suspend it exposed a timing problem
where an interrupt caused the display hardware to wake up and block low power
state entry.”h]”hŒªEven though the panel got turned off during suspend it exposed a timing problem
where an interrupt caused the display hardware to wake up and block low power
state entry.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Köhj÷ h²hubhï)�”}”(hŒ�`commit 40b8c14936bd2 ("drm/amd/display: Disable unneeded hpd interrupts during dm_init") `_”h]”(jh )�”}”(hj& h]”hŒ\commit 40b8c14936bd2 (“drm/amd/display: Disable unneeded hpd interrupts during dm_initâ€�)”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒXcommit 40b8c14936bd2 ("drm/amd/display: Disable unneeded hpd interrupts during dm_init")”jy Œ/https://git.kernel.org/torvalds/c/40b8c14936bd2”uh1jg hj$ ubj| )�”}”(hŒ2 ”h]”h}”(h]”ŒScommit-40b8c14936bd2-drm-amd-display-disable-unneeded-hpd-interrupts-during-dm-init”ah ]”h"]”ŒXcommit 40b8c14936bd2 ("drm/amd/display: disable unneeded hpd interrupts during dm_init")”ah$]”h&]”Œrefuri”j7 uh1j{ jŠ Khj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kúhj÷ h²hubeh}”(h]”Œ2failed-to-reach-hardware-sleep-state-with-panel-on”ah ]”h"]”Œ2failed to reach hardware sleep state with panel on”ah$]”h&]”uh1hÈhjŒ h²hh³hÇh´Kòubeh}”(h]”Œ$historical-examples-of-s2idle-issues”ah ]”h"]”Œ$historical examples of s2idle issues”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K¤ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Runtime power consumption issues”h]”hŒ Runtime power consumption issues”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj[ h²hh³hÇh´Kýubhï)�”}”(hŒõRuntime power consumption is influenced by many factors, including but not
limited to the configuration of the PCIe Active State Power Management (ASPM),
the display brightness, the EPP policy of the CPU, and the power management
of the devices.”h]”hŒõRuntime power consumption is influenced by many factors, including but not
limited to the configuration of the PCIe Active State Power Management (ASPM),
the display brightness, the EPP policy of the CPU, and the power management
of the devices.”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kÿhj[ h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒASPM”h]”hŒASPM”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjz h²hh³hÇh´Mubhï)�”}”(hX0 For the best runtime power consumption, ASPM should be programmed as intended
by the BIOS from the hardware vendor. To accomplish this the Linux kernel
should be compiled with ``CONFIG_PCIEASPM_DEFAULT`` set to ``y`` and the
sysfs file ``/sys/module/pcie_aspm/parameters/policy`` should not be modified.”h]”(hŒ±For the best runtime power consumption, ASPM should be programmed as intended
by the BIOS from the hardware vendor. To accomplish this the Linux kernel
should be compiled with ”…”�”}”(hj‹ h²hh³Nh´Nubj )�”}”(hŒ``CONFIG_PCIEASPM_DEFAULT``”h]”hŒCONFIG_PCIEASPM_DEFAULT”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubhŒ set to ”…”�”}”(hj‹ h²hh³Nh´Nubj )�”}”(hŒ``y``”h]”hŒy”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubhŒ and the
sysfs file ”…”�”}”(hj‹ h²hh³Nh´Nubj )�”}”(hŒ+``/sys/module/pcie_aspm/parameters/policy``”h]”hŒ'/sys/module/pcie_aspm/parameters/policy”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ ubhŒ should not be modified.”…”�”}”(hj‹ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjz h²hubhï)�”}”(hŒ{Most notably, if L1.2 is not configured properly for any devices, the SoC
will not be able to enter the deepest idle state.”h]”hŒ{Most notably, if L1.2 is not configured properly for any devices, the SoC
will not be able to enter the deepest idle state.”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjz h²hubeh}”(h]”Œaspm”ah ]”h"]”Œaspm”ah$]”h&]”uh1hÈhj[ h²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ
EPP Policy”h]”hŒ
EPP Policy”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjå h²hh³hÇh´Mubhï)�”}”(hŒÔThe ``energy_performance_preference`` sysfs file can be used to set a bias
of efficiency or performance for a CPU. This has a direct relationship on
the battery life when more heavily biased towards performance.”h]”(hŒThe ”…”�”}”(hjö h²hh³Nh´Nubj )�”}”(hŒ!``energy_performance_preference``”h]”hŒenergy_performance_preference”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö ubhŒ¯ sysfs file can be used to set a bias
of efficiency or performance for a CPU. This has a direct relationship on
the battery life when more heavily biased towards performance.”…”�”}”(hjö h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjå h²hubeh}”(h]”Œ
epp-policy”ah ]”h"]”Œ
epp policy”ah$]”h&]”uh1hÈhj[ h²hh³hÇh´Mubeh}”(h]”Œ runtime-power-consumption-issues”ah ]”h"]”Œ runtime power consumption issues”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KýubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒBIOS debug messages”h]”hŒBIOS debug messages”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj& h²hh³hÇh´Mubhï)�”}”(hŒÛMost OEM machines don't have a serial UART for outputting kernel or BIOS
debug messages. However BIOS debug messages are useful for understanding
both BIOS bugs and bugs with the Linux kernel drivers that call BIOS AML.”h]”hŒÝMost OEM machines don’t have a serial UART for outputting kernel or BIOS
debug messages. However BIOS debug messages are useful for understanding
both BIOS bugs and bugs with the Linux kernel drivers that call BIOS AML.”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj& h²hubhï)�”}”(hŒªAs the BIOS on most OEM AMD systems are based off an AMD reference BIOS,
the infrastructure used for exporting debugging messages is often the same
as AMD reference BIOS.”h]”hŒªAs the BIOS on most OEM AMD systems are based off an AMD reference BIOS,
the infrastructure used for exporting debugging messages is often the same
as AMD reference BIOS.”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj& h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒManually Parsing”h]”hŒManually Parsing”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjS h²hh³hÇh´M!ubhï)�”}”(hŒãThere is generally an ACPI method ``\M460`` that different paths of the AML
will call to emit a message to the BIOS serial log. This method takes
7 arguments, with the first being a string and the rest being optional
integers::”h]”(hŒ"There is generally an ACPI method ”…”�”}”(hjd h²hh³Nh´Nubj )�”}”(hŒ ``\M460``”h]”hŒ\M460”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjd ubhŒ· that different paths of the AML
will call to emit a message to the BIOS serial log. This method takes
7 arguments, with the first being a string and the rest being optional
integers:”…”�”}”(hjd h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M"hjS h²hubj )�”}”(hŒMethod (M460, 7, Serialized)”h]”hŒMethod (M460, 7, Serialized)”…”�”}”hj„ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´M'hjS h²hubhï)�”}”(hŒKHere is an example of a string that BIOS AML may call out using ``\M460``::”h]”(hŒ@Here is an example of a string that BIOS AML may call out using ”…”�”}”(hj’ h²hh³Nh´Nubj )�”}”(hŒ ``\M460``”h]”hŒ\M460”…”�”}”(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³hÇh´M)hjS h²hubj )�”}”(hŒdM460 (" OEM-ASL-PCIe Address (0x%X)._REG (%d %d) PCSA = %d\n", DADR, Arg0, Arg1, PCSA, Zero, Zero)”h]”hŒdM460 (" OEM-ASL-PCIe Address (0x%X)._REG (%d %d) PCSA = %d\n", DADR, Arg0, Arg1, PCSA, Zero, Zero)”…”�”}”hj² sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´M+hjS h²hubhï)�”}”(hXg Normally when executed, the ``\M460`` method would populate the additional
arguments into the string. In order to get these messages from the Linux
kernel a hook has been added into ACPICA that can capture the *arguments*
sent to ``\M460`` and print them to the kernel ring buffer.
For example the following message could be emitted into kernel ring buffer::”h]”(hŒNormally when executed, the ”…”�”}”(hjÀ h²hh³Nh´Nubj )�”}”(hŒ ``\M460``”h]”hŒ\M460”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ ubhŒ® method would populate the additional
arguments into the string. In order to get these messages from the Linux
kernel a hook has been added into ACPICA that can capture the ”…”�”}”(hjÀ h²hh³Nh´NubjF )�”}”(hŒ*arguments*”h]”hŒ arguments”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jE hjÀ ubhŒ
sent to ”…”�”}”(hjÀ h²hh³Nh´Nubj )�”}”(hŒ ``\M460``”h]”hŒ\M460”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ ubhŒv and print them to the kernel ring buffer.
For example the following message could be emitted into kernel ring buffer:”…”�”}”(hjÀ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M-hjS h²hubj )�”}”(hŒxextrace-0174 ex_trace_args : " OEM-ASL-PCIe Address (0x%X)._REG (%d %d) PCSA = %d\n", ec106000, 2, 1, 1, 0, 0”h]”hŒxextrace-0174 ex_trace_args : " OEM-ASL-PCIe Address (0x%X)._REG (%d %d) PCSA = %d\n", ec106000, 2, 1, 1, 0, 0”…”�”}”hj
sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´M3hjS h²hubhï)�”}”(hŒÊIn order to get these messages, you need to compile with ``CONFIG_ACPI_DEBUG``
and then turn on the following ACPICA tracing parameters.
This can be done either on the kernel command line or at runtime:”h]”(hŒ9In order to get these messages, you need to compile with ”…”�”}”(hj
h²hh³Nh´Nubj )�”}”(hŒ``CONFIG_ACPI_DEBUG``”h]”hŒCONFIG_ACPI_DEBUG”…”�”}”(hj
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj
ubhŒ|
and then turn on the following ACPICA tracing parameters.
This can be done either on the kernel command line or at runtime:”…”�”}”(hj
h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M5hjS h²hubhŒbullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ ``acpi.trace_method_name=\M460``”h]”hï)�”}”(hj;
h]”j )�”}”(hŒ ``acpi.trace_method_name=\M460``”h]”hŒacpi.trace_method_name=\M460”…”�”}”(hj@
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=
ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M9hj9
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj4
h²hh³hÇh´Nubj8
)�”}”(hŒ``acpi.trace_state=method``
”h]”hï)�”}”(hŒ``acpi.trace_state=method``”h]”j )�”}”(hj`
h]”hŒacpi.trace_state=method”…”�”}”(hjb
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^
ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M:hjZ
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj4
h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j uh1j2
h³hÇh´M9hjS h²hubhï)�”}”(hŒÖNOTE: These can be very noisy at bootup. If you turn these parameters on
the kernel command, please also consider turning up ``CONFIG_LOG_BUF_SHIFT``
to a larger size such as 17 to avoid losing early boot messages.”h]”(hŒ}NOTE: These can be very noisy at bootup. If you turn these parameters on
the kernel command, please also consider turning up ”…”�”}”(hj‚
h²hh³Nh´Nubj )�”}”(hŒ``CONFIG_LOG_BUF_SHIFT``”h]”hŒCONFIG_LOG_BUF_SHIFT”…”�”}”(hjŠ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚
ubhŒA
to a larger size such as 17 to avoid losing early boot messages.”…”�”}”(hj‚
h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M<hjS h²hubeh}”(h]”Œmanually-parsing”ah ]”h"]”Œmanually parsing”ah$]”h&]”uh1hÈhj& h²hh³hÇh´M!ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTool assisted Parsing”h]”hŒTool assisted Parsing”…”�”}”(hj
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjª
h²hh³hÇh´MAubhï)�”}”(hX As mentioned above, parsing by hand can be tedious, especially with a lot of
messages. To help with this, a tool has been created at
`amd-debug-tools `_
to help parse the messages.”h]”(hŒ†As mentioned above, parsing by hand can be tedious, especially with a lot of
messages. To help with this, a tool has been created at
”…”�”}”(hj»
h²hh³Nh´Nubjh )�”}”(hŒg`amd-debug-tools `_”h]”hŒamd-debug-tools”…”�”}”(hjÃ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œamd-debug-tools”jy ŒRhttps://git.kernel.org/pub/scm/linux/kernel/git/superm1/amd-debug-tools.git/about/”uh1jg hj»
ubj| )�”}”(hŒU ”h]”h}”(h]”Œid1”ah ]”h"]”h$]”Œamd-debug-tools”ah&]”Œrefuri”jÓ
uh1j{ jŠ Khj»
ubhŒ
to help parse the messages.”…”�”}”(hj»
h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MBhjª
h²hubeh}”(h]”Œtool-assisted-parsing”ah ]”h"]”Œtool assisted parsing”ah$]”h&]”uh1hÈhj& h²hh³hÇh´MAubeh}”(h]”Œbios-debug-messages”ah ]”h"]”Œbios debug messages”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRandom reboot issues”h]”hŒRandom reboot issues”…”�”}”(hjþ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjû
h²hh³hÇh´MHubhï)�”}”(hŒWhen a random reboot occurs, the high-level reason for the reboot is stored
in a register that will persist onto the next boot.”h]”hŒWhen a random reboot occurs, the high-level reason for the reboot is stored
in a register that will persist onto the next boot.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MJhjû
h²hubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ There are 6 classes of reasons for the reboot:
* Software induced
* Power state transition
* Pin induced
* Hardware induced
* Remote reset
* Internal CPU event
”h]”(hŒterm”“”)�”}”(hŒ.There are 6 classes of reasons for the reboot:”h]”hŒ.There are 6 classes of reasons for the reboot:”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j% h³hÇh´MShj! ubhŒ
definition”“”)�”}”(hhh]”j3
)�”}”(hhh]”(j8
)�”}”(hŒSoftware induced”h]”hï)�”}”(hj? h]”hŒSoftware induced”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MNhj= ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubj8
)�”}”(hŒPower state transition”h]”hï)�”}”(hjV h]”hŒPower state transition”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MOhjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubj8
)�”}”(hŒPin induced”h]”hï)�”}”(hjm h]”hŒPin induced”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MPhjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubj8
)�”}”(hŒHardware induced”h]”hï)�”}”(hj„ h]”hŒHardware induced”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MQhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubj8
)�”}”(hŒRemote reset”h]”hï)�”}”(hj› h]”hŒRemote reset”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MRhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubj8
)�”}”(hŒInternal CPU event
”h]”hï)�”}”(hŒInternal CPU event”h]”hŒInternal CPU event”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MShj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7
hj: ubeh}”(h]”h ]”h"]”h$]”h&]”j�
j uh1j2
h³hÇh´MNhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j5 hj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÇh´MShj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû
h²hh³Nh´NubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jê hjç ubjë )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jê hjç ubjë )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jê hjç ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hï)�”}”(hŒBit”h]”hŒBit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hï)�”}”(hŒType”h]”hŒType”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hï)�”}”(hŒReason”h]”hŒReason”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j
hjç ubhŒtbody”“”)�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubj )�”}”(hhh]”hï)�”}”(hŒPin”h]”hŒPin”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubj )�”}”(hhh]”hï)�”}”(hŒ&thermal pin BP_THERMTRIP_L was tripped”h]”hŒ&thermal pin BP_THERMTRIP_L was tripped”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubj )�”}”(hhh]”hï)�”}”(hŒPin”h]”hŒPin”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubj )�”}”(hhh]”hï)�”}”(hŒ&power button was pressed for 4 seconds”h]”hŒ&power button was pressed for 4 seconds”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ2”h]”hŒ2”…”�”}”(hj
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj
ubj )�”}”(hhh]”hï)�”}”(hŒPin”h]”hŒPin”…”�”}”(hj%
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj
ubj )�”}”(hhh]”hï)�”}”(hŒshutdown pin was tripped”h]”hŒshutdown pin was tripped”…”�”}”(hj<
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj9
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj
ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ4”h]”hŒ4”…”�”}”(hj\
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjY
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjV
ubj )�”}”(hhh]”hï)�”}”(hŒRemote”h]”hŒRemote”…”�”}”(hjs
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjp
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjV
ubj )�”}”(hhh]”hï)�”}”(hŒ)remote ASF power off command was received”h]”hŒ)remote ASF power off command was received”…”�”}”(hjŠ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj‡
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjV
ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ9”h]”hŒ9”…”�”}”(hjª
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj§
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤
ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hjÁ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj¾
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤
ubj )�”}”(hhh]”hï)�”}”(hŒ&internal CPU thermal limit was tripped”h]”hŒ&internal CPU thermal limit was tripped”…”�”}”(hjØ
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÕ
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤
ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ16”h]”hŒ16”…”�”}”(hjø
h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjõ
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò
ubj )�”}”(hhh]”hï)�”}”(hŒPin”h]”hŒPin”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò
ubj )�”}”(hhh]”hï)�”}”(hŒ)system reset pin BP_SYS_RST_L was tripped”h]”hŒ)system reset pin BP_SYS_RST_L was tripped”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj# ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò
ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ17”h]”hŒ17”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ ubj )�”}”(hhh]”hï)�”}”(hŒSoftware”h]”hŒSoftware”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ ubj )�”}”(hhh]”hï)�”}”(hŒsoftware issued PCI reset”h]”hŒsoftware issued PCI reset”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ18”h]”hŒ18”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ ubj )�”}”(hhh]”hï)�”}”(hŒSoftware”h]”hŒSoftware”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ ubj )�”}”(hhh]”hï)�”}”(hŒ2software wrote 0x4 to reset control register 0xCF9”h]”hŒ2software wrote 0x4 to reset control register 0xCF9”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ19”h]”hŒ19”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ ubj )�”}”(hhh]”hï)�”}”(hŒSoftware”h]”hŒSoftware”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ ubj )�”}”(hhh]”hï)�”}”(hŒ2software wrote 0x6 to reset control register 0xCF9”h]”hŒ2software wrote 0x6 to reset control register 0xCF9”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj
ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ20”h]”hŒ20”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj* ubj )�”}”(hhh]”hï)�”}”(hŒSoftware”h]”hŒSoftware”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj* ubj )�”}”(hhh]”hï)�”}”(hŒ2software wrote 0xE to reset control register 0xCF9”h]”hŒ2software wrote 0xE to reset control register 0xCF9”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj* ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ21”h]”hŒ21”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx ubj )�”}”(hhh]”hï)�”}”(hŒ
ACPI-state”h]”hŒ
ACPI-state”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx ubj )�”}”(hhh]”hï)�”}”(hŒ$ACPI power state transition occurred”h]”hŒ$ACPI power state transition occurred”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ22”h]”hŒ22”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ ubj )�”}”(hhh]”hï)�”}”(hŒPin”h]”hŒPin”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ ubj )�”}”(hhh]”hï)�”}”(hŒ'keyboard reset pin KB_RST_L was tripped”h]”hŒ'keyboard reset pin KB_RST_L was tripped”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ23”h]”hŒ23”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hï)�”}”(hŒ$internal CPU shutdown event occurred”h]”hŒ$internal CPU shutdown event occurred”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ24”h]”hŒ24”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khje ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb ubj )�”}”(hhh]”hï)�”}”(hŒHardware”h]”hŒHardware”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb ubj )�”}”(hhh]”hï)�”}”(hŒ6system failed to boot before failed boot timer expired”h]”hŒ6system failed to boot before failed boot timer expired”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ25”h]”hŒ25”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj° ubj )�”}”(hhh]”hï)�”}”(hŒHardware”h]”hŒHardware”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj° ubj )�”}”(hhh]”hï)�”}”(hŒhardware watchdog timer expired”h]”hŒhardware watchdog timer expired”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj° ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ26”h]”hŒ26”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubj )�”}”(hhh]”hï)�”}”(hŒRemote”h]”hŒRemote”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubj )�”}”(hhh]”hï)�”}”(hŒ%remote ASF reset command was received”h]”hŒ%remote ASF reset command was received”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ27”h]”hŒ27”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL ubj )�”}”(hhh]”hï)�”}”(hŒ:an uncorrected error caused a data fabric sync flood event”h]”hŒ:an uncorrected error caused a data fabric sync flood event”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ub• j )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ29”h]”hŒ29”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš ubj )�”}”(hhh]”hï)�”}”(hŒ'FCH and MP1 failed warm reset handshake”h]”hŒ'FCH and MP1 failed warm reset handshake”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ30”h]”hŒ30”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè ubj )�”}”(hhh]”hï)�”}”(hŒa parity error occurred”h]”hŒa parity error occurred”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubj )�”}”(hhh]”(j )�”}”(hhh]”hï)�”}”(hŒ31”h]”hŒ31”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj9 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6 ubj )�”}”(hhh]”hï)�”}”(hŒInternal”h]”hŒInternal”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6 ubj )�”}”(hhh]”hï)�”}”(hŒ$a software sync flood event occurred”h]”hŒ$a software sync flood event occurred”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hji ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jg hjç ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jå hjâ ubah}”(h]”h ]”h"]”h$]”h&]”Œalign”Œleft”uh1jà hjû
h²hh³hÇh´Nubhï)�”}”(hŒ¯This information is read by the kernel at bootup and printed into
the syslog. When a random reboot occurs this message can be helpful
to determine the next component to debug.”h]”hŒ¯This information is read by the kernel at bootup and printed into
the syslog. When a random reboot occurs this message can be helpful
to determine the next component to debug.”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mnhjû
h²hubhï)�”}”(hŒ\For example, if bit 19 was set, you will get a message like this in the log on
next bootup::”h]”hŒ[For example, if bit 19 was set, you will get a message like this in the log on
next bootup:”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mrhjû
h²hubj )�”}”(hŒfx86/amd: Previous system reset reason [0x00080000]: software wrote 0x6 to reset control register 0xCF9”h]”hŒfx86/amd: Previous system reset reason [0x00080000]: software wrote 0x6 to reset control register 0xCF9”…”�”}”hjµ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j h³hÇh´Muhjû
h²hubeh}”(h]”Œrandom-reboot-issues”ah ]”h"]”Œrandom reboot issues”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MHubeh}”(h]”Œdebugging-amd-zen-systems”ah ]”h"]”Œdebugging amd zen systems”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”j Œ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 jK jH jÊ jÇ j† jƒ j· j´ j] jZ j j¿ j‰ j† jX jU jö jó jç jä jD jA j5 j2 j’ j� jƒ j€ jà jÝ jÑ jÎ j. j+ j j jŠ j‡ j{ jx jô jñ jå jâ jP jM jA j> j# j jâ jß j j jø
jõ
j§
j¤
jð
jí
jÈ jÅ uŒ nametypes”}”(jÐ ‰j ‰jK ‰jÊ ‰j† ˆj· ˆj] ‰j ‰j‰ ‰jX ‰jö ‰jç ˆjD ‰j5 ˆj’ ‰jƒ ˆjà ‰jÑ ˆj. ‰j ˆjŠ ‰j{ ˆjô ‰jå ˆjP ‰jA ˆj# ‰jâ ‰j ‰jø
‰j§
‰jð
‰jÈ ‰uh}”(jÍ hÊj hÝjH j jÇ jN jƒ j} j´ j® jZ jÍ j¿ j` j† jÅ jU jŒ jó j« jä jÞ jA jù j2 j, j� jG j€ jz jÝ j• jÎ jÈ j+ jã j j j‡ j1 jx jr jñ j� jâ jÜ jM j÷ j> j8 j j[ jß jz j jå jõ
j& j¤
jS jí
jª
jÚ
jÔ
jÅ 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”“”}”j Ks…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hï)�”}”(hŒ2Duplicate explicit target name: "amd-debug-tools".”h]”hŒ6Duplicate explicit target name: “amd-debug-toolsâ€�.”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjY ubah}”(h]”h ]”h"]”h$]”h&]”jÚ
aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1jW hjª
h²hh³hÇh´MEubaŒtransform_messages”]”Œtransformer”NŒinclude_log”]”Œ
decoration”Nh²hub.