€•(ûŒ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/pat”Œ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/arch/x86/pat”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/it_IT/arch/x86/pat”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/ja_JP/arch/x86/pat”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/ko_KR/arch/x86/pat”Œ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/arch/x86/pat”Œ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/arch/x86/pat”Œ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³Œ:/var/lib/git/docbuild/linux/Documentation/arch/x86/pat.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒPAT (Page Attribute Table)”h]”hŒPAT (Page Attribute Table)”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hX,x86 Page Attribute Table (PAT) allows for setting the memory attribute at the page level granularity. PAT is complementary to the MTRR settings which allows for setting of memory types over physical address ranges. However, PAT is more flexible than MTRR due to its capability to set attributes at page level and also due to the fact that there are no hardware limitations on number of such attribute settings allowed. Added flexibility comes with guidelines for not having memory type aliasing for the same physical memory with multiple virtual addresses.”h]”hX,x86 Page Attribute Table (PAT) allows for setting the memory attribute at the page level granularity. PAT is complementary to the MTRR settings which allows for setting of memory types over physical address ranges. However, PAT is more flexible than MTRR due to its capability to set attributes at page level and also due to the fact that there are no hardware limitations on number of such attribute settings allowed. Added flexibility comes with guidelines for not having memory type aliasing for the same physical memory with multiple virtual addresses.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒyPAT allows for different types of memory attributes. The most commonly used ones that will be supported at this time are:”h]”hŒyPAT allows for different types of memory attributes. The most commonly used ones that will be supported at this time are:”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒWB”h]”hŒWB”…”�”}”(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Œ Write-back”h]”hŒ Write-back”…”�”}”(hjAh²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 hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒUC”h]”hŒUC”…”�”}”(hjah²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ŒUncached”h]”hŒUncached”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒWC”h]”hŒWC”…”�”}”(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ŒWrite-combined”h]”hŒWrite-combined”…”�”}”(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 hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒWT”h]”hŒWT”…”�”}”(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Œ Write-through”h]”hŒ Write-through”…”�”}”(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 hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj&)�”}”(hhh]”hÞ)�”}”(hŒUncached Minus”h]”hŒUncached Minus”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhhýubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhhÊh²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPAT APIs”h]”hŒPAT APIs”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjJh²hh³hÇh´KubhÞ)�”}”(hX—There are many different APIs in the kernel that allows setting of memory attributes at the page level. In order to avoid aliasing, these interfaces should be used thoughtfully. Below is a table of interfaces available, their intended usage and their memory attribute relationships. Internally, these APIs use a reserve_memtype()/free_memtype() interface on the physical address range to avoid any aliasing.”h]”hX—There are many different APIs in the kernel that allows setting of memory attributes at the page level. In order to avoid aliasing, these interfaces should be used thoughtfully. Below is a table of interfaces available, their intended usage and their memory attribute relationships. Internally, these APIs use a reserve_memtype()/free_memtype() interface on the physical address range to avoid any aliasing.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjJh²hubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjlubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjlubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjlubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjlubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒAPI”h]”hŒAPI”…”�”}”(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ŒRAM”h]”hŒRAM”…”�”}”(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ŒACPI,...”h]”hŒACPI,...”…”�”}”(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ŒReserved/Holes”h]”hŒReserved/Holes”…”�”}”(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—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒioremap”h]”hŒioremap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ ioremap_cache”h]”hŒ ioremap_cache”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒWB”h]”hŒWB”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒWB”h]”hŒWB”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ ioremap_uc”h]”hŒ ioremap_uc”…”�”}”(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Œ--”h]”hŒ--”…”�”}”(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ŒUC”h]”hŒUC”…”�”}”(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ŒUC”h]”hŒUC”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ ioremap_wc”h]”hŒ ioremap_wc”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjbh²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ŒWC”h]”hŒWC”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ ioremap_wt”h]”hŒ ioremap_wt”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubj&)�”}”(hhh]”hÞ)�”}”(hŒWT”h]”hŒWT”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒset_memory_uc, set_memory_wb”h]”hŒset_memory_uc, set_memory_wb”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒset_memory_wc, set_memory_wb”h]”hŒset_memory_wc, set_memory_wb”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒWC”h]”hŒWC”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒset_memory_wt, set_memory_wb”h]”hŒset_memory_wt, set_memory_wb”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒWT”h]”hŒWT”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒpci sysfs resource”h]”hŒpci sysfs resource”…”�”}”(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Œ--”h]”hŒ--”…”�”}”(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Œ--”h]”hŒ--”…”�”}”(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ŒWC”h]”hŒWC”…”�”}”(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—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒpci proc !PCIIOC_WRITE_COMBINE”h]”hŒpci proc !PCIIOC_WRITE_COMBINE”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒpci proc PCIIOC_WRITE_COMBINE”h]”hŒpci proc PCIIOC_WRITE_COMBINE”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubj&)�”}”(hhh]”hÞ)�”}”(hŒWC”h]”hŒWC”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ/dev/mem read-write”h]”hŒ/dev/mem read-write”…”�”}”(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Œ--”h]”hŒ--”…”�”}”(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Œ WB/WC/UC-”h]”hŒ WB/WC/UC-”…”�”}”(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Œ WB/WC/UC-”h]”hŒ WB/WC/UC-”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ/dev/mem mmap SYNC flag”h]”hŒ/dev/mem mmap SYNC flag”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ3/dev/mem mmap !SYNC flag and any alias to this area”h]”hŒ3/dev/mem mmap !SYNC flag and any alias to this area”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”(hŒ block_quote”“”)�”}”(hŒ WB/WC/UC- ”h]”hÞ)�”}”(hŒ WB/WC/UC-”h]”hŒ WB/WC/UC-”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KMhj¶ubhÞ)�”}”(hŒ(from existing alias)”h]”hŒ(from existing alias)”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KOhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubj&)�”}”(hhh]”(hÞ)�”}”(hŒ WB/WC/UC-”h]”hŒ WB/WC/UC-”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjçubhÞ)�”}”(hŒ(from existing alias)”h]”hŒ(from existing alias)”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KOhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ?/dev/mem mmap !SYNC flag no alias to this area and MTRR says WB”h]”hŒ?/dev/mem mmap !SYNC flag no alias to this area and MTRR says WB”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒWB”h]”hŒWB”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubj&)�”}”(hhh]”hÞ)�”}”(hŒWB”h]”hŒWB”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ@/dev/mem mmap !SYNC flag no alias to this area and MTRR says !WB”h]”hŒ@/dev/mem mmap !SYNC flag no alias to this area and MTRR says !WB”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjw ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjw ubj&)�”}”(hhh]”hÞ)�”}”(hŒ--”h]”hŒ--”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjw ubj&)�”}”(hhh]”hÞ)�”}”(hŒUC-”h]”hŒUC-”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjw ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhjJh²hh³hÇh´Nubeh}”(h]”Œpat-apis”ah ]”h"]”Œpat apis”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdvanced APIs for drivers”h]”hŒAdvanced APIs for drivers”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj÷ h²hh³hÇh´KaubhÞ)�”}”(hŒUA. Exporting pages to users with remap_pfn_range, io_remap_pfn_range, vmf_insert_pfn.”h]”hŒUA. Exporting pages to users with remap_pfn_range, io_remap_pfn_range, vmf_insert_pfn.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kchj÷ h²hubhÞ)�”}”(hŒeDrivers wanting to export some pages to userspace do it by using mmap interface and a combination of:”h]”hŒeDrivers wanting to export some pages to userspace do it by using mmap interface and a combination of:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kfhj÷ h²hubjº)�”}”(hŒW1) pgprot_noncached() 2) io_remap_pfn_range() or remap_pfn_range() or vmf_insert_pfn() ”h]”hŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒpgprot_noncached()”h]”hÞ)�”}”(hj1 h]”hŒpgprot_noncached()”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kihj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j- hj* ubj. )�”}”(hŒ>io_remap_pfn_range() or remap_pfn_range() or vmf_insert_pfn() ”h]”hÞ)�”}”(hŒ=io_remap_pfn_range() or remap_pfn_range() or vmf_insert_pfn()”h]”hŒ=io_remap_pfn_range() or remap_pfn_range() or vmf_insert_pfn()”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KjhjF ubah}”(h]”h ]”h"]”h$]”h&]”uh1j- hj* ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ)”uh1j( hj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kihj÷ h²hubhÞ)�”}”(hŒÊWith PAT support, a new API pgprot_writecombine is being added. So, drivers can continue to use the above sequence, with either pgprot_noncached() or pgprot_writecombine() in step 1, followed by step 2.”h]”hŒÊWith PAT support, a new API pgprot_writecombine is being added. So, drivers can continue to use the above sequence, with either pgprot_noncached() or pgprot_writecombine() in step 1, followed by step 2.”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Klhj÷ h²hubhÞ)�”}”(hŒwIn addition, step 2 internally tracks the region as UC or WC in memtype list in order to ensure no conflicting mapping.”h]”hŒwIn addition, step 2 internally tracks the region as UC or WC in memtype list in order to ensure no conflicting mapping.”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kphj÷ h²hubhÞ)�”}”(hXNote that this set of APIs only works with IO (non RAM) regions. If driver wants to export a RAM region, it has to do set_memory_uc() or set_memory_wc() as step 0 above and also track the usage of those pages and use set_memory_wb() before the page is freed to free pool.”h]”hXNote that this set of APIs only works with IO (non RAM) regions. If driver wants to export a RAM region, it has to do set_memory_uc() or set_memory_wc() as step 0 above and also track the usage of those pages and use set_memory_wb() before the page is freed to free pool.”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kshj÷ h²hubeh}”(h]”Œadvanced-apis-for-drivers”ah ]”h"]”Œadvanced apis for drivers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KaubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ%MTRR effects on PAT / non-PAT systems”h]”hŒ%MTRR effects on PAT / non-PAT systems”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¡ h²hh³hÇh´KyubhÞ)�”}”(hX§The following table provides the effects of using write-combining MTRRs when using ioremap*() calls on x86 for both non-PAT and PAT systems. Ideally mtrr_add() usage will be phased out in favor of arch_phys_wc_add() which will be a no-op on PAT enabled systems. The region over which a arch_phys_wc_add() is made, should already have been ioremapped with WC attributes or PAT entries, this can be done by using ioremap_wc() / set_memory_wc(). Devices which combine areas of IO memory desired to remain uncacheable with areas where write-combining is desirable should consider use of ioremap_uc() followed by set_memory_wc() to white-list effective write-combined areas. Such use is nevertheless discouraged as the effective memory type is considered implementation defined, yet this strategy can be used as last resort on devices with size-constrained regions where otherwise MTRR write-combining would otherwise not be effective. ::”h]”hX¤The following table provides the effects of using write-combining MTRRs when using ioremap*() calls on x86 for both non-PAT and PAT systems. Ideally mtrr_add() usage will be phased out in favor of arch_phys_wc_add() which will be a no-op on PAT enabled systems. The region over which a arch_phys_wc_add() is made, should already have been ioremapped with WC attributes or PAT entries, this can be done by using ioremap_wc() / set_memory_wc(). Devices which combine areas of IO memory desired to remain uncacheable with areas where write-combining is desirable should consider use of ioremap_uc() followed by set_memory_wc() to white-list effective write-combined areas. Such use is nevertheless discouraged as the effective memory type is considered implementation defined, yet this strategy can be used as last resort on devices with size-constrained regions where otherwise MTRR write-combining would otherwise not be effective.”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K{hj¡ h²hubhŒ literal_block”“”)�”}”(hX;==== ======= === ========================= ===================== MTRR Non-PAT PAT Linux ioremap value Effective memory type ==== ======= === ========================= ===================== PAT Non-PAT | PAT |PCD | ||PWT | ||| | WC 000 WB _PAGE_CACHE_MODE_WB WC | WC WC 001 WC _PAGE_CACHE_MODE_WC WC* | WC WC 010 UC- _PAGE_CACHE_MODE_UC_MINUS WC* | UC WC 011 UC _PAGE_CACHE_MODE_UC UC | UC ==== ======= === ========================= ===================== (*) denotes implementation defined and is discouraged”h]”hX;==== ======= === ========================= ===================== MTRR Non-PAT PAT Linux ioremap value Effective memory type ==== ======= === ========================= ===================== PAT Non-PAT | PAT |PCD | ||PWT | ||| | WC 000 WB _PAGE_CACHE_MODE_WB WC | WC WC 001 WC _PAGE_CACHE_MODE_WC WC* | WC WC 010 UC- _PAGE_CACHE_MODE_UC_MINUS WC* | UC WC 011 UC _PAGE_CACHE_MODE_UC UC | UC ==== ======= === ========================= ===================== (*) denotes implementation defined and is discouraged”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÀ h³hÇh´KŠhj¡ h²hubhŒnote”“”)�”}”(hŒ½-- in the above table mean "Not suggested usage for the API". Some of the --'s are strictly enforced by the kernel. Some others are not really enforced today, but may be enforced in future.”h]”hÞ)�”}”(hŒ½-- in the above table mean "Not suggested usage for the API". Some of the --'s are strictly enforced by the kernel. Some others are not really enforced today, but may be enforced in future.”h]”hŒÃ-- in the above table mean “Not suggested usage for the APIâ€�. Some of the --‘s are strictly enforced by the kernel. Some others are not really enforced today, but may be enforced in future.”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K™hjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÐ hj¡ h²hh³hÇh´NubhÞ)�”}”(hX For ioremap and pci access through /sys or /proc - The actual type returned can be more restrictive, in case of any existing aliasing for that address. For example: If there is an existing uncached mapping, a new ioremap_wc can return uncached mapping in place of write-combine requested.”h]”hX For ioremap and pci access through /sys or /proc - The actual type returned can be more restrictive, in case of any existing aliasing for that address. For example: If there is an existing uncached mapping, a new ioremap_wc can return uncached mapping in place of write-combine requested.”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hj¡ h²hubhÞ)�”}”(hŒ—set_memory_[uc|wc|wt] and set_memory_wb should be used in pairs, where driver will first make a region uc, wc or wt and switch it back to wb after use.”h]”hŒ—set_memory_[uc|wc|wt] and set_memory_wb should be used in pairs, where driver will first make a region uc, wc or wt and switch it back to wb after use.”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¢hj¡ h²hubhÞ)�”}”(hŒœOver time writes to /proc/mtrr will be deprecated in favor of using PAT based interfaces. Users writing to /proc/mtrr are suggested to use above interfaces.”h]”hŒœOver time writes to /proc/mtrr will be deprecated in favor of using PAT based interfaces. Users writing to /proc/mtrr are suggested to use above interfaces.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¥hj¡ h²hubhÞ)�”}”(hŒPDrivers should use ioremap_[uc|wc] to access PCI BARs with [uc|wc] access types.”h]”hŒPDrivers should use ioremap_[uc|wc] to access PCI BARs with [uc|wc] access types.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¨hj¡ h²hubhÞ)�”}”(hŒKDrivers should use set_memory_[uc|wc|wt] to set access type for RAM ranges.”h]”hŒKDrivers should use set_memory_[uc|wc|wt] to set access type for RAM ranges.”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K«hj¡ h²hubeh}”(h]”Œ#mtrr-effects-on-pat-non-pat-systems”ah ]”h"]”Œ%mtrr effects on pat / non-pat systems”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KyubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ PAT debugging”h]”hŒ PAT debugging”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj8 h²hh³hÇh´K¯ubhÞ)�”}”(hŒCWith CONFIG_DEBUG_FS enabled, PAT memtype list can be examined by::”h]”hŒBWith CONFIG_DEBUG_FS enabled, PAT memtype list can be examined by:”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K±hj8 h²hubjÁ )�”}”(hX´# mount -t debugfs debugfs /sys/kernel/debug # cat /sys/kernel/debug/x86/pat_memtype_list PAT memtype list: uncached-minus @ 0x7fadf000-0x7fae0000 uncached-minus @ 0x7fb19000-0x7fb1a000 uncached-minus @ 0x7fb1a000-0x7fb1b000 uncached-minus @ 0x7fb1b000-0x7fb1c000 uncached-minus @ 0x7fb1c000-0x7fb1d000 uncached-minus @ 0x7fb1d000-0x7fb1e000 uncached-minus @ 0x7fb1e000-0x7fb25000 uncached-minus @ 0x7fb25000-0x7fb26000 uncached-minus @ 0x7fb26000-0x7fb27000 uncached-minus @ 0x7fb27000-0x7fb28000 uncached-minus @ 0x7fb28000-0x7fb2e000 uncached-minus @ 0x7fb2e000-0x7fb2f000 uncached-minus @ 0x7fb2f000-0x7fb30000 uncached-minus @ 0x7fb31000-0x7fb32000 uncached-minus @ 0x80000000-0x90000000”h]”hX´# mount -t debugfs debugfs /sys/kernel/debug # cat /sys/kernel/debug/x86/pat_memtype_list PAT memtype list: uncached-minus @ 0x7fadf000-0x7fae0000 uncached-minus @ 0x7fb19000-0x7fb1a000 uncached-minus @ 0x7fb1a000-0x7fb1b000 uncached-minus @ 0x7fb1b000-0x7fb1c000 uncached-minus @ 0x7fb1c000-0x7fb1d000 uncached-minus @ 0x7fb1d000-0x7fb1e000 uncached-minus @ 0x7fb1e000-0x7fb25000 uncached-minus @ 0x7fb25000-0x7fb26000 uncached-minus @ 0x7fb26000-0x7fb27000 uncached-minus @ 0x7fb27000-0x7fb28000 uncached-minus @ 0x7fb28000-0x7fb2e000 uncached-minus @ 0x7fb2e000-0x7fb2f000 uncached-minus @ 0x7fb2f000-0x7fb30000 uncached-minus @ 0x7fb31000-0x7fb32000 uncached-minus @ 0x80000000-0x90000000”…”�”}”hjW sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÀ h³hÇh´K³hj8 h²hubhÞ)�”}”(hŒnThis list shows physical address ranges and various PAT settings used to access those physical address ranges.”h]”hŒnThis list shows physical address ranges and various PAT settings used to access those physical address ranges.”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhj8 h²hubhÞ)�”}”(hŒ¨Another, more verbose way of getting PAT related debug messages is with "debugpat" boot parameter. With this parameter, various debug messages are printed to dmesg log.”h]”hŒ¬Another, more verbose way of getting PAT related debug messages is with “debugpatâ€� boot parameter. With this parameter, various debug messages are printed to dmesg log.”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÉhj8 h²hubeh}”(h]”Œ pat-debugging”ah ]”h"]”Œ pat debugging”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K¯ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPAT Initialization”h]”hŒPAT Initialization”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‰ h²hh³hÇh´KÎubhÞ)�”}”(hX"The following table describes how PAT is initialized under various configurations. The PAT MSR must be updated by Linux in order to support WC and WT attributes. Otherwise, the PAT MSR has the value programmed in it by the firmware. Note, Xen enables WC attribute in the PAT MSR for guests.”h]”hX"The following table describes how PAT is initialized under various configurations. The PAT MSR must be updated by Linux in order to support WC and WT attributes. Otherwise, the PAT MSR has the value programmed in it by the firmware. Note, Xen enables WC attribute in the PAT MSR for guests.”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhj‰ h²hubjº)�”}”(hX¤==== ===== ========================== ========= ======= MTRR PAT Call Sequence PAT State PAT MSR ==== ===== ========================== ========= ======= E E MTRR -> PAT init Enabled OS E D MTRR -> PAT init Disabled - D E MTRR -> PAT disable Disabled BIOS D D MTRR -> PAT disable Disabled - - np/E PAT -> PAT disable Disabled BIOS - np/D PAT -> PAT disable Disabled - E !P/E MTRR -> PAT init Disabled BIOS D !P/E MTRR -> PAT disable Disabled BIOS !M !P/E MTRR stub -> PAT disable Disabled BIOS ==== ===== ========================== ========= ======= Legend ========= ======================================= E Feature enabled in CPU D Feature disabled/unsupported in CPU np "nopat" boot option specified !P CONFIG_X86_PAT option unset !M CONFIG_MTRR option unset Enabled PAT state set to enabled Disabled PAT state set to disabled OS PAT initializes PAT MSR with OS setting BIOS PAT keeps PAT MSR with BIOS setting ========= ======================================= ”h]”(hü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj¯ ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj¯ ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj¯ ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhj¯ ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhj¯ ubhŒthead”“”)�”}”(hhh]”j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒMTRR”h]”hŒMTRR”…”�”}”(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ŒPAT”h]”hŒPAT”…”�”}”(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Œ Call Sequence”h]”hŒ Call Sequence”…”�”}”(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Œ PAT State”h]”hŒ PAT State”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjé ubj&)�”}”(hhh]”hÞ)�”}”(hŒPAT MSR”h]”hŒPAT MSR”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjé ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jä hj¯ ubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒE”h]”hŒE”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjn ubj&)�”}”(hhh]”hÞ)�”}”(hjv h]”hŒE”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjn ubj&)�”}”(hhh]”hÞ)�”}”(hŒMTRR -> PAT init”h]”hŒMTRR -> PAT init”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjn ubj&)�”}”(hhh]”hÞ)�”}”(hŒEnabled”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&]”uh1j%hjn ubj&)�”}”(hhh]”hÞ)�”}”(hŒOS”h]”hŒOS”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjÌ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjn ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hjv h]”hŒE”…”�”}”(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ŒD”h]”hŒD”…”�”}”(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ŒMTRR -> PAT init”h]”hŒMTRR -> PAT init”…”�”}”(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ŒDisabled”h]”hŒDisabled”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÙhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjé ubj&)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”j. )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j- hjL ubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jJ h³hÇh´KÙhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjé ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hj h]”hŒD”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl ubj&)�”}”(hhh]”hÞ)�”}”(hjv h]”hŒE”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl ubj&)�”}”(hhh]”hÞ)�”}”(hŒMTRR -> PAT disable”h]”hŒMTRR -> PAT disable”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl ubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”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&]”uh1j%hjl ubj&)�”}”(hhh]”hÞ)�”}”(hŒBIOS”h]”hŒBIOS”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hj h]”hŒD”…”�”}”(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Þ)�”}”(hj h]”hŒD”…”�”}”(hjh²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ŒMTRR -> PAT disable”h]”hŒMTRR -> PAT disable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjæ ubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”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&]”uh1j%hjæ ubj&)�”}”(hhh]”jK )�”}”(hhh]”j. )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j- hjFubah}”(h]”h ]”h"]”h$]”h&]”j^ j_ uh1jJ h³hÇh´KÛhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjæ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”jK )�”}”(hhh]”j. )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j- hjjubah}”(h]”h ]”h"]”h$]”h&]”j^ j_ uh1jJ h³hÇh´KÜhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒnp/E”h]”hŒnp/E”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒPAT -> PAT disable”h]”hŒPAT -> PAT disable”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”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&]”uh1j%hjdubj&)�”}”(hhh]”hÞ)�”}”(hŒBIOS”h]”hŒBIOS”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”jK )�”}”(hhh]”j. )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j- hjêubah}”(h]”h ]”h"]”h$]”h&]”j^ j_ uh1jJ h³hÇh´KÝhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäubj&)�”}”(hhh]”hÞ)�”}”(hŒnp/D”h]”hŒnp/D”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäubj&)�”}”(hhh]”hÞ)�”}”(hŒPAT -> PAT disable”h]”hŒPAT -> PAT disable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”h]”hŒDisabled”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäubj&)�”}”(hhh]”jK )�”}”(hhh]”j. )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j- hjJubah}”(h]”h ]”h"]”h$]”h&]”j^ j_ uh1jJ h³hÇh´KÝhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hjv h]”hŒE”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhubj&)�”}”(hhh]”hÞ)�”}”(hŒ!P/E”h]”hŒ!P/E”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhubj&)�”}”(hhh]”hÞ)�”}”(hŒMTRR -> PAT init”h]”hŒMTRR -> PAT init”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”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&]”uh1j%hjhubj&)�”}”(hhh]”hÞ)�”}”(hŒBIOS”h]”hŒBIOS”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÞhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hj h]”hŒD”…”�”}”(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Œ!P/E”h]”hŒ!P/E”…”�”}”(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ŒMTRR -> PAT disable”h]”hŒMTRR -> PAT disable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kßhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubj&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”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&]”uh1j%hjãubj&)�”}”(hhh]”hÞ)�”}”(hŒBIOS”h]”hŒBIOS”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KßhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjk ubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒ!M”h]”hŒ!M”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kàhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj^ubj&)�”}”(hhh]”hÞ)�”}”(hŒ!P/E”h]”hŒ!P/E”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kàhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj^ubj&)�”}”(hhh]”hÞ)�”}”(hŒMTRR stub -> PAT disable”h]”hŒMTRR stub -> PAT 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ŒDisabled”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&]”uh1j%hj^ubj&)�”}”(hhh]”hÞ)�”}”(hŒBIOS”h]”hŒBIOS”…”�”}”(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 hjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj¨ ubjº)�”}”(hŒLegend ”h]”hÞ)�”}”(hŒLegend”h]”hŒLegend”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kãhj¨ ubhü)�”}”(hhh]”j)�”}”(hhh]”(j)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K'uh1jhjubj)�”}”(hhh]”(j!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hjv h]”hŒE”…”�”}”(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ŒFeature enabled in CPU”h]”hŒFeature enabled in CPU”…”�”}”(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Þ)�”}”(hj h]”hŒD”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kçhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjXubj&)�”}”(hhh]”hÞ)�”}”(hŒ#Feature disabled/unsupported in CPU”h]”hŒ#Feature disabled/unsupported in CPU”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kçhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒnp”h]”hŒnp”…”�”}”(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Œ"nopat" boot option specified”h]”hŒ!“nopatâ€� boot option specified”…”�”}”(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Œ!P”h]”hŒ!P”…”�”}”(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ŒCONFIG_X86_PAT option unset”h]”hŒCONFIG_X86_PAT option unset”…”�”}”(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Œ!M”h]”hŒ!M”…”�”}”(hjh²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ŒCONFIG_MTRR option unset”h]”hŒCONFIG_MTRR option unset”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒEnabled”h]”hŒEnabled”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Këhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3ubj&)�”}”(hhh]”hÞ)�”}”(hŒPAT state set to enabled”h]”hŒPAT state set to enabled”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KëhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒDisabled”h]”hŒDisabled”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kìhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjjubj&)�”}”(hhh]”hÞ)�”}”(hŒPAT state set to disabled”h]”hŒPAT state set to disabled”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kìhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj!)�”}”(hhh]”(j&)�”}”(hhh]”hÞ)�”}”(hŒOS”h]”hŒOS”…”�”}”(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Œ'PAT initializes PAT MSR with OS setting”h]”hŒ'PAT initializes PAT MSR with OS setting”…”�”}”(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ŒBIOS”h]”hŒBIOS”…”�”}”(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Œ#PAT keeps PAT MSR with BIOS setting”h]”hŒ#PAT keeps PAT MSR with BIOS setting”…”�”}”(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 hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hûhj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÕhj‰ h²hubeh}”(h]”Œpat-initialization”ah ]”h"]”Œpat initialization”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÎubeh}”(h]”Œpat-page-attribute-table”ah ]”h"]”Œpat (page attribute table)”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”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”}”Œrefids”}”Œnameids”}”(j5j2jô jñ jž j› j5 j2 j† jƒ j-j*uŒ nametypes”}”(j5‰jô ‰jž ‰j5 ‰j† ‰j-‰uh}”(j2hÊjñ jJj› j÷ j2 j¡ jƒ j8 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”“”}”…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”K*Œsource”hÇuh1j¼hjubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K,Œsource”hÇuh1j¼hj~ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjõubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K.Œsource”hÇuh1j¼hjãubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K0Œsource”hÇuh1j¼hjHubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K0Œsource”hÇuh1j¼hj_ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjFubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K2Œsource”hÇuh1j¼hj­ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjaubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K2Œsource”hÇuh1j¼hjÄubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj|ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K4Œsource”hÇuh1j¼hj)ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K4Œsource”hÇuh1j¼hj@ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj²ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K7Œsource”hÇuh1j¼hjŽubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÍubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K7Œsource”hÇuh1j¼hj¥ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjèubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K:Œsource”hÇuh1j¼hjóubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K:Œsource”hÇuh1j¼hj ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K=Œsource”hÇuh1j¼hjAubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K=Œsource”hÇuh1j¼hjXubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjTubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K?Œsource”hÇuh1j¼hj¦ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjoubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”K?Œsource”hÇuh1j¼hj½ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjŠubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KBŒsource”hÇuh1j¼hj ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KBŒsource”hÇuh1j¼hj"ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÀubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KEŒsource”hÇuh1j¼hjpubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÛubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KEŒsource”hÇuh1j¼hj‡ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjöubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KHŒsource”hÇuh1j¼hjÕubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KKŒsource”hÇuh1j¼hj:ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj,ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KNŒsource”hÇuh1j¼hjŸubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjGubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KSŒsource”hÇuh1j¼hj, ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjbubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KYŒsource”hÇuh1j¼hj‘ ubj½)�”}”(hhh]”hÞ)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj}ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j׌line”KYŒsource”hÇuh1j¼hj¨ ubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.