sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/mm/arch_pgtable_helpersmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/mm/arch_pgtable_helpersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/mm/arch_pgtable_helpersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/mm/arch_pgtable_helpersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/mm/arch_pgtable_helpersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/mm/arch_pgtable_helpersmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/mm/arch_pgtable_helpers.rsthKubhsection)}(hhh](htitle)}(hArchitecture Page Table Helpersh]hArchitecture Page Table Helpers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXGeneric MM expects architectures (with MMU) to provide helpers to create, access and modify page table entries at various level for different memory functions. These page table helpers need to conform to a common semantics across platforms. Following tables describe the expected semantics which can also be tested during boot via CONFIG_DEBUG_VM_PGTABLE option. All future changes in here or the debug test need to be in sync.h]hXGeneric MM expects architectures (with MMU) to provide helpers to create, access and modify page table entries at various level for different memory functions. These page table helpers need to conform to a common semantics across platforms. Following tables describe the expected semantics which can also be tested during boot via CONFIG_DEBUG_VM_PGTABLE option. All future changes in here or the debug test need to be in sync.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hPTE Page Table Helpersh]hPTE Page Table Helpers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhhubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1hhhubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(hpte_sameh]hpte_same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h+Tests whether both PTE entries are the sameh]h+Tests whether both PTE entries are the same}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_presenth]h pte_present}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1jhjJubj)}(hhh]h)}(hTests a valid mapped PTEh]hTests a valid mapped PTE}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjdubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_youngh]h pte_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a young PTEh]hTests a young PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_dirtyh]h pte_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a dirty PTEh]hTests a dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_writeh]h pte_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a writable PTEh]hTests a writable PTE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_specialh]h pte_special}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj)ubah}(h]h ]h"]h$]h&]uh1jhj&ubj)}(hhh]h)}(hTests a special PTEh]hTests a special PTE}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj@ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_protnoneh]h pte_protnone}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jhj]ubj)}(hhh]h)}(hTests a PROT_NONE PTEh]hTests a PROT_NONE PTE}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_devmaph]h pte_devmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a ZONE_DEVICE mapped PTEh]hTests a ZONE_DEVICE mapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_soft_dirtyh]hpte_soft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a soft dirty PTEh]hTests a soft dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_swp_soft_dirtyh]hpte_swp_soft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a soft dirty swapped PTEh]hTests a soft dirty swapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkyoungh]h pte_mkyoung}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hj<ubah}(h]h ]h"]h$]h&]uh1jhj9ubj)}(hhh]h)}(hCreates a young PTEh]hCreates a young PTE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjSubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkoldh]h pte_mkold}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjsubah}(h]h ]h"]h$]h&]uh1jhjpubj)}(hhh]h)}(hCreates an old PTEh]hCreates an old PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkdirtyh]h pte_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a dirty PTEh]hCreates a dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkcleanh]h pte_mkclean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a clean PTEh]hCreates a clean PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkwriteh]h pte_mkwrite}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h8Creates a writable PTE of the type specified by the VMA.h]h8Creates a writable PTE of the type specified by the VMA.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_mkwrite_novmah]hpte_mkwrite_novma}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjOubah}(h]h ]h"]h$]h&]uh1jhjLubj)}(hhh]h)}(h=Creates a writable PTE, of the conventional type of writable.h]h=Creates a writable PTE, of the conventional type of writable.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjfubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_wrprotecth]h pte_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a write protected PTEh]hCreates a write protected PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkspecialh]h pte_mkspecial}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a special PTEh]hCreates a special PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkdevmaph]h pte_mkdevmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Creates a ZONE_DEVICE mapped PTEh]h Creates a ZONE_DEVICE mapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_mksoft_dirtyh]hpte_mksoft_dirty}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hj+ubah}(h]h ]h"]h$]h&]uh1jhj(ubj)}(hhh]h)}(hCreates a soft dirty PTEh]hCreates a soft dirty PTE}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjBubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_clear_soft_dirtyh]hpte_clear_soft_dirty}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjbubah}(h]h ]h"]h$]h&]uh1jhj_ubj)}(hhh]h)}(hClears a soft dirty PTEh]hClears a soft dirty PTE}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjyubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_swp_mksoft_dirtyh]hpte_swp_mksoft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Creates a soft dirty swapped PTEh]h Creates a soft dirty swapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_swp_clear_soft_dirtyh]hpte_swp_clear_soft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears a soft dirty swapped PTEh]hClears a soft dirty swapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_mknotpresenth]hpte_mknotpresent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hInvalidates a mapped PTEh]hInvalidates a mapped PTE}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h ptep_clearh]h ptep_clear}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhj>ubah}(h]h ]h"]h$]h&]uh1jhj;ubj)}(hhh]h)}(h Clears a PTEh]h Clears a PTE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjUubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hptep_get_and_clearh]hptep_get_and_clear}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjuubah}(h]h ]h"]h$]h&]uh1jhjrubj)}(hhh]h)}(hClears and returns PTEh]hClears and returns PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hptep_get_and_clear_fullh]hptep_get_and_clear_full}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h*Clears and returns PTE (batched PTE unmap)h]h*Clears and returns PTE (batched PTE unmap)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hptep_test_and_clear_youngh]hptep_test_and_clear_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears young from a PTEh]hClears young from a PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hptep_set_wrprotecth]hptep_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a write protected PTEh]h#Converts into a write protected PTE}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hptep_set_access_flagsh]hptep_set_access_flags}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjQubah}(h]h ]h"]h$]h&]uh1jhjNubj)}(hhh]h)}(h#Converts into a more permissive PTEh]h#Converts into a more permissive PTE}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjhubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hhubeh}(h]h ]h"]h$]h&]colsKuh1hhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]pte-page-table-helpersah ]h"]pte page table helpersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPMD Page Table Helpersh]hPMD Page Table Helpers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKTubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1hhjubj )}(hhh](j)}(hhh](j)}(hhh]h)}(hpmd_sameh]hpmd_same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h+Tests whether both PMD entries are the sameh]h+Tests whether both PMD entries are the same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_badh]hpmd_bad}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a non-table mapped PMDh]hTests a non-table mapped PMD}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_leafh]hpmd_leaf}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hj?ubah}(h]h ]h"]h$]h&]uh1jhj<ubj)}(hhh]h)}(hTests a leaf mapped PMDh]hTests a leaf mapped PMD}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjVubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_trans_hugeh]hpmd_trans_huge}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjvubah}(h]h ]h"]h$]h&]uh1jhjsubj)}(hhh]h)}(h*Tests a Transparent Huge Page (THP) at PMDh]h*Tests a Transparent Huge Page (THP) at PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_presenth]h pmd_present}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h/Tests whether pmd_page() points to valid memoryh]h/Tests whether pmd_page() points to valid memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_youngh]h pmd_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a young PMDh]hTests a young PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_dirtyh]h pmd_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a dirty PMDh]hTests a dirty PMD}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj2 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_writeh]h pmd_write}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjR ubah}(h]h ]h"]h$]h&]uh1jhjO ubj)}(hhh]h)}(hTests a writable PMDh]hTests a writable PMD}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehji ubah}(h]h ]h"]h$]h&]uh1jhjO ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_specialh]h pmd_special}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a special PMDh]hTests a special PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_protnoneh]h pmd_protnone}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a PROT_NONE PMDh]hTests a PROT_NONE PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_devmaph]h pmd_devmap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a ZONE_DEVICE mapped PMDh]hTests a ZONE_DEVICE mapped PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_soft_dirtyh]hpmd_soft_dirty}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhj. ubah}(h]h ]h"]h$]h&]uh1jhj+ ubj)}(hhh]h)}(hTests a soft dirty PMDh]hTests a soft dirty PMD}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjE ubah}(h]h ]h"]h$]h&]uh1jhj+ ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_swp_soft_dirtyh]hpmd_swp_soft_dirty}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohje ubah}(h]h ]h"]h$]h&]uh1jhjb ubj)}(hhh]h)}(hTests a soft dirty swapped PMDh]hTests a soft dirty swapped PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohj| ubah}(h]h ]h"]h$]h&]uh1jhjb ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkyoungh]h pmd_mkyoung}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a young PMDh]hCreates a young PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkoldh]h pmd_mkold}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates an old PMDh]hCreates an old PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkdirtyh]h pmd_mkdirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a dirty PMDh]hCreates a dirty PMD}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhj! ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkcleanh]h pmd_mkclean}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjA ubah}(h]h ]h"]h$]h&]uh1jhj> ubj)}(hhh]h)}(hCreates a clean PMDh]hCreates a clean PMD}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjX ubah}(h]h ]h"]h$]h&]uh1jhj> ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkwriteh]h pmd_mkwrite}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjx ubah}(h]h ]h"]h$]h&]uh1jhju ubj)}(hhh]h)}(h8Creates a writable PMD of the type specified by the VMA.h]h8Creates a writable PMD of the type specified by the VMA.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj ubah}(h]h ]h"]h$]h&]uh1jhju ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_mkwrite_novmah]hpmd_mkwrite_novma}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h=Creates a writable PMD, of the conventional type of writable.h]h=Creates a writable PMD, of the conventional type of writable.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_wrprotecth]h pmd_wrprotect}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a write protected PMDh]hCreates a write protected PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkspecialh]h pmd_mkspecial}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a special PMDh]hCreates a special PMD}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkdevmaph]h pmd_mkdevmap}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjT ubah}(h]h ]h"]h$]h&]uh1jhjQ ubj)}(hhh]h)}(h Creates a ZONE_DEVICE mapped PMDh]h Creates a ZONE_DEVICE mapped PMD}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjk ubah}(h]h ]h"]h$]h&]uh1jhjQ ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_mksoft_dirtyh]hpmd_mksoft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a soft dirty PMDh]hCreates a soft dirty PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_clear_soft_dirtyh]hpmd_clear_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hClears a soft dirty PMDh]hClears a soft dirty PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_swp_mksoft_dirtyh]hpmd_swp_mksoft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h Creates a soft dirty swapped PMDh]h Creates a soft dirty swapped PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_swp_clear_soft_dirtyh]hpmd_swp_clear_soft_dirty}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj0 ubah}(h]h ]h"]h$]h&]uh1jhj- ubj)}(hhh]h)}(hClears a soft dirty swapped PMDh]hClears a soft dirty swapped PMD}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjG ubah}(h]h ]h"]h$]h&]uh1jhj- ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkinvalidh]h pmd_mkinvalid}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjg ubah}(h]h ]h"]h$]h&]uh1jhjd ubj)}(hhh]h)}(h>Invalidates a present PMD; do not call for non-present PMD [1]h]h>Invalidates a present PMD; do not call for non-present PMD [1]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ ubah}(h]h ]h"]h$]h&]uh1jhjd ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_set_hugeh]h pmd_set_huge}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a PMD huge mappingh]hCreates a PMD huge mapping}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_clear_hugeh]hpmd_clear_huge}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hClears a PMD huge mappingh]hClears a PMD huge mapping}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_get_and_clearh]hpmdp_get_and_clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h Clears a PMDh]h Clears a PMD}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_get_and_clear_fullh]hpmdp_get_and_clear_full}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjCubah}(h]h ]h"]h$]h&]uh1jhj@ubj)}(hhh]h)}(h Clears a PMDh]h Clears a PMD}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjZubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_test_and_clear_youngh]hpmdp_test_and_clear_young}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjzubah}(h]h ]h"]h$]h&]uh1jhjwubj)}(hhh]h)}(hClears young from a PMDh]hClears young from a PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_set_wrprotecth]hpmdp_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a write protected PMDh]h#Converts into a write protected PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_set_access_flagsh]hpmdp_set_access_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a more permissive PMDh]h#Converts into a more permissive PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]colsKuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]pmd-page-table-helpersah ]h"]pmd page table helpersah$]h&]uh1hhhhhhhhKTubh)}(hhh](h)}(hPUD Page Table Helpersh]hPUD Page Table Helpers}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhKubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjKubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1hhjKubj )}(hhh](j)}(hhh](j)}(hhh]h)}(hpud_sameh]hpud_same}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhubah}(h]h ]h"]h$]h&]uh1jhjeubj)}(hhh]h)}(h+Tests whether both PUD entries are the sameh]h+Tests whether both PUD entries are the same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpud_badh]hpud_bad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a non-table mapped PUDh]hTests a non-table mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpud_leafh]hpud_leaf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a leaf mapped PUDh]hTests a leaf mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpud_trans_hugeh]hpud_trans_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h*Tests a Transparent Huge Page (THP) at PUDh]h*Tests a Transparent Huge Page (THP) at PUD}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_presenth]h pud_present}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjDubah}(h]h ]h"]h$]h&]uh1jhjAubj)}(hhh]h)}(hTests a valid mapped PUDh]hTests a valid mapped PUD}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_youngh]h pud_young}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1jhjxubj)}(hhh]h)}(hTests a young PUDh]hTests a young PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_dirtyh]h pud_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a dirty PUDh]hTests a dirty PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_writeh]h pud_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a writable PUDh]hTests a writable PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_devmaph]h pud_devmap}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a ZONE_DEVICE mapped PUDh]hTests a ZONE_DEVICE mapped PUD}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkyoungh]h pud_mkyoung}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubah}(h]h ]h"]h$]h&]uh1jhjTubj)}(hhh]h)}(hCreates a young PUDh]hCreates a young PUD}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjnubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkoldh]h pud_mkold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates an old PUDh]hCreates an old PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkdirtyh]h pud_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a dirty PUDh]hCreates a dirty PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkcleanh]h pud_mkclean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a clean PUDh]hCreates a clean PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkwriteh]h pud_mkwrite}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jhj0ubj)}(hhh]h)}(hCreates a writable PUDh]hCreates a writable PUD}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjJubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_wrprotecth]h pud_wrprotect}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1jhjgubj)}(hhh]h)}(hCreates a write protected PUDh]hCreates a write protected PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkdevmaph]h pud_mkdevmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Creates a ZONE_DEVICE mapped PUDh]h Creates a ZONE_DEVICE mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_mkinvalidh]h pud_mkinvalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h>Invalidates a present PUD; do not call for non-present PUD [1]h]h>Invalidates a present PUD; do not call for non-present PUD [1]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(h pud_set_hugeh]h pud_set_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a PUD huge mappingh]hCreates a PUD huge mapping}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpud_clear_hugeh]hpud_clear_huge}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1jhjCubj)}(hhh]h)}(hClears a PUD huge mappingh]hClears a PUD huge mapping}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpudp_get_and_clearh]hpudp_get_and_clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}ubah}(h]h ]h"]h$]h&]uh1jhjzubj)}(hhh]h)}(h Clears a PUDh]h Clears a PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpudp_get_and_clear_fullh]hpudp_get_and_clear_full}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Clears a PUDh]h Clears a PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpudp_test_and_clear_youngh]hpudp_test_and_clear_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears young from a PUDh]hClears young from a PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpudp_set_wrprotecth]hpudp_set_wrprotect}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj"ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a write protected PUDh]h#Converts into a write protected PUD}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjbubj)}(hhh](j)}(hhh]h)}(hpudp_set_access_flagsh]hpudp_set_access_flags}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjYubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(hhh]h)}(h#Converts into a more permissive PUDh]h#Converts into a more permissive PUD}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjpubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1j hjKubeh}(h]h ]h"]h$]h&]colsKuh1hhjHubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhNubeh}(h]pud-page-table-helpersah ]h"]pud page table helpersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHugeTLB Page Table Helpersh]hHugeTLB Page Table Helpers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1hhjubj )}(hhh](j)}(hhh](j)}(hhh]h)}(hpte_hugeh]hpte_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a HugeTLBh]hTests a HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(harch_make_huge_pteh]harch_make_huge_pte}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a HugeTLBh]hCreates a HugeTLB}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_pte_dirtyh]hhuge_pte_dirty}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1jhjDubj)}(hhh]h)}(hTests a dirty HugeTLBh]hTests a dirty HugeTLB}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_pte_writeh]hhuge_pte_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubah}(h]h ]h"]h$]h&]uh1jhj{ubj)}(hhh]h)}(hTests a writable HugeTLBh]hTests a writable HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_pte_mkdirtyh]hhuge_pte_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a dirty HugeTLBh]hCreates a dirty HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_pte_mkwriteh]hhuge_pte_mkwrite}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a writable HugeTLBh]hCreates a writable HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_pte_wrprotecth]hhuge_pte_wrprotect}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h!Creates a write protected HugeTLBh]h!Creates a write protected HugeTLB}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj:ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_ptep_get_and_clearh]hhuge_ptep_get_and_clear}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjZubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hhh]h)}(hClears a HugeTLBh]hClears a HugeTLB}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjqubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hhuge_ptep_set_wrprotecth]hhuge_ptep_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h'Converts into a write protected HugeTLBh]h'Converts into a write protected HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]h)}(hEhuge_ptep_set_access_flags | Converts into a more permissive HugeTLBh]hEhuge_ptep_set_access_flags | Converts into a more permissive HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]colsKuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]hugetlb-page-table-helpersah ]h"]hugetlb page table helpersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSWAP Page Table Helpersh]hSWAP Page Table Helpers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK.uh1hhjubj )}(hhh](j)}(hhh](j)}(hhh]h)}(h__pte_to_swp_entryh]h__pte_to_swp_entry}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj<ubah}(h]h ]h"]h$]h&]uh1jhj9ubj)}(hhh]h)}(h0Creates a swapped entry (arch) from a mapped PTEh]h0Creates a swapped entry (arch) from a mapped PTE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjSubah}(h]h ]h"]h$]h&]morecolsKuh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(h__swp_to_pte_entryh]h__swp_to_pte_entry}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubah}(h]h ]h"]h$]h&]uh1jhjqubj)}(hhh]h)}(h0Creates a mapped PTE from a swapped entry (arch)h]h0Creates a mapped PTE from a swapped entry (arch)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(h__pmd_to_swp_entryh]h__pmd_to_swp_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h0Creates a swapped entry (arch) from a mapped PMDh]h0Creates a swapped entry (arch) from a mapped PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(h__swp_to_pmd_entryh]h__swp_to_pmd_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h0Creates a mapped PMD from a swapped entry (arch)h]h0Creates a mapped PMD from a swapped entry (arch)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh]j)}(hhh]h)}(hKis_migration_entry | Tests a migration (read or write) swapped entryh]hKis_migration_entry | Tests a migration (read or write) swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(his_writable_migration_entryh]his_writable_migration_entry}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubah}(h]h ]h"]h$]h&]morecolsKuh1jhj:ubj)}(hhh]h)}(h%Tests a write migration swapped entryh]h%Tests a write migration swapped entry}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjUubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(hmake_readable_migration_entryh]hmake_readable_migration_entry}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjuubah}(h]h ]h"]h$]h&]morecolsKuh1jhjrubj)}(hhh]h)}(h&Creates a read migration swapped entryh]h&Creates a read migration swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhj6ubj)}(hhh](j)}(hhh]h)}(hmake_writable_migration_entryh]hmake_writable_migration_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubj)}(hhh]h)}(h'Creates a write migration swapped entryh]h'Creates a write migration swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]colsKuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hG[1] https://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/h](h[1] }(hjhhhNhNubh reference)}(hChttps://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/h]hChttps://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]swap-page-table-helpersah ]h"]swap page table helpersah$]h&]uh1hhhhhhhhKubeh}(h]architecture-page-table-helpersah ]h"]architecture page table helpersah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjFerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j!jjjj4j1jjjjjju nametypes}(j!jj4jjjuh}(jhjhj1jjj7jjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.