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)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a young PTEh]hCreates a young 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_mkoldh]h pte_mkold}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hj<ubah}(h]h ]h"]h$]h&]uh1jhj9ubj)}(hhh]h)}(hCreates an old PTEh]hCreates an old 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_mkdirtyh]h pte_mkdirty}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjsubah}(h]h ]h"]h$]h&]uh1jhjpubj)}(hhh]h)}(hCreates a dirty PTEh]hCreates a dirty 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_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.}(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_mkwrite_novmah]hpte_mkwrite_novma}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(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.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_wrprotecth]h pte_wrprotect}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjOubah}(h]h ]h"]h$]h&]uh1jhjLubj)}(hhh]h)}(hCreates a write protected PTEh]hCreates a write protected PTE}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjfubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(h pte_mkspecialh]h pte_mkspecial}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a special PTEh]hCreates a special 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_mkdevmaph]h pte_mkdevmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(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&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_mksoft_dirtyh]hpte_mksoft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a soft dirty PTEh]hCreates a soft dirty 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_clear_soft_dirtyh]hpte_clear_soft_dirty}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hj+ubah}(h]h ]h"]h$]h&]uh1jhj(ubj)}(hhh]h)}(hClears a soft dirty PTEh]hClears 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_swp_mksoft_dirtyh]hpte_swp_mksoft_dirty}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjbubah}(h]h ]h"]h$]h&]uh1jhj_ubj)}(hhh]h)}(h Creates a soft dirty swapped PTEh]h Creates a soft dirty swapped 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_clear_soft_dirtyh]hpte_swp_clear_soft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(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&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh](j)}(hhh]h)}(hpte_mknotpresenth]hpte_mknotpresent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hInvalidates a mapped PTEh]hInvalidates a mapped 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)}(h ptep_clearh]h ptep_clear}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Clears a PTEh]h Clears a 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)}(hptep_get_and_clearh]hptep_get_and_clear}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhj>ubah}(h]h ]h"]h$]h&]uh1jhj;ubj)}(hhh]h)}(hClears and returns PTEh]hClears and returns 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_clear_fullh]hptep_get_and_clear_full}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjuubah}(h]h ]h"]h$]h&]uh1jhjrubj)}(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&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(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&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears young from a PTEh]hClears young from a PTE}(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_set_wrprotecth]hptep_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a write protected PTEh]h#Converts into a write protected 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_access_flagsh]hptep_set_access_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a more permissive PTEh]h#Converts into a more permissive PTE}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihhhhhKRubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhj}ubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1hhj}ubj )}(hhh](j)}(hhh](j)}(hhh]h)}(hpmd_sameh]hpmd_same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(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&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_badh]hpmd_bad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a non-table mapped PMDh]hTests a non-table mapped PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_leafh]hpmd_leaf}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a leaf mapped PMDh]hTests a leaf 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_trans_hugeh]hpmd_trans_huge}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hj?ubah}(h]h ]h"]h$]h&]uh1jhj<ubj)}(hhh]h)}(h*Tests a Transparent Huge Page (THP) at PMDh]h*Tests a Transparent Huge Page (THP) at 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)}(h pmd_presenth]h pmd_present}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjvubah}(h]h ]h"]h$]h&]uh1jhjsubj)}(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&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_youngh]h pmd_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a young PMDh]hTests a young PMD}(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_dirtyh]h pmd_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a dirty PMDh]hTests a dirty 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_writeh]h pmd_write}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a writable PMDh]hTests a writable 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_specialh]h pmd_special}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjR ubah}(h]h ]h"]h$]h&]uh1jhjO ubj)}(hhh]h)}(hTests a special PMDh]hTests a special 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_protnoneh]h pmd_protnone}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj 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&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_soft_dirtyh]hpmd_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a soft dirty PMDh]hTests a soft dirty 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)}(hpmd_swp_soft_dirtyh]hpmd_swp_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a soft dirty swapped PMDh]hTests a soft dirty swapped 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)}(h pmd_mkyoungh]h pmd_mkyoung}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhj. ubah}(h]h ]h"]h$]h&]uh1jhj+ ubj)}(hhh]h)}(hCreates a young PMDh]hCreates a young 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)}(h pmd_mkoldh]h pmd_mkold}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohje ubah}(h]h ]h"]h$]h&]uh1jhjb ubj)}(hhh]h)}(hCreates an old PMDh]hCreates an old 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_mkdirtyh]h pmd_mkdirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj 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&]uh1hhhhKqhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkcleanh]h pmd_mkclean}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj 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&]uh1hhhhKshj 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&]uh1hhhhKuhj ubah}(h]h ]h"]h$]h&]uh1jhj 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&]uh1hhhhKuhj! ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmd_mkwrite_novmah]hpmd_mkwrite_novma}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjA 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&]uh1hhhhKxhjX 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&]uh1hhhhK{hjx ubah}(h]h ]h"]h$]h&]uh1jhju ubj)}(hhh]h)}(hCreates a write protected PMDh]hCreates a write protected PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hj ubah}(h]h ]h"]h$]h&]uh1jhju ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_mkspecialh]h pmd_mkspecial}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a special PMDh]hCreates a special PMD}(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_mkdevmaph]h pmd_mkdevmap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h Creates a ZONE_DEVICE mapped PMDh]h Creates a ZONE_DEVICE mapped 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_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}(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)}(hpmd_clear_soft_dirtyh]hpmd_clear_soft_dirty}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjT ubah}(h]h ]h"]h$]h&]uh1jhjQ ubj)}(hhh]h)}(hClears a soft dirty PMDh]hClears a soft dirty 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_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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hClears a soft dirty swapped PMDh]hClears 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)}(h pmd_mkinvalidh]h pmd_mkinvalid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj 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&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pmd_set_hugeh]h pmd_set_huge}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj0 ubah}(h]h ]h"]h$]h&]uh1jhj- ubj)}(hhh]h)}(hCreates a PMD huge mappingh]hCreates a PMD huge mapping}(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)}(hpmd_clear_hugeh]hpmd_clear_huge}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjg ubah}(h]h ]h"]h$]h&]uh1jhjd 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&]uh1jhjd ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpmdp_get_and_clearh]hpmdp_get_and_clear}(hj hhhNhNubah}(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}(hj hhhNhNubah}(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_test_and_clear_youngh]hpmdp_test_and_clear_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hClears young from a PMDh]hClears young from 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_set_wrprotecth]hpmdp_set_wrprotect}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjCubah}(h]h ]h"]h$]h&]uh1jhj@ubj)}(hhh]h)}(h#Converts into a write protected PMDh]h#Converts into a write protected 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_set_access_flagsh]hpmdp_set_access_flags}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjzubah}(h]h ]h"]h$]h&]uh1jhjwubj)}(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&]uh1jhjwubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj}ubeh}(h]h ]h"]h$]h&]colsKuh1hhjzubah}(h]h ]h"]h$]h&]uh1hhjihhhhhNubeh}(h]pmd-page-table-helpersah ]h"]pmd page table helpersah$]h&]uh1hhhhhhhhKRubh)}(hhh](h)}(hPUD Page Table Helpersh]hPUD 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)}(hpud_sameh]hpud_same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(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&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpud_badh]hpud_bad}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1ubah}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh]h)}(hTests a non-table mapped PUDh]hTests a non-table mapped PUD}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjHubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpud_leafh]hpud_leaf}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhubah}(h]h ]h"]h$]h&]uh1jhjeubj)}(hhh]h)}(hTests a leaf mapped PUDh]hTests a leaf mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpud_trans_hugeh]hpud_trans_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h*Tests a Transparent Huge Page (THP) at PUDh]h*Tests a Transparent Huge Page (THP) at PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_presenth]h pud_present}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a valid mapped PUDh]hTests a valid mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_youngh]h pud_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hTests a young PUDh]hTests a young PUD}(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 pud_dirtyh]h pud_dirty}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjDubah}(h]h ]h"]h$]h&]uh1jhjAubj)}(hhh]h)}(hTests a dirty PUDh]hTests a dirty PUD}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_writeh]h pud_write}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1jhjxubj)}(hhh]h)}(hTests a writable PUDh]hTests a writable PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_mkyoungh]h pud_mkyoung}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a young PUDh]hCreates a young PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(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&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_mkdirtyh]h pud_mkdirty}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a dirty PUDh]hCreates a dirty PUD}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_mkcleanh]h pud_mkclean}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubah}(h]h ]h"]h$]h&]uh1jhjTubj)}(hhh]h)}(hCreates a clean PUDh]hCreates a clean PUD}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjnubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_mkwriteh]h pud_mkwrite}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a writable PUDh]hCreates a writable PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_wrprotecth]h pud_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCreates a write protected PUDh]hCreates a write protected PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(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&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_mkinvalidh]h pud_mkinvalid}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jhj0ubj)}(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]}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjJubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h pud_set_hugeh]h pud_set_huge}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjjubah}(h]h ]h"]h$]h&]uh1jhjgubj)}(hhh]h)}(hCreates a PUD huge mappingh]hCreates a PUD huge mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpud_clear_hugeh]hpud_clear_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears a PUD huge mappingh]hClears a PUD huge mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpudp_get_and_clearh]hpudp_get_and_clear}(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&]uh1jhjubj)}(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&]uh1jhj ubj)}(hhh]h)}(h Clears a PUDh]h Clears a PUD}(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)}(hpudp_test_and_clear_youngh]hpudp_test_and_clear_young}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1jhjCubj)}(hhh]h)}(hClears young from a PUDh]hClears young from a PUD}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpudp_set_wrprotecth]hpudp_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}ubah}(h]h ]h"]h$]h&]uh1jhjzubj)}(hhh]h)}(h#Converts into a write protected PUDh]h#Converts into a write protected PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hpudp_set_access_flagsh]hpudp_set_access_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#Converts into a more permissive PUDh]h#Converts into a more permissive PUD}(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]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}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1jhj1ubj)}(hhh]h)}(hTests a HugeTLBh]hTests a HugeTLB}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(harch_make_huge_pteh]harch_make_huge_pte}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1jhjhubj)}(hhh]h)}(hCreates a HugeTLBh]hCreates a HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(hhuge_pte_dirtyh]hhuge_pte_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a dirty HugeTLBh]hTests a dirty HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(hhuge_pte_writeh]hhuge_pte_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTests a writable HugeTLBh]hTests a writable HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(hhuge_pte_mkdirtyh]hhuge_pte_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hCreates a dirty HugeTLBh]hCreates a dirty HugeTLB}(hj*hhhNhNubah}(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)}(hhuge_pte_mkwriteh]hhuge_pte_mkwrite}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1jhjDubj)}(hhh]h)}(hCreates a writable HugeTLBh]hCreates a writable HugeTLB}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(hhuge_pte_wrprotecth]hhuge_pte_wrprotect}(hjhhhNhNubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(hhh](j)}(hhh]h)}(hhuge_ptep_get_and_clearh]hhuge_ptep_get_and_clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hClears a HugeTLBh]hClears a HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.ubj)}(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&]uh1jhj.ubj)}(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}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]morecolsKuh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(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}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hhhhhKubh)}(hhh]h)}(hhh](h)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjpubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1hhjpubh)}(hhh]h}(h]h ]h"]h$]h&]colwidthK.uh1hhjpubj )}(hhh](j)}(hhh](j)}(hhh]h)}(h__pte_to_swp_entryh]h__pte_to_swp_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h,Creates a swp_entry_t (arch) from a swap PTEh]h,Creates a swp_entry_t (arch) from a swap PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h__swp_entry_to_pteh]h__swp_entry_to_pte}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h,Creates a swap PTE from a swp_entry_t (arch)h]h,Creates a swap PTE from a swp_entry_t (arch)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h__pmd_to_swp_entryh]h__pmd_to_swp_entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h,Creates a swp_entry_t (arch) from a swap PMDh]h,Creates a swp_entry_t (arch) from a swap PMD}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h__swp_entry_to_pmdh]h__swp_entry_to_pmd}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj?ubah}(h]h ]h"]h$]h&]uh1jhj<ubj)}(hhh]h)}(h,Creates a swap PMD from a swp_entry_t (arch)h]h,Creates a swap PMD from a swp_entry_t (arch)}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjVubah}(h]h ]h"]h$]h&]morecolsKuh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(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}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]morecolsKuh1jhjtubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(his_writable_migration_entryh]his_writable_migration_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubj)}(hhh]h)}(h%Tests a write migration swapped entryh]h%Tests a write migration swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hmake_readable_migration_entryh]hmake_readable_migration_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubj)}(hhh]h)}(h&Creates a read migration swapped entryh]h&Creates a read migration swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hmake_writable_migration_entryh]hmake_writable_migration_entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1jhjubj)}(hhh]h)}(h'Creates a write migration swapped entryh]h'Creates a write migration swapped entry}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]colsKuh1hhjmubah}(h]h ]h"]h$]h&]uh1hhj\hhhhhNubh)}(hG[1] https://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/h](h[1] }(hjPhhhNhNubh reference)}(hChttps://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/h]hChttps://lore.kernel.org/linux-mm/20181017020930.GN30832@redhat.com/}(hjZhhhNhNubah}(h]h ]h"]h$]h&]refurij\uh1jXhjPubeh}(h]h ]h"]h$]h&]uh1hhhhMhj\hhubeh}(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_handlerjerror_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|jyjfjcjjjjjYjVjtjqu nametypes}(j|jfjjjYjtuh}(jyhjchjjijjjVjjqj\u 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.