^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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/pt_BR/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&]colwidthKuh1jhjubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(hpte_sameh]hpte_same}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj*ubah}(h]h ]h"]h$]h&]uh1j(hj%ubj))}(hhh]h)}(h+Tests whether both PTE entries are the sameh]h+Tests whether both PTE entries are the same}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjAubah}(h]h ]h"]h$]h&]uh1j(hj%ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_presenth]h pte_present}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjaubah}(h]h ]h"]h$]h&]uh1j(hj^ubj))}(hhh]h)}(hTests a valid mapped PTEh]hTests a valid mapped PTE}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjxubah}(h]h ]h"]h$]h&]uh1j(hj^ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_youngh]h pte_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a young PTEh]hTests a young PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_dirtyh]h pte_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a dirty PTEh]hTests a dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_writeh]h pte_write}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a writable PTEh]hTests a writable PTE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj 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&]uh1j(hj:ubj))}(hhh]h)}(hTests a special PTEh]hTests a special PTE}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1j(hj:ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_protnoneh]h pte_protnone}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjtubah}(h]h ]h"]h$]h&]uh1j(hjqubj))}(hhh]h)}(hTests a PROT_NONE PTEh]hTests a PROT_NONE PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjqubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_soft_dirtyh]hpte_soft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj 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&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkyoungh]h pte_mkyoung}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a young PTEh]hCreates a young PTE}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hj0ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkoldh]h pte_mkold}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjPubah}(h]h ]h"]h$]h&]uh1j(hjMubj))}(hhh]h)}(hCreates an old PTEh]hCreates an old PTE}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjgubah}(h]h ]h"]h$]h&]uh1j(hjMubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkdirtyh]h pte_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a dirty PTEh]hCreates a dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkcleanh]h pte_mkclean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a clean PTEh]hCreates a clean PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkwriteh]h pte_mkwrite}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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-hj ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_mkwrite_novmah]hpte_mkwrite_novma}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hj,ubah}(h]h ]h"]h$]h&]uh1j(hj)ubj))}(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.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjCubah}(h]h ]h"]h$]h&]uh1j(hj)ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_wrprotecth]h pte_wrprotect}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjcubah}(h]h ]h"]h$]h&]uh1j(hj`ubj))}(hhh]h)}(hCreates a write protected PTEh]hCreates a write protected PTE}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjzubah}(h]h ]h"]h$]h&]uh1j(hj`ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h pte_mkspecialh]h pte_mkspecial}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a special PTEh]hCreates a special PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_mksoft_dirtyh]hpte_mksoft_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a soft dirty PTEh]hCreates a soft dirty PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_clear_soft_dirtyh]hpte_clear_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hClears a soft dirty PTEh]hClears a soft dirty PTE}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_swp_mksoft_dirtyh]hpte_swp_mksoft_dirty}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hj?ubah}(h]h ]h"]h$]h&]uh1j(hj<ubj))}(hhh]h)}(h Creates a soft dirty swapped PTEh]h Creates a soft dirty swapped PTE}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjVubah}(h]h ]h"]h$]h&]uh1j(hj<ubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_swp_clear_soft_dirtyh]hpte_swp_clear_soft_dirty}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjvubah}(h]h ]h"]h$]h&]uh1j(hjsubj))}(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&]uh1j(hjsubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hpte_mknotpresenth]hpte_mknotpresent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hInvalidates a mapped PTEh]hInvalidates a mapped PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(h ptep_clearh]h ptep_clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h Clears a PTEh]h Clears a PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hptep_get_and_clearh]hptep_get_and_clear}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hClears and returns PTEh]hClears and returns PTE}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChj2ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hptep_get_and_clear_fullh]hptep_get_and_clear_full}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjRubah}(h]h ]h"]h$]h&]uh1j(hjOubj))}(hhh]h)}(h*Clears and returns PTE (batched PTE unmap)h]h*Clears and returns PTE (batched PTE unmap)}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjiubah}(h]h ]h"]h$]h&]uh1j(hjOubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hptep_test_and_clear_youngh]hptep_test_and_clear_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hClears young from a PTEh]hClears young from a PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hptep_set_wrprotecth]hptep_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h#Converts into a write protected PTEh]h#Converts into a write protected PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubj$)}(hhh](j))}(hhh]h)}(hptep_set_access_flagsh]hptep_set_access_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h#Converts into a more permissive PTEh]h#Converts into a more permissive PTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(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}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhKPubh)}(hhh]j)}(hhh](j )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjZubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhjZubj)}(hhh](j$)}(hhh](j))}(hhh]h)}(hpmd_sameh]hpmd_same}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjwubah}(h]h ]h"]h$]h&]uh1j(hjtubj))}(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&]uh1hhhhKShjubah}(h]h ]h"]h$]h&]uh1j(hjtubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_badh]hpmd_bad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a non-table mapped PMDh]hTests a non-table mapped PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_leafh]hpmd_leaf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a leaf mapped PMDh]hTests a leaf mapped PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_trans_hugeh]hpmd_trans_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h*Tests a Transparent Huge Page (THP) at PMDh]h*Tests a Transparent Huge Page (THP) at PMD}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhj3ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_presenth]h pmd_present}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjSubah}(h]h ]h"]h$]h&]uh1j(hjPubj))}(hhh]h)}(h/Tests whether pmd_page() points to valid memoryh]h/Tests whether pmd_page() points to valid memory}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjjubah}(h]h ]h"]h$]h&]uh1j(hjPubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_youngh]h pmd_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a young PMDh]hTests a young PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_dirtyh]h pmd_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a dirty PMDh]hTests a dirty PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_writeh]h pmd_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a writable PMDh]hTests a writable PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahj ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_specialh]h pmd_special}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj/ ubah}(h]h ]h"]h$]h&]uh1j(hj, ubj))}(hhh]h)}(hTests a special PMDh]hTests a special PMD}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjF ubah}(h]h ]h"]h$]h&]uh1j(hj, ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_protnoneh]h pmd_protnone}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjf ubah}(h]h ]h"]h$]h&]uh1j(hjc ubj))}(hhh]h)}(hTests a PROT_NONE PMDh]hTests a PROT_NONE PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehj} ubah}(h]h ]h"]h$]h&]uh1j(hjc ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_soft_dirtyh]hpmd_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hTests a soft dirty PMDh]hTests a soft dirty PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_swp_soft_dirtyh]hpmd_swp_soft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hTests a soft dirty swapped PMDh]hTests a soft dirty swapped PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkyoungh]h pmd_mkyoung}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hCreates a young PMDh]hCreates a young PMD}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhj" ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkoldh]h pmd_mkold}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjB ubah}(h]h ]h"]h$]h&]uh1j(hj? ubj))}(hhh]h)}(hCreates an old PMDh]hCreates an old PMD}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjY ubah}(h]h ]h"]h$]h&]uh1j(hj? ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkdirtyh]h pmd_mkdirty}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjy ubah}(h]h ]h"]h$]h&]uh1j(hjv ubj))}(hhh]h)}(hCreates a dirty PMDh]hCreates a dirty PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohj ubah}(h]h ]h"]h$]h&]uh1j(hjv ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkcleanh]h pmd_mkclean}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hCreates a clean PMDh]hCreates a clean PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkwriteh]h pmd_mkwrite}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj ubah}(h]h ]h"]h$]h&]uh1j(hj 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&]uh1hhhhKshj ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_mkwrite_novmah]hpmd_mkwrite_novma}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhj ubah}(h]h ]h"]h$]h&]uh1j(hj 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.}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhj5 ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_wrprotecth]h pmd_wrprotect}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjU ubah}(h]h ]h"]h$]h&]uh1j(hjR ubj))}(hhh]h)}(hCreates a write protected PMDh]hCreates a write protected PMD}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjl ubah}(h]h ]h"]h$]h&]uh1j(hjR ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(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&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_mksoft_dirtyh]hpmd_mksoft_dirty}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hCreates a soft dirty PMDh]hCreates a soft dirty PMD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hj ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(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&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_swp_mksoft_dirtyh]hpmd_swp_mksoft_dirty}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 ubah}(h]h ]h"]h$]h&]uh1j(hj. ubj))}(hhh]h)}(h Creates a soft dirty swapped PMDh]h Creates a soft dirty swapped PMD}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubah}(h]h ]h"]h$]h&]uh1j(hj. ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_swp_clear_soft_dirtyh]hpmd_swp_clear_soft_dirty}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjh ubah}(h]h ]h"]h$]h&]uh1j(hje 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&]uh1j(hje ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(h pmd_mkinvalidh]h pmd_mkinvalid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(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&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmd_clear_hugeh]hpmd_clear_huge}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmdp_get_and_clearh]hpmdp_get_and_clear}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjD ubah}(h]h ]h"]h$]h&]uh1j(hjA 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&]uh1j(hjA ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(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&]uh1j(hjx 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&]uh1j(hjx ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmdp_test_and_clear_youngh]hpmdp_test_and_clear_young}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j(hj 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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmdp_set_wrprotecth]hpmdp_set_wrprotect}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjqubj$)}(hhh](j))}(hhh]h)}(hpmdp_set_access_flagsh]hpmdp_set_access_flags}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h#Converts into a more permissive PMDh]h#Converts into a more permissive PMD}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj7ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjqubeh}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]colsKuh1jhjWubah}(h]h ]h"]h$]h&]uh1hhjFhhhhhNubeh}(h]pmd-page-table-helpersah ]h"]pmd page table helpersah$]h&]uh1hhhhhhhhKPubh)}(hhh](h)}(hPUD Page Table Helpersh]hPUD Page Table Helpers}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohhhhhKubh)}(hhh]j)}(hhh](j )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhjubj)}(hhh](j$)}(hhh](j))}(hhh]h)}(hpud_sameh]hpud_same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpud_badh]hpud_bad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpud_leafh]hpud_leaf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(hTests a leaf mapped PUDh]hTests a leaf mapped PUD}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%ubah}(h]h ]h"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpud_trans_hugeh]hpud_trans_huge}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEubah}(h]h ]h"]h$]h&]uh1j(hjBubj))}(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&]uh1j(hjBubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_presenth]h pud_present}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj|ubah}(h]h ]h"]h$]h&]uh1j(hjyubj))}(hhh]h)}(hTests a valid mapped PUDh]hTests a valid mapped PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjyubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_youngh]h pud_young}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a young PUDh]hTests a young PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_dirtyh]h pud_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a dirty PUDh]hTests a dirty PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_writeh]h pud_write}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj!ubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a writable PUDh]hTests a writable PUD}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj8ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkyoungh]h pud_mkyoung}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1j(hjUubj))}(hhh]h)}(hCreates a young PUDh]hCreates a young PUD}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjoubah}(h]h ]h"]h$]h&]uh1j(hjUubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkoldh]h pud_mkold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates an old PUDh]hCreates an old PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkdirtyh]h pud_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a dirty PUDh]hCreates a dirty PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkcleanh]h pud_mkclean}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a clean PUDh]hCreates a clean PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkwriteh]h pud_mkwrite}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1j(hj1ubj))}(hhh]h)}(hCreates a writable PUDh]hCreates a writable PUD}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1j(hj1ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_wrprotecth]h pud_wrprotect}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1j(hjhubj))}(hhh]h)}(hCreates a write protected PUDh]hCreates a write protected PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjhubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_mkinvalidh]h pud_mkinvalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h pud_set_hugeh]h pud_set_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a PUD huge mappingh]hCreates a PUD huge mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpud_clear_hugeh]hpud_clear_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(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&]uh1j(hj ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpudp_get_and_clearh]hpudp_get_and_clear}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1j(hjDubj))}(hhh]h)}(h Clears a PUDh]h Clears a PUD}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1j(hjDubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpudp_get_and_clear_fullh]hpudp_get_and_clear_full}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubah}(h]h ]h"]h$]h&]uh1j(hj{ubj))}(hhh]h)}(h Clears a PUDh]h Clears a PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hj{ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(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&]uh1j(hjubj))}(hhh]h)}(hClears young from a PUDh]hClears young from a PUD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpudp_set_wrprotecth]hpudp_set_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hpudp_set_access_flagsh]hpudp_set_access_flags}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1j(hj ubj))}(hhh]h)}(h#Converts into a more permissive PUDh]h#Converts into a more permissive PUD}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj: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&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1hhjohhhhhNubeh}(h]pud-page-table-helpersah ]h"]pud page table helpersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHugeTLB Page Table Helpersh]hHugeTLB Page Table Helpers}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhhhhhKubh)}(hhh]j)}(hhh](j )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthK2uh1jhjubj)}(hhh](j$)}(hhh](j))}(hhh]h)}(hpte_hugeh]hpte_huge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a HugeTLBh]hTests a HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(harch_make_huge_pteh]harch_make_huge_pte}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a HugeTLBh]hCreates a HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_pte_dirtyh]hhuge_pte_dirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hTests a dirty HugeTLBh]hTests a dirty HugeTLB}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj(ubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_pte_writeh]hhuge_pte_write}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjHubah}(h]h ]h"]h$]h&]uh1j(hjEubj))}(hhh]h)}(hTests a writable HugeTLBh]hTests a writable HugeTLB}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj_ubah}(h]h ]h"]h$]h&]uh1j(hjEubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_pte_mkdirtyh]hhuge_pte_mkdirty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hj|ubj))}(hhh]h)}(hCreates a dirty HugeTLBh]hCreates a dirty HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hj|ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_pte_mkwriteh]hhuge_pte_mkwrite}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(hCreates a writable HugeTLBh]hCreates a writable HugeTLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_pte_wrprotecth]hhuge_pte_wrprotect}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_ptep_get_and_clearh]hhuge_ptep_get_and_clear}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$ubah}(h]h ]h"]h$]h&]uh1j(hj!ubj))}(hhh]h)}(hClears a HugeTLBh]hClears a HugeTLB}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj;ubah}(h]h ]h"]h$]h&]uh1j(hj!ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hhuge_ptep_set_wrprotecth]hhuge_ptep_set_wrprotect}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1j(hjXubj))}(hhh]h)}(h'Converts into a write protected HugeTLBh]h'Converts into a write protected HugeTLB}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjrubah}(h]h ]h"]h$]h&]uh1j(hjXubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(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&]morecolsKuh1j(hjubah}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1hhjrhhhhhNubeh}(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]j)}(hhh](j )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj )}(hhh]h}(h]h ]h"]h$]h&]colwidthK.uh1jhjubj)}(hhh](j$)}(hhh](j))}(hhh]h)}(h__pte_to_swp_entryh]h__pte_to_swp_entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(hhh]h)}(h,Creates a swp_entry_t (arch) from a swap PTEh]h,Creates a swp_entry_t (arch) from a swap PTE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h__swp_entry_to_pteh]h__swp_entry_to_pte}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1j(hj;ubj))}(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)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjUubah}(h]h ]h"]h$]h&]morecolsKuh1j(hj;ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h__pmd_to_swp_entryh]h__pmd_to_swp_entry}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjvubah}(h]h ]h"]h$]h&]uh1j(hjsubj))}(hhh]h)}(h,Creates a swp_entry_t (arch) from a swap PMDh]h,Creates a swp_entry_t (arch) from a swap PMD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1j(hjsubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(h__swp_entry_to_pmdh]h__swp_entry_to_pmd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubj))}(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)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(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&]morecolsKuh1j(hjubah}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(his_writable_migration_entryh]his_writable_migration_entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]morecolsKuh1j(hjubj))}(hhh]h)}(h%Tests a write migration swapped entryh]h%Tests a write migration swapped entry}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hmake_readable_migration_entryh]hmake_readable_migration_entry}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj?ubah}(h]h ]h"]h$]h&]morecolsKuh1j(hj<ubj))}(hhh]h)}(h&Creates a read migration swapped entryh]h&Creates a read migration swapped entry}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubah}(h]h ]h"]h$]h&]uh1j(hj<ubeh}(h]h ]h"]h$]h&]uh1j#hjubj$)}(hhh](j))}(hhh]h)}(hmake_writable_migration_entryh]hmake_writable_migration_entry}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]morecolsKuh1j(hjtubj))}(hhh]h)}(h'Creates a write migration swapped entryh]h'Creates a write migration swapped entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j(hjtubeh}(h]h ]h"]h$]h&]uh1j#hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(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&]uh1hhhhKhjhhubeh}(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_backlinksj(footnote_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_sourcehnj _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}(jjjCj@jljijojljjjju nametypes}(jjCjljojjuh}(jhj@hjijFjljojjrjju 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.