~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/memfd_preservationmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation.rsthKubhsection)}(hhh](htitle)}(hMemfd Preservation via LUOh]hMemfd Preservation via LUO}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhNhNubh paragraph)}(hMemory file descriptors (memfd) can be preserved over a kexec using the Live Update Orchestrator (LUO) file preservation. This allows userspace to transfer its memory contents to the next kernel after a kexec.h]hMemory file descriptors (memfd) can be preserved over a kexec using the Live Update Orchestrator (LUO) file preservation. This allows userspace to transfer its memory contents to the next kernel after a kexec.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhhubh)}(hThe preservation is not intended to be transparent. Only select properties of the file are preserved. All others are reset to default. The preserved properties are described below.h]hThe preservation is not intended to be transparent. Only select properties of the file are preserved. All others are reset to default. The preserved properties are described below.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhhubhnote)}(hThe LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.h]h)}(hThe LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.h]hThe LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.h]h)}(hkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.h](hJCurrently a memfd backed by Hugetlb is not supported. Memfds created with }(hjhhhNhNubhliteral)}(h``MFD_HUGETLB``h]h MFD_HUGETLB}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh will be rejected.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhjubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hPreserved Propertiesh]hPreserved Properties}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhNhNubh)}(hAThe following properties of the memfd are preserved across kexec:h]hAThe following properties of the memfd are preserved across kexec:}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK"hjJubhdefinition_list)}(hhh](hdefinition_list_item)}(h8File Contents All data stored in the file is preserved. h](hterm)}(h File Contentsh]h File Contents}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK%hjqubh definition)}(hhh]h)}(h)All data stored in the file is preserved.h]h)All data stored in the file is preserved.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1johjhK%hjlubjp)}(h|File Size The size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation. h](jv)}(h File Sizeh]h File Size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK)hjubj)}(hhh]h)}(hqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.h]hqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhK)hjlubjp)}(hFile Position The current file position is preserved, allowing applications to continue reading/writing from their last position. h](jv)}(h File Positionh]h File Position}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK-hjubj)}(hhh]h)}(hsThe current file position is preserved, allowing applications to continue reading/writing from their last position.h]hsThe current file position is preserved, allowing applications to continue reading/writing from their last position.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhK-hjlubjp)}(hmFile Status Flags memfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained. h](jv)}(hFile Status Flagsh]hFile Status Flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK1hjubj)}(hhh]h)}(hZmemfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained.h](hmemfds are always opened with }(hjhhhNhNubj")}(h ``O_RDWR``h]hO_RDWR}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh and }(hjhhhNhNubj")}(h``O_LARGEFILE``h]h O_LARGEFILE}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh. This property is maintained.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhK1hjlubeh}(h]h ]h"]h$]h&]uh1jjhjJubeh}(h]preserved-propertiesah ]h"]preserved propertiesah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hNon-Preserved Propertiesh]hNon-Preserved Properties}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhNhNubh)}(hAll properties which are not preserved must be assumed to be reset to default. This section describes some of those properties which may be more of note.h]hAll properties which are not preserved must be assumed to be reset to default. This section describes some of those properties which may be more of note.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK6hjjubjk)}(hhh](jp)}(h``FD_CLOEXEC`` flag A memfd can be created with the ``MFD_CLOEXEC`` flag that sets the ``FD_CLOEXEC`` on the file. This flag is not preserved and must be set again after restore via ``fcntl()``. h](jv)}(h``FD_CLOEXEC`` flagh](j")}(h``FD_CLOEXEC``h]h FD_CLOEXEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh flag}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK=hjubj)}(hhh]h)}(hA memfd can be created with the ``MFD_CLOEXEC`` flag that sets the ``FD_CLOEXEC`` on the file. This flag is not preserved and must be set again after restore via ``fcntl()``.h](h A memfd can be created with the }(hjhhhNhNubj")}(h``MFD_CLOEXEC``h]h MFD_CLOEXEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh flag that sets the }(hjhhhNhNubj")}(h``FD_CLOEXEC``h]h FD_CLOEXEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubhQ on the file. This flag is not preserved and must be set again after restore via }(hjhhhNhNubj")}(h ``fcntl()``h]hfcntl()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK;hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhK=hjubjp)}(hzSeals File seals are not preserved. The file is unsealed on restore and if needed, must be sealed again via ``fcntl()``. h](jv)}(hSealsh]hSeals}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1juhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKBhjubj)}(hhh]h)}(hrFile seals are not preserved. The file is unsealed on restore and if needed, must be sealed again via ``fcntl()``.h](hfFile seals are not preserved. The file is unsealed on restore and if needed, must be sealed again via }(hjhhhNhNubj")}(h ``fcntl()``h]hfcntl()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhKBhjubeh}(h]h ]h"]h$]h&]uh1jjhjjubeh}(h]non-preserved-propertiesah ]h"]non-preserved propertiesah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hMemfd Preservation ABIh]hMemfd Preservation ABI}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleMEMFD_LUO_FOLIO_DIRTY (C macro)c.MEMFD_LUO_FOLIO_DIRTYhNtauh1jdhjShhhNhNubhdesc)}(hhh](hdesc_signature)}(hMEMFD_LUO_FOLIO_DIRTYh]hdesc_signature_line)}(hMEMFD_LUO_FOLIO_DIRTYh]h desc_name)}(hMEMFD_LUO_FOLIO_DIRTYh]h desc_sig_name)}(hj~h]hMEMFD_LUO_FOLIO_DIRTY}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK ubah}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhj|hhhjhK ubah}(h]jsah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jzhjhK hjwhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjwhhhjhK ubeh}(h]h ](cmacroeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1juhhhjShNhNubh)}(h``MEMFD_LUO_FOLIO_DIRTY``h]j")}(hjh]hMEMFD_LUO_FOLIO_DIRTY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK"hjShhubh block_quote)}(h The folio is dirty. **Description** This flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to. h](j)}(hThe folio is dirty. h]h)}(hThe folio is dirty.h]hThe folio is dirty.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hjubh)}(h**Description**h]hstrong)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK"hjubh)}(hThis flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to.h]hThis flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK!hjubeh}(h]h ]h"]h$]h&]uh1jhjhK hjShhubje)}(hhh]h}(h]h ]h"]h$]h&]entries](jq"MEMFD_LUO_FOLIO_UPTODATE (C macro)c.MEMFD_LUO_FOLIO_UPTODATEhNtauh1jdhjShhhNhNubjv)}(hhh](j{)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hjKh]hMEMFD_LUO_FOLIO_UPTODATE}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ](jjeh"]h$]h&]hhuh1jhjMhhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK(ubah}(h]h ]h"]h$]h&]hhjuh1jjjhjIhhhjhhK(ubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1jzhjhhK(hjFhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjFhhhjhhK(ubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1juhhhjShNhNubh)}(h``MEMFD_LUO_FOLIO_UPTODATE``h]j")}(hjh]hMEMFD_LUO_FOLIO_UPTODATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK*hjShhubj)}(h The folio is up-to-date. **Description** An up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing. h](j)}(hThe folio is up-to-date. h]h)}(hThe folio is up-to-date.h]hThe folio is up-to-date.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK(hjubah}(h]h ]h"]h$]h&]uh1jhjhK(hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK*hjubh)}(hzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.h]hzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK)hjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjShhubje)}(hhh]h}(h]h ]h"]h$]h&]entries](jqmemfd_luo_folio_ser (C struct)c.memfd_luo_folio_serhNtauh1jdhjShhhNhNubjv)}(hhh](j{)}(hmemfd_luo_folio_serh]j)}(hstruct memfd_luo_folio_serh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK/ubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhK/ubj)}(hmemfd_luo_folio_serh]j)}(hjh]hmemfd_luo_folio_ser}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhK/ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK/ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jzhjhK/hjhhubj)}(hhh]h)}(h#Serialized state of a single folio.h]h#Serialized state of a single folio.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK0hjFhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK/ubeh}(h]h ](jstructeh"]h$]h&]jjjjajjajjjuh1juhhhjShNhNubh container)}(hX-**Definition**:: struct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; }; **Members** ``pfn`` The page frame number of the folio. ``flags`` Flags to describe the state of the folio. ``index`` The page offset (pgoff_t) of the folio within the original file.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j hjkubh:}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK4hjgubh literal_block)}(hPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };h]hPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK6hjgubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKhj/ubj)}(hhh]h)}(h$The file's current position (f_pos).h]h&The file’s current position (f_pos).}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhK>hjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1johjJhK>hj,ubjp)}(h7``size`` The total size of the file in bytes (i_size). h](jv)}(h``size``h]j")}(hjnh]hsize}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjlubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK?hjhubj)}(hhh]h)}(h-The total size of the file in bytes (i_size).h]h-The total size of the file in bytes (i_size).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK?hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1johjhK?hj,ubjp)}(h4``nr_folios`` Number of folios in the folios array. h](jv)}(h ``nr_folios``h]j")}(hjh]h nr_folios}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK@hjubj)}(hhh]h)}(h%Number of folios in the folios array.h]h%Number of folios in the folios array.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhK@hj,ubjp)}(hV``folios`` KHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.h](jv)}(h ``folios``h]j")}(hjh]hfolios}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j!hjubah}(h]h ]h"]h$]h&]uh1juhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKAhjubj)}(hhh]h)}(hKKHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.h]hKKHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKAhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1johjhKAhj,ubeh}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jehjShhhNhNubeh}(h]memfd-preservation-abiah ]h"]memfd preservation abiah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSee Alsoh]hSee Also}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhKubh bullet_list)}(hhh](h list_item)}(h:doc:`/core-api/liveupdate`h]h)}(hjBh]h)}(hjBh]hinline)}(hjBh]h/core-api/liveupdate}(hjLhhhNhNubah}(h]h ](xrefstdstd-doceh"]h$]h&]uh1jJhjGubah}(h]h ]h"]h$]h&]refdocmm/memfd_preservation refdomainjWreftypedoc refexplicitrefwarn reftarget/core-api/liveupdateuh1hhhhKhjDubah}(h]h ]h"]h$]h&]uh1hhhhKhj@ubah}(h]h ]h"]h$]h&]uh1j>hj;hhhhhNubj?)}(h:doc:`/core-api/kho/concepts`h]h)}(hjyh]h)}(hjyh]jK)}(hjyh]h/core-api/kho/concepts}(hjhhhNhNubah}(h]h ](jVstdstd-doceh"]h$]h&]uh1jJhj~ubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftypedoc refexplicitrefwarnji/core-api/kho/conceptsuh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]uh1j>hj;hhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1j9hhhKhj(hhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKubeh}(h]memfd-preservation-via-luoah ]h"]memfd preservation via luoah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_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}(jjjGjDjgjdjPjMj%j"jju nametypes}(jjGjgjPj%juh}(jhjDhjdjJjMjjj"jSjsj|jDjIjjjyj~jj(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.