€•›ðŒ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/core-api/real-time/kernel-configuration”Œ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/core-api/real-time/kernel-configuration”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/it_IT/core-api/real-time/kernel-configuration”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/ja_JP/core-api/real-time/kernel-configuration”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/ko_KR/core-api/real-time/kernel-configuration”Œ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/core-api/real-time/kernel-configuration”Œ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/core-api/real-time/kernel-configuration”Œ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³ŒU/var/lib/git/docbuild/linux/Documentation/core-api/real-time/kernel-configuration.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒReal-Time Kernel configuration”h]”hŒReal-Time Kernel configuration”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒtopic”“”)�”}”(hŒTable of Contents ”h]”(hÎ)�”}”(hŒTable of Contents”h]”hŒTable of Contents”…”�”}”(hhãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhßh³hÇh´K ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hhh]”hŒ paragraph”“”)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒ Introduction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œ introduction”uh1jhhýubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhhøubah}”(h]”h ]”h"]”h$]”h&]”uh1höhhóubh÷)�”}”(hhh]”(hü)�”}”(hhh]”j)�”}”(hhh]”hŒConfiguration options”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œconfiguration-options”uh1jhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjubhò)�”}”(hhh]”(h÷)�”}”(hhh]”(hü)�”}”(hhh]”j)�”}”(hhh]”hŒCPU frequency governors”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œcpu-frequency-governors”uh1jhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj=ubhò)�”}”(hhh]”(h÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”hŒliteral”“”)�”}”(hŒ``CONFIG_CPU_FREQ``”h]”hŒCONFIG_CPU_FREQ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjbubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-cpu-freq”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjYubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ+``CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE``”h]”hŒ'CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhj�ubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œ'config-cpu-freq-default-gov-performance”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjYubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”hŒ'Non-performance CPU frequency governors”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œ'non-performance-cpu-frequency-governors”uh1jhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1hñhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_CPU_IDLE``”h]”hŒCONFIG_CPU_IDLE”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjêubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-cpu-idle”uh1jhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_DRM``”h]”hŒ CONFIG_DRM”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œ config-drm”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_EFI_DISABLE_RUNTIME``”h]”hŒCONFIG_EFI_DISABLE_RUNTIME”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´NhjBubah}”(h]”Œid12”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-efi-disable-runtime”uh1jhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”(jf)�”}”(hŒ``CONFIG_NO_HZ``”h]”hŒ CONFIG_NO_HZ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´NhjnubhŒ / ”…”�”}”(hjnh²hh³Nh´Nubjf)�”}”(hŒ``CONFIG_NO_HZ_FULL``”h]”hŒCONFIG_NO_HZ_FULL”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjnubeh}”(h]”Œid13”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-no-hz-config-no-hz-full”uh1jhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_PREEMPT_RT``”h]”hŒCONFIG_PREEMPT_RT”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhj¬ubah}”(h]”Œid14”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-preempt-rt”uh1jhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubh÷)�”}”(hhh]”(hü)�”}”(hhh]”j)�”}”(hhh]”(jf)�”}”(hŒ``CONFIG_TRACING``”h]”hŒCONFIG_TRACING”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´NhjØubhŒ (and tracing options)”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”Œid15”ah ]”h"]”h$]”h&]”Œrefid”Œ"config-tracing-and-tracing-options”uh1jhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjÒubhò)�”}”(hhh]”h÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”(jf)�”}”(hŒ``CONFIG_IRQSOFF_TRACER``”h]”hŒCONFIG_IRQSOFF_TRACER”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´NhjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubjf)�”}”(hŒ``CONFIG_PREEMPT_TRACER``”h]”hŒCONFIG_PREEMPT_TRACER”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjubeh}”(h]”Œid16”ah ]”h"]”h$]”h&]”Œrefid”Œ/config-irqsoff-tracer-and-config-preempt-tracer”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hñhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1höhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hñhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1höhhóubh÷)�”}”(hhh]”(hü)�”}”(hhh]”j)�”}”(hhh]”hŒKernel Debug Options”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”Œid17”ah ]”h"]”h$]”h&]”Œrefid”Œkernel-debug-options”uh1jhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjUubhò)�”}”(hhh]”(h÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_DEBUG_ATOMIC_SLEEP``”h]”hŒCONFIG_DEBUG_ATOMIC_SLEEP”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjzubah}”(h]”Œid18”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-debug-atomic-sleep”uh1jhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”(jf)�”}”(hŒ``CONFIG_DEBUG_BUGVERBOSE``”h]”hŒCONFIG_DEBUG_BUGVERBOSE”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhj¦ubhŒ and ”…”�”}”(hj¦h²hh³Nh´Nubjf)�”}”(hŒ``CONFIG_DEBUG_INFO*``”h]”hŒCONFIG_DEBUG_INFO*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhj¦ubeh}”(h]”Œid19”ah ]”h"]”h$]”h&]”Œrefid”Œ-config-debug-bugverbose-and-config-debug-info”uh1jhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_DEBUG_FS``”h]”hŒCONFIG_DEBUG_FS”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjäubah}”(h]”Œid20”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-debug-fs”uh1jhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_DEBUG_KERNEL``”h]”hŒCONFIG_DEBUG_KERNEL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjubah}”(h]”Œid21”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-debug-kernel”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_LOCKUP_DETECTOR``”h]”hŒCONFIG_LOCKUP_DETECTOR”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhj<ubah}”(h]”Œid22”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-lockup-detector”uh1jhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”jf)�”}”(hŒ``CONFIG_PROVE_LOCKING``”h]”hŒCONFIG_PROVE_LOCKING”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jeh³Nh´Nhjhubah}”(h]”Œid23”ah ]”h"]”h$]”h&]”Œrefid”Œconfig-prove-locking”uh1jhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1hñhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1höhhóubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”hŒSummary”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid24”ah ]”h"]”h$]”h&]”Œrefid”Œsummary”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1höhhóubh÷)�”}”(hhh]”hü)�”}”(hhh]”j)�”}”(hhh]”hŒ References”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”Œid25”ah ]”h"]”h$]”h&]”Œrefid”Œ references”uh1jhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhhóubeh}”(h]”h ]”h"]”h$]”h&]”uh1hñhhßh²hh³Nh´Nubeh}”(h]”Œtable-of-contents”ah ]”(Œcontents”Œlocal”eh"]”Œtable of contents”ah$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”j uh1hÍhjîh²hh³hÇh´K ubhü)�”}”(hŒ—This document lists the kernel configuration options that might affect a real-time kernel's worst-case latency. It is intended for system integrators.”h]”hŒ™This document lists the kernel configuration options that might affect a real-time kernel’s worst-case latency. It is intended for system integrators.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Khjîh²hubeh}”(h]”jah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒConfiguration options”h]”hŒConfiguration options”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿj-uh1hÍhjh²hh³hÇh´Kubh¶)�”}”(hŒ=Please keep the configuration listings alphabetically ordered”h]”hŒ=Please keep the configuration listings alphabetically ordered”…”�”}”hj&sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhjh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCPU frequency governors”h]”hŒCPU frequency governors”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿjLuh1hÍhj4h²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hjih]”jf)�”}”(hjih]”hŒCONFIG_CPU_FREQ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjHubah}”(h]”h ]”h"]”h$]”h&]”jÿjwuh1hÍhjEh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjeh³hÇh´KubhŒ field_body”“”)�”}”(hŒenabled”h]”hü)�”}”(hj|h]”hŒenabled”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Khjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Khj`h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj—h³hÇh´Kubjy)�”}”(hŒ*high* ”h]”hü)�”}”(hŒ*high*”h]”hŒemphasis”“”)�”}”(hj®h]”hŒhigh”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Khj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Khj`h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjEh²hh³hÇh´Kubhü)�”}”(hXThe CPU frequency scaling subsystem ensures that the processor can operate at its maximum supported frequency. While, in general, bootloaders are tasked with setting the CPU clock to the highest speed on boot, some do not. It is thus desirable to keep this option enabled.”h]”hXThe CPU frequency scaling subsystem ensures that the processor can operate at its maximum supported frequency. While, in general, bootloaders are tasked with setting the CPU clock to the highest speed on boot, some do not. It is thus desirable to keep this option enabled.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KhjEh²hubhŒcaution”“”)�”}”(hŒ•A real-time kernel is not about being "as fast as possible", however real-time requirements may demand that the CPU is clocked at a particular speed.”h]”hü)�”}”(hŒ•A real-time kernel is not about being "as fast as possible", however real-time requirements may demand that the CPU is clocked at a particular speed.”h]”hŒ™A real-time kernel is not about being “as fast as possibleâ€�, however real-time requirements may demand that the CPU is clocked at a particular speed.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K&hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEh²hh³hÇh´Nubeh}”(h]”j}ah ]”h"]”Œconfig_cpu_freq”ah$]”h&]”uh1hÈhj4h²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hj•h]”jf)�”}”(hj•h]”hŒ'CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj ubah}”(h]”h ]”h"]”h$]”h&]”jÿj£uh1hÍhjh²hh³hÇh´K+ubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj"h³hÇh´Kubjy)�”}”(hŒenabled”h]”hü)�”}”(hj5h]”hŒenabled”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K-hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K-hjh²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjPh³hÇh´Kubjy)�”}”(hŒ*high* ”h]”hü)�”}”(hŒ*high*”h]”j±)�”}”(hjgh]”hŒhigh”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K.hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K.hjh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjh²hh³hÇh´K-ubhü)�”}”(hŒ£Real-Time workloads expect a fixed CPU frequency during execution. Using the performance governor is an easy way to achieve that purely from kernel configuration.”h]”hŒ£Real-Time workloads expect a fixed CPU frequency during execution. Using the performance governor is an easy way to achieve that purely from kernel configuration.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K0hjh²hubhü)�”}”(hŒÆThis is not an absolute rule. Some setups might prefer to clock the CPU to lower speeds due to thermal packaging or other requirements. The key is that the CPU frequency remains constant once set.”h]”hŒÆThis is not an absolute rule. Some setups might prefer to clock the CPU to lower speeds due to thermal packaging or other requirements. The key is that the CPU frequency remains constant once set.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K4hjh²hubeh}”(h]”j©ah ]”h"]”Œ'config_cpu_freq_default_gov_performance”ah$]”h&]”uh1hÈhj4h²hh³hÇh´K+ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ'Non-performance CPU frequency governors”h]”hŒ'Non-performance CPU frequency governors”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿjÅuh1hÍhj±h²hh³hÇh´K9ubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÅh³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hjØh]”hŒdisabled”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K;hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K;hjÂh²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjóh³hÇh´Kubjy)�”}”(hŒ *medium* ”h]”hü)�”}”(hŒ*medium*”h]”j±)�”}”(hj h]”hŒmedium”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Khj±h²hubhü)�”}”(hXIf disabling other frequency governors is not an option, use a governor that keeps the CPU frequency fixed. For example, ``CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE`` can be enabled when userspace is responsible for setting a *stable* frequency during system initialization.”h]”(hŒzIf disabling other frequency governors is not an option, use a governor that keeps the CPU frequency fixed. For example, ”…”�”}”(hjQh²hh³Nh´Nubjf)�”}”(hŒ)``CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE``”h]”hŒ%CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjQubhŒ< can be enabled when userspace is responsible for setting a ”…”�”}”(hjQh²hh³Nh´Nubj±)�”}”(hŒ*stable*”h]”hŒstable”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjQubhŒ( frequency during system initialization.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KDhj±h²hubhü)�”}”(hŒ]If a low CPU frequency is desired, then ``CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE`` can be set.”h]”(hŒ(If a low CPU frequency is desired, then ”…”�”}”(hjƒh²hh³Nh´Nubjf)�”}”(hŒ)``CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE``”h]”hŒ%CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjƒubhŒ can be set.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KIhj±h²hubhü)�”}”(hŒ¡The ``ONDEMAND`` governor should not be enabled on a real-time system. Its frequency changes depend on workload behavior and can significantly harm determinism.”h]”(hŒThe ”…”�”}”(hj£h²hh³Nh´Nubjf)�”}”(hŒ ``ONDEMAND``”h]”hŒONDEMAND”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj£ubhŒ‘ governor should not be enabled on a real-time system. Its frequency changes depend on workload behavior and can significantly harm determinism.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KLhj±h²hubhü)�”}”(hŒBFor more information, see Documentation/admin-guide/pm/cpufreq.rst”h]”hŒBFor more information, see Documentation/admin-guide/pm/cpufreq.rst”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KPhj±h²hubeh}”(h]”jËah ]”h"]”Œ'non-performance cpu frequency governors”ah$]”h&]”uh1hÈhj4h²hh³hÇh´K9ubeh}”(h]”jRah ]”h"]”Œcpu frequency governors”ah$]”h&]”uh1hÈhjh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hjïh]”jf)�”}”(hjïh]”hŒCONFIG_CPU_IDLE”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjâubah}”(h]”h ]”h"]”h$]”h&]”jÿjýuh1hÍhjßh²hh³hÇh´KSubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjûh³hÇh´Kubjy)�”}”(hŒenabled”h]”hü)�”}”(hjh]”hŒenabled”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KUhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KUhjøh²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj)h³hÇh´Kubjy)�”}”(hŒ*info* ”h]”hü)�”}”(hŒ*info*”h]”j±)�”}”(hj@h]”hŒinfo”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KVhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KVhjøh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjßh²hh³hÇh´KUubhü)�”}”(hX1CPU idle states (C-states) allow the processor to enter low-power modes during periods of inactivity. Very-low CPU idle states may require flushing the CPU caches and lowering or disabling the clocking. This can lower power consumption, but it also increases the entry and exit latency from such states.”h]”hX1CPU idle states (C-states) allow the processor to enter low-power modes during periods of inactivity. Very-low CPU idle states may require flushing the CPU caches and lowering or disabling the clocking. This can lower power consumption, but it also increases the entry and exit latency from such states.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KXhjßh²hubhü)�”}”(hXWhile disabling this option eliminates cpuidle-related latencies, doing so can significantly impact hardware longevity, warranty, and thermal behavior. Users should cap the maximum C-state to C1 instead. For ACPI platforms, this can be achieved by using the boot parameter [1]_::”h]”(hXWhile disabling this option eliminates cpuidle-related latencies, doing so can significantly impact hardware longevity, warranty, and thermal behavior. Users should cap the maximum C-state to C1 instead. For ACPI platforms, this can be achieved by using the boot parameter ”…”�”}”(hjuh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”jÿŒid3”Œdocname”Œ'core-api/real-time/kernel-configuration”uh1j}hjuŒresolved”KubhŒ:”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K^hjßh²hubhŒ literal_block”“”)�”}”(hŒprocessor.max_cstate=1”h]”hŒprocessor.max_cstate=1”…”�”}”hjžsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jœh³hÇh´Kchjßh²hubhü)�”}”(hŒÀHigher C-states can be acceptable depending on the user workload's latency requirements. For ACPI-based platforms, use the ``cpupower idle-info`` command to inspect the available idle states.”h]”(hŒ~Higher C-states can be acceptable depending on the user workload’s latency requirements. For ACPI-based platforms, use the ”…”�”}”(hj¬h²hh³Nh´Nubjf)�”}”(hŒ``cpupower idle-info``”h]”hŒcpupower idle-info”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj¬ubhŒ. command to inspect the available idle states.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kehjßh²hubhü)�”}”(hŒ!For more information, please see:”h]”hŒ!For more information, please see:”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kihjßh²hubhò)�”}”(hhh]”(h÷)�”}”(hŒ``linux/tools/power/cpupower``”h]”hü)�”}”(hjßh]”jf)�”}”(hjßh]”hŒlinux/tools/power/cpupower”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KkhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjÚh²hh³hÇh´Nubh÷)�”}”(hŒ(Documentation/admin-guide/pm/cpuidle.rst”h]”hü)�”}”(hjÿh]”hŒ(Documentation/admin-guide/pm/cpuidle.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Klhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjÚh²hh³hÇh´Nubh÷)�”}”(hŒ'Documentation/admin-guide/pm/index.rst ”h]”hü)�”}”(hŒ&Documentation/admin-guide/pm/index.rst”h]”hŒ&Documentation/admin-guide/pm/index.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjÚh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1hñh³hÇh´Kkhjßh²hubeh}”(h]”jah ]”h"]”Œconfig_cpu_idle”ah$]”h&]”uh1hÈhjh²hh³hÇh´KSubhÉ)�”}”(hhh]”(hÎ)�”}”(hjh]”jf)�”}”(hjh]”hŒ CONFIG_DRM”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj> ubah}”(h]”h ]”h"]”h$]”h&]”jÿj)uh1hÍhj; h²hh³hÇh´Kpubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjW h³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hjj h]”hŒdisabled”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Krhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KrhjT h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj… h³hÇh´Kubjy)�”}”(hŒ*info* ”h]”hü)�”}”(hŒ*info*”h]”j±)�”}”(hjœ h]”hŒinfo”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kshj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj… ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KshjT h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hj; h²hh³hÇh´Krubhü)�”}”(hŒÒGPU-accelerated workloads can share system resources with the CPU, including last-level cache (LLC) and memory bandwidth. Modern integrated GPUs optimize graphics performance at the expense of CPU determinism.”h]”hŒÒGPU-accelerated workloads can share system resources with the CPU, including last-level cache (LLC) and memory bandwidth. Modern integrated GPUs optimize graphics performance at the expense of CPU determinism.”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kuhj; h²hubhü)�”}”(hŒExamples of affected platforms:”h]”hŒExamples of affected platforms:”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kyhj; h²hubhò)�”}”(hhh]”(h÷)�”}”(hŒ:Intel processors with integrated graphics (Gen9 and later)”h]”hü)�”}”(hjä h]”hŒ:Intel processors with integrated graphics (Gen9 and later)”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K{hjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjß h²hh³hÇh´Nubh÷)�”}”(hŒAMD APUs with Radeon Graphics”h]”hü)�”}”(hjû h]”hŒAMD APUs with Radeon Graphics”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K|hjù ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjß h²hh³hÇh´Nubh÷)�”}”(hŒ+Xilinx Zynq UltraScale+ MPSoC EG/EV series ”h]”hü)�”}”(hŒ*Xilinx Zynq UltraScale+ MPSoC EG/EV series”h]”hŒ*Xilinx Zynq UltraScale+ MPSoC EG/EV series”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K}hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjß h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j2 j3 uh1hñh³hÇh´K{hj; h²hubhü)�”}”(hŒ­If graphics workloads must run alongside real-time tasks, users must conduct thorough stress testing using tools like ``glmark2`` while measuring the overall system latency.”h]”(hŒvIf graphics workloads must run alongside real-time tasks, users must conduct thorough stress testing using tools like ”…”�”}”(hj. h²hh³Nh´Nubjf)�”}”(hŒ ``glmark2``”h]”hŒglmark2”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj. ubhŒ, while measuring the overall system latency.”…”�”}”(hj. h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Khj; h²hubhü)�”}”(hŒ#For more information, please check:”h]”hŒ#For more information, please check:”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kƒhj; h²hubhò)�”}”(hhh]”(h÷)�”}”(hŒLDocumentation/core-api/real-time/hardware.rst ("Regarding hardware" section)”h]”hü)�”}”(hja h]”hŒPDocumentation/core-api/real-time/hardware.rst (“Regarding hardwareâ€� section)”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K…hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj\ h²hh³hÇh´Nubh÷)�”}”(hŒ%Documentation/filesystems/resctrl.rst”h]”hü)�”}”(hjx h]”hŒ%Documentation/filesystems/resctrl.rst”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K†hjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj\ h²hh³hÇh´Nubh÷)�”}”(hŒ `Real-Time and Graphics: A Contradiction? `_ ”h]”hü)�”}”(hŒŸ`Real-Time and Graphics: A Contradiction? `_”h]”(j)�”}”(hj“ h]”hŒ(Real-Time and Graphics: A Contradiction?”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ(Real-Time and Graphics: A Contradiction?”Œrefuri”Œqhttps://web.archive.org/web/20221025085614/https://linutronix.de/PDF/Realtime_and_graphics-acontradiction2021.pdf”uh1jhj‘ ubhŒtarget”“”)�”}”(hŒt ”h]”h}”(h]”Œ&real-time-and-graphics-a-contradiction”ah ]”h"]”Œ(real-time and graphics: a contradiction?”ah$]”h&]”Œrefuri”j¥ uh1j¦ Œ referenced”Khj‘ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K‡hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhj\ h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j2 j3 uh1hñh³hÇh´K…hj; h²hubeh}”(h]”j/ah ]”h"]”Œ config_drm”ah$]”h&]”uh1hÈhjh²hh³hÇh´KpubhÉ)�”}”(hhh]”(hÎ)�”}”(hjGh]”jf)�”}”(hjGh]”hŒCONFIG_EFI_DISABLE_RUNTIME”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjÒ ubah}”(h]”h ]”h"]”h$]”h&]”jÿjUuh1hÍhjÏ h²hh³hÇh´KŠubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjë h³hÇh´Kubjy)�”}”(hŒenabled”h]”hü)�”}”(hjþ h]”hŒenabled”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KŒhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KŒhjè h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj h³hÇh´Kubjy)�”}”(hŒ *medium* ”h]”hü)�”}”(hŒ*medium*”h]”j±)�”}”(hj0 h]”hŒmedium”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K�hj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K�hjè h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjÏ h²hh³hÇh´KŒubhü)�”}”(hX*EFI is the standard boot and firmware interface for multiple architectures. EFI runtime services provide callback functions to be called from the kernel; e.g., as utilized by (``CONFIG_EFI_VARS*``) or (``CONFIG_RTC_DRV_EFI``). For the former, the kernel calls into EFI to update the EFI variables.”h]”(hŒ°EFI is the standard boot and firmware interface for multiple architectures. EFI runtime services provide callback functions to be called from the kernel; e.g., as utilized by (”…”�”}”(hjW h²hh³Nh´Nubjf)�”}”(hŒ``CONFIG_EFI_VARS*``”h]”hŒCONFIG_EFI_VARS*”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjW ubhŒ) or (”…”�”}”(hjW h²hh³Nh´Nubjf)�”}”(hŒ``CONFIG_RTC_DRV_EFI``”h]”hŒCONFIG_RTC_DRV_EFI”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjW ubhŒJ). For the former, the kernel calls into EFI to update the EFI variables.”…”�”}”(hjW h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K�hjÏ h²hubhü)�”}”(hŒýCalling into EFI means invoking firmware callbacks. During such invocations, the system might not be able to react to interrupts and will thus not be able to perform a context switch. This can cause significant latency spikes for the real-time system.”h]”hŒýCalling into EFI means invoking firmware callbacks. During such invocations, the system might not be able to react to interrupts and will thus not be able to perform a context switch. This can cause significant latency spikes for the real-time system.”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K”hjÏ h²hubhü)�”}”(hŒ»``CONFIG_PREEMPT_RT`` enables this option by default. If this option is manually disabled at build time, the following boot parameter [1]_ may be used to disable EFI runtime at boot up::”h]”(jf)�”}”(hŒ``CONFIG_PREEMPT_RT``”h]”hŒCONFIG_PREEMPT_RT”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj— ubhŒr enables this option by default. If this option is manually disabled at build time, the following boot parameter ”…”�”}”(hj— h²hh³Nh´Nubj~)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”jÿjŽj�j�uh1j}hj— j‘KubhŒ/ may be used to disable EFI runtime at boot up:”…”�”}”(hj— h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K™hjÏ h²hubj�)�”}”(hŒ efi=noruntime”h]”hŒ efi=noruntime”…”�”}”hjÆ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jœh³hÇh´K�hjÏ h²hubhü)�”}”(hXAlternatively, confine EFI runtime service calls to a housekeeping CPU by restricting the ``efi_runtime`` workqueue CPU affinity. For example, set that workqueue's affinity to CPU #0 and pin your RT tasks to a different CPU range. See Documentation/core-api/workqueue.rst”h]”(hŒZAlternatively, confine EFI runtime service calls to a housekeeping CPU by restricting the ”…”�”}”(hjÔ h²hh³Nh´Nubjf)�”}”(hŒ``efi_runtime``”h]”hŒ efi_runtime”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjÔ ubhŒ© workqueue CPU affinity. For example, set that workqueue’s affinity to CPU #0 and pin your RT tasks to a different CPU range. See Documentation/core-api/workqueue.rst”…”�”}”(hjÔ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KŸhjÏ h²hubeh}”(h]”j[ah ]”h"]”Œconfig_efi_disable_runtime”ah$]”h&]”uh1hÈhjh²hh³hÇh´KŠubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ(``CONFIG_NO_HZ`` / ``CONFIG_NO_HZ_FULL``”h]”(jf)�”}”(hjsh]”hŒ CONFIG_NO_HZ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjþ ubhŒ / ”…”�”}”(hjþ h²hh³Nh´Nubjf)�”}”(hj…h]”hŒCONFIG_NO_HZ_FULL”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjþ ubeh}”(h]”h ]”h"]”h$]”h&]”jÿj“uh1hÍhjû h²hh³hÇh´K¥ubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj) h³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hj< h]”hŒdisabled”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K§hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj) ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K§hj& h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjW h³hÇh´Kubjy)�”}”(hŒ *medium* ”h]”hü)�”}”(hŒ*medium*”h]”j±)�”}”(hjn h]”hŒmedium”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K¨hjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K¨hj& h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjû h²hh³hÇh´K§ubhü)�”}”(hŒzTickless operation can increase kernel-to-userspace transition latency due to the extra accounting and state book-keeping.”h]”hŒzTickless operation can increase kernel-to-userspace transition latency due to the extra accounting and state book-keeping.”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kªhjû h²hubhü)�”}”(hŒ&*Guidance by real-time workload type:*”h]”j±)�”}”(hj¥ h]”hŒ$Guidance by real-time workload type:”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K­hjû h²hubhò)�”}”(hhh]”(h÷)�”}”(hŒ…For periodic workloads; e.g., control loops executing every 100 µs, avoid ``NO_HZ`` modes. Consistent kernel ticks are preferable. ”h]”hü)�”}”(hŒ„For periodic workloads; e.g., control loops executing every 100 µs, avoid ``NO_HZ`` modes. Consistent kernel ticks are preferable.”h]”(hŒKFor periodic workloads; e.g., control loops executing every 100 µs, avoid ”…”�”}”(hjÁ h²hh³Nh´Nubjf)�”}”(hŒ ``NO_HZ``”h]”hŒNO_HZ”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjÁ ubhŒ0 modes. Consistent kernel ticks are preferable.”…”�”}”(hjÁ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K¯hj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjº h²hh³hÇh´Nubh÷)�”}”(hŒÔFor computation-intensive workloads; e.g. extended userspace execution, ``NO_HZ_FULL`` may be beneficial. In such cases, users should offload the kernel housekeeping to dedicated CPUs and isolate compute cores. ”h]”hü)�”}”(hŒÓFor computation-intensive workloads; e.g. extended userspace execution, ``NO_HZ_FULL`` may be beneficial. In such cases, users should offload the kernel housekeeping to dedicated CPUs and isolate compute cores.”h]”(hŒHFor computation-intensive workloads; e.g. extended userspace execution, ”…”�”}”(hjë h²hh³Nh´Nubjf)�”}”(hŒ``NO_HZ_FULL``”h]”hŒ NO_HZ_FULL”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjë ubhŒ} may be beneficial. In such cases, users should offload the kernel housekeeping to dedicated CPUs and isolate compute cores.”…”�”}”(hjë h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K²hjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1höhjº h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j2 j3 uh1hñh³hÇh´K¯hjû h²hubhü)�”}”(hŒ'See also Documentation/timers/no_hz.rst”h]”hŒ'See also Documentation/timers/no_hz.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K¶hjû h²hubeh}”(h]”j™ah ]”h"]”Œ config_no_hz / config_no_hz_full”ah$]”h&]”uh1hÈhjh²hh³hÇh´K¥ubhÉ)�”}”(hhh]”(hÎ)�”}”(hj±h]”jf)�”}”(hj±h]”hŒCONFIG_PREEMPT_RT”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj/ ubah}”(h]”h ]”h"]”h$]”h&]”jÿj¿uh1hÍhj, h²hh³hÇh´K¹ubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjH h³hÇh´Kubjy)�”}”(hŒenabled”h]”hü)�”}”(hj[ h]”hŒenabled”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K»hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K»hjE h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjv h³hÇh´Kubjy)�”}”(hŒ **fatal** ”h]”hü)�”}”(hŒ **fatal**”h]”hŒstrong”“”)�”}”(hj� h]”hŒfatal”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K¼hj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K¼hjE h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hj, h²hh³hÇh´K»ubhü)�”}”(hŒiThis option must be enabled, or the resulting kernel will not be fully preemptible and real-time capable.”h]”hŒiThis option must be enabled, or the resulting kernel will not be fully preemptible and real-time capable.”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K¾hj, h²hubeh}”(h]”jÅah ]”h"]”Œconfig_preempt_rt”ah$]”h&]”uh1hÈhjh²hh³hÇh´K¹ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ(``CONFIG_TRACING`` (and tracing options)”h]”(jf)�”}”(hjÝh]”hŒCONFIG_TRACING”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjÎ ubhŒ (and tracing options)”…”�”}”(hjÎ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÿjïuh1hÍhjË h²hh³hÇh´KÂubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjì h³hÇh´Kubjy)�”}”(hŒenabled”h]”hü)�”}”(hjÿ h]”hŒenabled”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÄhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjì ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KÄhjé h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjh³hÇh´Kubjy)�”}”(hŒ*info* ”h]”hü)�”}”(hŒ*info*”h]”j±)�”}”(hj1h]”hŒinfo”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÅhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KÅhjé h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjË h²hh³hÇh´KÄubhü)�”}”(hŒýShipping kernels with tracing support enabled (but not actively running) is highly recommended. This will allow the users to extract more information if latency problems arise. Nonetheless, some tracers do incur latency overhead just by being enabled.”h]”hŒýShipping kernels with tracing support enabled (but not actively running) is highly recommended. This will allow the users to extract more information if latency problems arise. Nonetheless, some tracers do incur latency overhead just by being enabled.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÇhjË h²hubjæ)�”}”(hŒ«Users should *not* make use of tracers or trace events during production real-time kernel operation as they can add considerable overhead and degrade the system's latency.”h]”hü)�”}”(hŒ«Users should *not* make use of tracers or trace events during production real-time kernel operation as they can add considerable overhead and degrade the system's latency.”h]”(hŒ Users should ”…”�”}”(hjjh²hh³Nh´Nubj±)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjjubhŒ› make use of tracers or trace events during production real-time kernel operation as they can add considerable overhead and degrade the system’s latency.”…”�”}”(hjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÎhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjË h²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ7``CONFIG_IRQSOFF_TRACER`` and ``CONFIG_PREEMPT_TRACER``”h]”(jf)�”}”(hj h]”hŒCONFIG_IRQSOFF_TRACER”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj“ubhŒ and ”…”�”}”(hj“h²hh³Nh´Nubjf)�”}”(hjh]”hŒCONFIG_PREEMPT_TRACER”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj“ubeh}”(h]”h ]”h"]”h$]”h&]”jÿj*uh1hÍhj�h²hh³hÇh´KÓubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¾h³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hjÑh]”hŒdisabled”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÕhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KÕhj»h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjìh³hÇh´Kubjy)�”}”(hŒ*high* ”h]”hü)�”}”(hŒ*high*”h]”j±)�”}”(hjh]”hŒhigh”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÖhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KÖhj»h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hj�h²hh³hÇh´KÕubhü)�”}”(hŒ]These tracers do incur measurable latency overhead even when tracing is not currently active.”h]”hŒ]These tracers do incur measurable latency overhead even when tracing is not currently active.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KØhj�h²hubeh}”(h]”j0ah ]”h"]”Œ/config_irqsoff_tracer and config_preempt_tracer”ah$]”h&]”uh1hÈhjË h²hh³hÇh´KÓubeh}”(h]”jõah ]”h"]”Œ$config_tracing (and tracing options)”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÂubeh}”(h]”j3ah ]”h"]”Œconfiguration options”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒKernel Debug Options”h]”hŒKernel Debug Options”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿjduh1hÍhjMh²hh³hÇh´KÜubhü)�”}”(hŒUMost kernel debug options add runtime overhead that increases the worst-case latency.”h]”hŒUMost kernel debug options add runtime overhead that increases the worst-case latency.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KÞhjMh²hubjæ)�”}”(hX”During development and early testing, users are encouraged to run their real-time workloads and peripherals with lockdep (:ref:`lockdep`) and other kernel debug options enabled, for a considerable amount of time. Such workloads might trigger kernel code paths that were not triggered during the internal Linux real-time kernel development, thus helping to uncover locking and other types of kernel bugs.”h]”hü)�”}”(hX”During development and early testing, users are encouraged to run their real-time workloads and peripherals with lockdep (:ref:`lockdep`) and other kernel debug options enabled, for a considerable amount of time. Such workloads might trigger kernel code paths that were not triggered during the internal Linux real-time kernel development, thus helping to uncover locking and other types of kernel bugs.”h]”(hŒzDuring development and early testing, users are encouraged to run their real-time workloads and peripherals with lockdep (”…”�”}”(hjph²hh³Nh´Nubh)�”}”(hŒ:ref:`lockdep`”h]”hŒinline”“”)�”}”(hjzh]”hŒlockdep”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j|hjxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�Œ refdomain”j‰Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œlockdep”uh1hh³hÇh´KãhjpubhX ) and other kernel debug options enabled, for a considerable amount of time. Such workloads might trigger kernel code paths that were not triggered during the internal Linux real-time kernel development, thus helping to uncover locking and other types of kernel bugs.”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kãhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMh²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hjh]”jf)�”}”(hjh]”hŒCONFIG_DEBUG_ATOMIC_SLEEP”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj¯ubah}”(h]”h ]”h"]”h$]”h&]”jÿj�uh1hÍhj¬h²hh³hÇh´Këubj_)�”}”(hhh]”jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÈh³hÇh´Kubjy)�”}”(hŒallowed ”h]”hü)�”}”(hŒallowed”h]”hŒallowed”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KíhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KíhjÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j^hj¬h²hh³hÇh´Kíubhü)�”}”(hŒ·This sanity check catches common kernel programming errors with a tolerable latency cost. It also increases overall scheduling as each ``might_sleep()`` can lead to a context switch.”h]”(hŒˆThis sanity check catches common kernel programming errors with a tolerable latency cost. It also increases overall scheduling as each ”…”�”}”(hjýh²hh³Nh´Nubjf)�”}”(hŒ``might_sleep()``”h]”hŒ might_sleep()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjýubhŒ can lead to a context switch.”…”�”}”(hjýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Kïhj¬h²hubeh}”(h]”j“ah ]”h"]”Œconfig_debug_atomic_sleep”ah$]”h&]”uh1hÈhjMh²hh³hÇh´KëubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ6``CONFIG_DEBUG_BUGVERBOSE`` and ``CONFIG_DEBUG_INFO*``”h]”(jf)�”}”(hj«h]”hŒCONFIG_DEBUG_BUGVERBOSE”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj'ubhŒ and ”…”�”}”(hj'h²hh³Nh´Nubjf)�”}”(hj½h]”hŒCONFIG_DEBUG_INFO*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj'ubeh}”(h]”h ]”h"]”h$]”h&]”jÿjËuh1hÍhj$h²hh³hÇh´Kôubj_)�”}”(hhh]”jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjRh³hÇh´Kubjy)�”}”(hŒallowed ”h]”hü)�”}”(hŒallowed”h]”hŒallowed”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Köhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´KöhjOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j^hj$h²hh³hÇh´Köubhü)�”}”(hŒ–These options increase the kernel image size but have no latency impact. They are also essential for meaningful BUG logs, crash dumps, and profiling.”h]”hŒ–These options increase the kernel image size but have no latency impact. They are also essential for meaningful BUG logs, crash dumps, and profiling.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Køhj$h²hubeh}”(h]”jÑah ]”h"]”Œ.config_debug_bugverbose and config_debug_info*”ah$]”h&]”uh1hÈhjMh²hh³hÇh´KôubhÉ)�”}”(hhh]”(hÎ)�”}”(hjéh]”jf)�”}”(hjéh]”hŒCONFIG_DEBUG_FS”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjŸubah}”(h]”h ]”h"]”h$]”h&]”jÿj÷uh1hÍhjœh²hh³hÇh´Küubj_)�”}”(hhh]”jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¸h³hÇh´Kubjy)�”}”(hŒallowed ”h]”hü)�”}”(hŒallowed”h]”hŒallowed”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KþhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Kþhjµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j^hjœh²hh³hÇh´Kþubhü)�”}”(hŒpThis is safe to include in real-time kernels, *provided that debugfs is not accessed during production runtime*.”h]”(hŒ.This is safe to include in real-time kernels, ”…”�”}”(hjíh²hh³Nh´Nubj±)�”}”(hŒA*provided that debugfs is not accessed during production runtime*”h]”hŒ?provided that debugfs is not accessed during production runtime”…”�”}”(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´Mhjœh²hubeh}”(h]”jýah ]”h"]”Œconfig_debug_fs”ah$]”h&]”uh1hÈhjMh²hh³hÇh´KüubhÉ)�”}”(hhh]”(hÎ)�”}”(hjh]”jf)�”}”(hjh]”hŒCONFIG_DEBUG_KERNEL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehjubah}”(h]”h ]”h"]”h$]”h&]”jÿj#uh1hÍhjh²hh³hÇh´Mubj_)�”}”(hhh]”jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj0h³hÇh´Kubjy)�”}”(hŒallowed ”h]”hü)�”}”(hŒallowed”h]”hŒallowed”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´MhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Mhj-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j^hjh²hh³hÇh´Mubhü)�”}”(hŒ—Meta-option which allows debug features to be enabled. It has no runtime impact, but beware of any debug features that it may have implicitly enabled.”h]”hŒ—Meta-option which allows debug features to be enabled. It has no runtime impact, but beware of any debug features that it may have implicitly enabled.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhjh²hubeh}”(h]”j)ah ]”h"]”Œconfig_debug_kernel”ah$]”h&]”uh1hÈhjMh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hjAh]”jf)�”}”(hjAh]”hŒCONFIG_LOCKUP_DETECTOR”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj}ubah}”(h]”h ]”h"]”h$]”h&]”jÿjOuh1hÍhjzh²hh³hÇh´M ubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj–h³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hj©h]”hŒdisabled”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Mhj“h²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÄh³hÇh´Kubjy)�”}”(hŒ*high* ”h]”hü)�”}”(hŒ*high*”h]”j±)�”}”(hjÛh]”hŒhigh”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´MhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´Mhj“h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hjzh²hh³hÇh´Mubhü)�”}”(hŒ·The lockup detector creates kernel timer callbacks that execute every few seconds, in hard-IRQ context, even on real-time kernels. These periodic interrupts can cause latency spikes.”h]”hŒ·The lockup detector creates kernel timer callbacks that execute every few seconds, in hard-IRQ context, even on real-time kernels. These periodic interrupts can cause latency spikes.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhjzh²hubhü)�”}”(hŒ}Users should use hardware watchdogs instead, which will provide a similar functionality without the software-induced latency.”h]”hŒ}Users should use hardware watchdogs instead, which will provide a similar functionality without the software-induced latency.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhjzh²hubj§ )�”}”(hŒ .. _lockdep:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÿŒlockdep”uh1j¦ h´Mhjzh²hh³hÇubeh}”(h]”jUah ]”h"]”Œconfig_lockup_detector”ah$]”h&]”uh1hÈhjMh²hh³hÇh´M ubhÉ)�”}”(hhh]”(hÎ)�”}”(hjmh]”jf)�”}”(hjmh]”hŒCONFIG_PROVE_LOCKING”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jehj3ubah}”(h]”h ]”h"]”h$]”h&]”jÿj{uh1hÍhj0h²hh³hÇh´Mubj_)�”}”(hhh]”(jd)�”}”(hhh]”(ji)�”}”(hŒ Expectation”h]”hŒ Expectation”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjLh³hÇh´Kubjy)�”}”(hŒdisabled”h]”hü)�”}”(hj_h]”hŒdisabled”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´MhjIh²hubjd)�”}”(hhh]”(ji)�”}”(hŒSeverity”h]”hŒSeverity”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjzh³hÇh´Kubjy)�”}”(hŒ*high* ”h]”hü)�”}”(hŒ*high*”h]”j±)�”}”(hj‘h]”hŒhigh”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Mhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´MhjIh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j^hj0h²hh³hÇh´Mubhü)�”}”(hŒwProving the correctness of all kernel locking adds substantial overhead and significantly increases worst-case latency.”h]”hŒwProving the correctness of all kernel locking adds substantial overhead and significantly increases worst-case latency.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´M hj0h²hubeh}”(h]”(j�j(eh ]”h"]”(Œconfig_prove_locking”Œlockdep”eh$]”h&]”uh1hÈhjMh²hh³hÇh´MŒexpect_referenced_by_name”}”jËjsŒexpect_referenced_by_id”}”j(jsubeh}”(h]”jjah ]”h"]”Œkernel debug options”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÜubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSummary”h]”hŒSummary”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿj©uh1hÍhjÙh²hh³hÇh´M$ubhü)�”}”(hX^There is no "one size fits all" solution for configuring a real-time Linux system. Beginning with the system real-time requirements, integrators must consider the features and functions of the system's hardware, kernel, and userspace. All such components must be properly configured in order to establish and constrain the system's maximum latency.”h]”hXfThere is no “one size fits allâ€� solution for configuring a real-time Linux system. Beginning with the system real-time requirements, integrators must consider the features and functions of the system’s hardware, kernel, and userspace. All such components must be properly configured in order to establish and constrain the system’s maximum latency.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´M&hjÙh²hubhü)�”}”(hŒ¹With that in mind, any incorrect real-time kernel configuration could cause a new maximum latency that shows up at the wrong time and is catastrophic for the real-time system's latency.”h]”hŒ»With that in mind, any incorrect real-time kernel configuration could cause a new maximum latency that shows up at the wrong time and is catastrophic for the real-time system’s latency.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´M,hjÙh²hubeh}”(h]”j¯ah ]”h"]”Œsummary”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M$ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ References”h]”hŒ References”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÿjËuh1hÍhj h²hh³hÇh´M1ubhŒfootnote”“”)�”}”(hŒ3See Documentation/admin-guide/kernel-parameters.rst”h]”(hŒlabel”“”)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj ubhü)�”}”(hj"h]”hŒ3See Documentation/admin-guide/kernel-parameters.rst”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´M3hj ubeh}”(h]”jŽah ]”h"]”Œ1”ah$]”h&]”(j‰j· ej�j�uh1jh³hÇh´M3hj h²hj‘Kubeh}”(h]”jÑah ]”h"]”Œ references”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M1ubeh}”(h]”Œreal-time-kernel-configuration”ah ]”h"]”Œreal-time kernel configuration”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”jzŒ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”}”Œ1”]”(jj­ esŒrefids”}”j(]”jasŒnameids”}”(jTjQjëjæjjjJj3jÜjRjj}j®j©jÕjËj8 jjÌ j/j± j® jø j[j) j™jÈ jÅjCjõj<j0jÖjjj!j“j™jÑjjýjwj)j-jUjËj(jÊj�j j¯jLjÑjEjŽuŒ nametypes”}”(jT‰jë‰j‰jJ‰j܉j‰j®‰jÕ‰j8 ‰jÌ ‰j± ˆjø ‰j) ‰jÈ ‰jC‰j<‰jÖ‰j!‰j™‰j‰jw‰j-‰jˈjʉj ‰jL‰jEˆuh}”(jQhÊjæhßjjîj3jjRj4j}jEj©jjËj±jjßj‰jj/j; j® j¨ j[jÏ j· j­ j™jû jÅj, jõjË j0j�jjjMj“j¬jÑj$jýjœj)jjUjzj(j0j�j0j¯jÙjÑj jŽj j jj-j$jLjCjwjbj£j�jÅj¼jýjêj)jjUjBj“jnj¿j¬jïjØj*jjdj[j�jzjËj¦j÷jäj#jjOj<j{jhj©j jËjÂuŒ footnote_refs”}”jº]”(jj­ esŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”j aŒ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jˆKs…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hü)�”}”(hhh]”hŒ-Hyperlink target "lockdep" is not referenced.”…”�”}”hjçsbah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjäubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Muh1jâubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.