€•ØyŒ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/userspace-api/spec_ctrl”Œ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/userspace-api/spec_ctrl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/userspace-api/spec_ctrl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/userspace-api/spec_ctrl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/userspace-api/spec_ctrl”Œ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/userspace-api/spec_ctrl”Œ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/userspace-api/spec_ctrl”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒSpeculation Control”h]”hŒSpeculation Control”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒE/var/lib/git/docbuild/linux/Documentation/userspace-api/spec_ctrl.rst”h´KubhŒ paragraph”“”)�”}”(hŒ™Quite some CPUs have speculation-related misfeatures which are in fact vulnerabilities causing data leaks in various forms even across privilege domains.”h]”hŒ™Quite some CPUs have speculation-related misfeatures which are in fact vulnerabilities causing data leaks in various forms even across privilege domains.”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒ¶The kernel provides mitigation for such vulnerabilities in various forms. Some of these mitigations are compile-time configurable and some can be supplied on the kernel command line.”h]”hŒ¶The kernel provides mitigation for such vulnerabilities in various forms. Some of these mitigations are compile-time configurable and some can be supplied on the kernel command line.”…”�”}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhÌ)�”}”(hŒãThere is also a class of mitigations which are very expensive, but they can be restricted to a certain set of processes or tasks in controlled environments. The mechanism to control these mitigations is via :manpage:`prctl(2)`.”h]”(hŒÏThere is also a class of mitigations which are very expensive, but they can be restricted to a certain set of processes or tasks in controlled environments. The mechanism to control these mitigations is via ”…”�”}”(hhéh²hh³Nh´NubhŒmanpage”“”)�”}”(hŒ:manpage:`prctl(2)`”h]”hŒprctl(2)”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”h ]”hñah"]”h$]”h&]”Œ xml:space”Œpreserve”Œpath”Œprctl(2)”Œpage”Œprctl”Œsection”Œ2”uh1hñhhéubhŒ.”…”�”}”(hhéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhÌ)�”}”(hŒ6There are two prctl options which are related to this:”h]”hŒ6There are two prctl options which are related to this:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒ block_quote”“”)�”}”(hŒ5* PR_GET_SPECULATION_CTRL * PR_SET_SPECULATION_CTRL ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒPR_GET_SPECULATION_CTRL ”h]”hÌ)�”}”(hŒPR_GET_SPECULATION_CTRL”h]”hŒPR_GET_SPECULATION_CTRL”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj)ubj-)�”}”(hŒPR_SET_SPECULATION_CTRL ”h]”hÌ)�”}”(hŒPR_SET_SPECULATION_CTRL”h]”hŒPR_SET_SPECULATION_CTRL”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j'h³hÊh´Khj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j!h³hÊh´Khh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒPR_GET_SPECULATION_CTRL”h]”hŒPR_GET_SPECULATION_CTRL”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjlh²hh³hÊh´KubhÌ)�”}”(hX"PR_GET_SPECULATION_CTRL returns the state of the speculation misfeature which is selected with arg2 of prctl(2). The return value uses bits 0-3 with the following meaning (with the caveat that PR_SPEC_L1D_FLUSH has less obvious semantics, see documentation for that specific control below):”h]”hX"PR_GET_SPECULATION_CTRL returns the state of the speculation misfeature which is selected with arg2 of prctl(2). The return value uses bits 0-3 with the following meaning (with the caveat that PR_SPEC_L1D_FLUSH has less obvious semantics, see documentation for that specific control below):”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjlh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j•hj’ubj–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j•hj’ubj–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K2uh1j•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´K!hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj¼ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒDefine”h]”hŒDefine”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K!hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj¼ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K!hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj’ubhŒtbody”“”)�”}”(hhh]”(j»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ PR_SPEC_PRCTL”h]”hŒ PR_SPEC_PRCTL”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒAMitigation can be controlled per task by PR_SET_SPECULATION_CTRL.”h]”hŒAMitigation can be controlled per task by PR_SET_SPECULATION_CTRL.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K%hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjeubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPR_SPEC_ENABLE”h]”hŒPR_SPEC_ENABLE”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K%hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjeubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ;The speculation feature is enabled, mitigation is disabled.”h]”hŒ;The speculation feature is enabled, mitigation is disabled.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K%hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hjh]”hŒ2”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj³ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPR_SPEC_DISABLE”h]”hŒPR_SPEC_DISABLE”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj³ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ;The speculation feature is disabled, mitigation is enabled.”h]”hŒ;The speculation feature is disabled, mitigation is enabled.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPR_SPEC_FORCE_DISABLE”h]”hŒPR_SPEC_FORCE_DISABLE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒaSame as PR_SPEC_DISABLE, but cannot be undone. A subsequent prctl(..., PR_SPEC_ENABLE) will fail.”h]”hŒaSame as PR_SPEC_DISABLE, but cannot be undone. A subsequent prctl(..., PR_SPEC_ENABLE) will fail.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K)hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒ4”h]”hŒ4”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjNubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPR_SPEC_DISABLE_NOEXEC”h]”hŒPR_SPEC_DISABLE_NOEXEC”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjNubjÀ)�”}”(hhh]”hÌ)�”}”(hŒOSame as PR_SPEC_DISABLE, but the state will be cleared on :manpage:`execve(2)`.”h]”(hŒ:Same as PR_SPEC_DISABLE, but the state will be cleared on ”…”�”}”(hj‚h²hh³Nh´Nubhò)�”}”(hŒ:manpage:`execve(2)`”h]”hŒ execve(2)”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”hñah"]”h$]”h&]”jjjŒ execve(2)”jŒexecve”jjuh1hñhj‚ubhŒ.”…”�”}”(hj‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j�hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hjlh²hh³hÊh´NubhÌ)�”}”(hŒHIf all bits are 0 the CPU is not affected by the speculation misfeature.”h]”hŒHIf all bits are 0 the CPU is not affected by the speculation misfeature.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K/hjlh²hubhÌ)�”}”(hŒ§If PR_SPEC_PRCTL is set, then the per-task control of the mitigation is available. If not set, prctl(PR_SET_SPECULATION_CTRL) for the speculation misfeature will fail.”h]”hŒ§If PR_SPEC_PRCTL is set, then the per-task control of the mitigation is available. If not set, prctl(PR_SET_SPECULATION_CTRL) for the speculation misfeature will fail.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K1hjlh²hubhŒtarget”“”)�”}”(hŒ.. _set_spec_ctrl:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ set-spec-ctrl”uh1jßh´K5hjlh²hh³hÊubeh}”(h]”Œpr-get-speculation-ctrl”ah ]”h"]”Œpr_get_speculation_ctrl”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒPR_SET_SPECULATION_CTRL”h]”hŒPR_SET_SPECULATION_CTRL”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjõh²hh³hÊh´K8ubhÌ)�”}”(hŒóPR_SET_SPECULATION_CTRL allows to control the speculation misfeature, which is selected by arg2 of :manpage:`prctl(2)` per task. arg3 is used to hand in the control value, i.e. either PR_SPEC_ENABLE or PR_SPEC_DISABLE or PR_SPEC_FORCE_DISABLE.”h]”(hŒcPR_SET_SPECULATION_CTRL allows to control the speculation misfeature, which is selected by arg2 of ”…”�”}”(hjh²hh³Nh´Nubhò)�”}”(hŒ:manpage:`prctl(2)`”h]”hŒprctl(2)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hñah"]”h$]”h&]”jjjŒprctl(2)”jŒprctl”jjuh1hñhjubhŒ} per task. arg3 is used to hand in the control value, i.e. either PR_SPEC_ENABLE or PR_SPEC_DISABLE or PR_SPEC_FORCE_DISABLE.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K:hjõh²hubeh}”(h]”(Œpr-set-speculation-ctrl”jìeh ]”h"]”(Œpr_set_speculation_ctrl”Œ set_spec_ctrl”eh$]”h&]”uh1hµhh·h²hh³hÊh´K8Œexpect_referenced_by_name”}”j.jásŒexpect_referenced_by_id”}”jìjásubh¶)�”}”(hhh]”(h»)�”}”(hŒCommon error codes”h]”hŒCommon error codes”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj5h²hh³hÊh´K@ubjŒ)�”}”(hhh]”j‘)�”}”(hhh]”(j–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j•hjIubj–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KAuh1j•hjIubj¶)�”}”(hhh]”j»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒValue”h]”hŒValue”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KBhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjcubjÀ)�”}”(hhh]”hÌ)�”}”(hŒMeaning”h]”hŒMeaning”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KBhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhjIubj)�”}”(hhh]”(j»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒEINVAL”h]”hŒEINVAL”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KDhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj£ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒXThe prctl is not implemented by the architecture or unused prctl(2) arguments are not 0.”h]”hŒXThe prctl is not implemented by the architecture or unused prctl(2) arguments are not 0.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KDhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj ubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒENODEV”h]”hŒENODEV”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KGhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÚubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ9arg2 is selecting a not supported speculation misfeature.”h]”hŒ9arg2 is selecting a not supported speculation misfeature.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KGhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j�hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj5h²hh³hÊh´Nubeh}”(h]”Œcommon-error-codes”ah ]”h"]”Œcommon error codes”ah$]”h&]”uh1hµhh·h²hh³hÊh´K@ubh¶)�”}”(hhh]”(h»)�”}”(hŒ#PR_SET_SPECULATION_CTRL error codes”h]”hŒ#PR_SET_SPECULATION_CTRL error codes”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj,h²hh³hÊh´KKubjŒ)�”}”(hhh]”j‘)�”}”(hhh]”(j–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j•hj@ubj–)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KHuh1j•hj@ubj¶)�”}”(hhh]”j»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒValue”h]”hŒValue”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KMhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjZubjÀ)�”}”(hhh]”hÌ)�”}”(hŒMeaning”h]”hŒMeaning”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KMhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jµhj@ubj)�”}”(hhh]”(j»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hjh]”hŒ0”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KOhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjšubjÀ)�”}”(hhh]”hÌ)�”}”(hŒSuccess”h]”hŒSuccess”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KOhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj—ubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒERANGE”h]”hŒERANGE”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KQhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÐubjÀ)�”}”(hhh]”hÌ)�”}”(hŒbarg3 is incorrect, i.e. it's neither PR_SPEC_ENABLE nor PR_SPEC_DISABLE nor PR_SPEC_FORCE_DISABLE.”h]”hŒdarg3 is incorrect, i.e. it’s neither PR_SPEC_ENABLE nor PR_SPEC_DISABLE nor PR_SPEC_FORCE_DISABLE.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KQhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj—ubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒENXIO”h]”hŒENXIO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KThj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ�For PR_SPEC_STORE_BYPASS: control of the selected speculation misfeature is not possible via prctl, because of the system's boot configuration.”h]”hŒ‘For PR_SPEC_STORE_BYPASS: control of the selected speculation misfeature is not possible via prctl, because of the system’s boot configuration.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KThj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj—ubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒEPERM”h]”hŒEPERM”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KWhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj>ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒXSpeculation was disabled with PR_SPEC_FORCE_DISABLE and caller tried to enable it again.”h]”hŒXSpeculation was disabled with PR_SPEC_FORCE_DISABLE and caller tried to enable it again.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KWhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj—ubj»)�”}”(hhh]”(jÀ)�”}”(hhh]”hÌ)�”}”(hŒEPERM”h]”hŒEPERM”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KZhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjuubjÀ)�”}”(hhh]”hÌ)�”}”(hŒˆFor PR_SPEC_L1D_FLUSH and PR_SPEC_INDIRECT_BRANCH: control of the mitigation is not possible because of the system's boot configuration.”h]”hŒŠFor PR_SPEC_L1D_FLUSH and PR_SPEC_INDIRECT_BRANCH: control of the mitigation is not possible because of the system’s boot configuration.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KZhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jºhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j�hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‹hj,h²hh³hÊh´Nubeh}”(h]”Œ#pr-set-speculation-ctrl-error-codes”ah ]”h"]”Œ#pr_set_speculation_ctrl error codes”ah$]”h&]”uh1hµhh·h²hh³hÊh´KKubh¶)�”}”(hhh]”(h»)�”}”(hŒSpeculation misfeature controls”h]”hŒSpeculation misfeature controls”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÇh²hh³hÊh´K`ubj()�”}”(hhh]”(j-)�”}”(hXËPR_SPEC_STORE_BYPASS: Speculative Store Bypass Invocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE_NOEXEC, 0, 0); ”h]”(hÌ)�”}”(hŒ.PR_SPEC_STORE_BYPASS: Speculative Store Bypass”h]”hŒ.PR_SPEC_STORE_BYPASS: Speculative Store Bypass”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KahjÛubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hX–Invocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE_NOEXEC, 0, 0); ”h]”(hŒterm”“”)�”}”(hŒ Invocations:”h]”hŒ Invocations:”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jøh³hÊh´KhhjôubhŒ definition”“”)�”}”(hhh]”j()�”}”(hhh]”(j-)�”}”(hŒ>prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, 0, 0, 0);”h]”hÌ)�”}”(hjh]”hŒ>prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, 0, 0, 0);”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kdhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj ubj-)�”}”(hŒKprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0);”h]”hÌ)�”}”(hj)h]”hŒKprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0);”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kehj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj ubj-)�”}”(hŒLprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);”h]”hÌ)�”}”(hj@h]”hŒLprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kfhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj ubj-)�”}”(hŒRprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0);”h]”hÌ)�”}”(hjWh]”hŒRprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0);”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KghjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj ubj-)�”}”(hŒTprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE_NOEXEC, 0, 0); ”h]”hÌ)�”}”(hŒSprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE_NOEXEC, 0, 0);”h]”hŒSprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE_NOEXEC, 0, 0);”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj ubeh}”(h]”h ]”h"]”h$]”h&]”jdjeuh1j'h³hÊh´Kdhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÊh´Khhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j,hjØh²hh³Nh´Nubj-)�”}”(hXæPR_SPEC_INDIR_BRANCH: Indirect Branch Speculation in User Processes (Mitigate Spectre V2 style attacks against user processes) Invocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0); ”h]”jî)�”}”(hhh]”(jó)�”}”(hŒPR_SPEC_INDIR_BRANCH: Indirect Branch Speculation in User Processes (Mitigate Spectre V2 style attacks against user processes) ”h]”(jù)�”}”(hŒCPR_SPEC_INDIR_BRANCH: Indirect Branch Speculation in User Processes”h]”hŒCPR_SPEC_INDIR_BRANCH: Indirect Branch Speculation in User Processes”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jøh³hÊh´Kkhj©ubj )�”}”(hhh]”hÌ)�”}”(hŒ:(Mitigate Spectre V2 style attacks against user processes)”h]”hŒ:(Mitigate Spectre V2 style attacks against user processes)”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kkhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÊh´Kkhj¦ubjó)�”}”(hXLInvocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_DISABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0); ”h]”(jù)�”}”(hŒ Invocations:”h]”hŒ Invocations:”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jøh³hÊh´KqhjØubj )�”}”(hhh]”j()�”}”(hhh]”(j-)�”}”(hŒAprctl(PR_GET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, 0, 0, 0);”h]”hÌ)�”}”(hjòh]”hŒAprctl(PR_GET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, 0, 0, 0);”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Knhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjíubj-)�”}”(hŒNprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_ENABLE, 0, 0);”h]”hÌ)�”}”(hj h]”hŒNprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_ENABLE, 0, 0);”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kohjubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjíubj-)�”}”(hŒOprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_DISABLE, 0, 0);”h]”hÌ)�”}”(hj h]”hŒOprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_DISABLE, 0, 0);”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kphjubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjíubj-)�”}”(hŒVprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0); ”h]”hÌ)�”}”(hŒUprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0);”h]”hŒUprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0);”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kqhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjíubeh}”(h]”h ]”h"]”h$]”h&]”jdjeuh1j'h³hÊh´Knhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÊh´Kqhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jíhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjØh²hh³Nh´Nubj-)�”}”(hŒˆPR_SPEC_L1D_FLUSH: Flush L1D Cache on context switch out of the task (works only when tasks run on non SMT cores) ”h]”jî)�”}”(hhh]”jó)�”}”(hŒrPR_SPEC_L1D_FLUSH: Flush L1D Cache on context switch out of the task (works only when tasks run on non SMT cores) ”h]”(jù)�”}”(hŒDPR_SPEC_L1D_FLUSH: Flush L1D Cache on context switch out of the task”h]”hŒDPR_SPEC_L1D_FLUSH: Flush L1D Cache on context switch out of the task”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jøh³hÊh´Kthjrubj )�”}”(hhh]”hÌ)�”}”(hŒ,(works only when tasks run on non SMT cores)”h]”hŒ,(works only when tasks run on non SMT cores)”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kthj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÊh´Kthjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jdŒ-”uh1j'h³hÊh´KahjÇh²hubhÌ)�”}”(hŒ�For this control, PR_SPEC_ENABLE means that the **mitigation** is enabled (L1D is flushed), PR_SPEC_DISABLE means it is disabled.”h]”(hŒ0For this control, PR_SPEC_ENABLE means that the ”…”�”}”(hj´h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**mitigation**”h]”hŒ mitigation”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´ubhŒC is enabled (L1D is flushed), PR_SPEC_DISABLE means it is disabled.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KvhjÇh²hubj")�”}”(hŒäInvocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_DISABLE, 0, 0);”h]”jî)�”}”(hhh]”jó)�”}”(hŒáInvocations: * prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, 0, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_ENABLE, 0, 0); * prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_DISABLE, 0, 0);”h]”(jù)�”}”(hŒ Invocations:”h]”hŒ Invocations:”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jøh³hÊh´K{hjÝubj )�”}”(hhh]”j()�”}”(hhh]”(j-)�”}”(hŒ;prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, 0, 0, 0);”h]”hÌ)�”}”(hj÷h]”hŒ;prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, 0, 0, 0);”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kzhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjòubj-)�”}”(hŒHprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_ENABLE, 0, 0);”h]”hÌ)�”}”(hj h]”hŒHprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_ENABLE, 0, 0);”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K{hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjòubj-)�”}”(hŒIprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_DISABLE, 0, 0);”h]”hÌ)�”}”(hj% h]”hŒIprctl(PR_SET_SPECULATION_CTRL, PR_SPEC_L1D_FLUSH, PR_SPEC_DISABLE, 0, 0);”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K|hj# ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hjòubeh}”(h]”h ]”h"]”h$]”h&]”jdjeuh1j'h³hÊh´Kzhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÊh´K{hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jíhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j!h³hÊh´KyhjÇh²hubeh}”(h]”Œspeculation-misfeature-controls”ah ]”h"]”Œspeculation misfeature controls”ah$]”h&]”uh1hµhh·h²hh³hÊh´K`ubeh}”(h]”Œspeculation-control”ah ]”h"]”Œspeculation control”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”}”jì]”jáasŒnameids”}”(je jb jòjïj.jìj-j*j)j&jÄjÁj] jZ uŒ nametypes”}”(je ‰jò‰j.ˆj-‰j)‰jĉj] ‰uh}”(jb h·jïjljìjõj*jõj&j5jÁj,jZ jÇuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hÌ)�”}”(hhh]”hŒ3Hyperlink target "set-spec-ctrl" 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”K5uh1jï ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.