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/core-api/boot-time-mmmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/core-api/boot-time-mmmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hBoot time memory managementh]hBoot time memory management}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm.rsthKubh paragraph)}(hEarly system initialization cannot use "normal" memory management simply because it is not set up yet. But there is still need to allocate memory for various data structures, for instance for the physical page allocator.h]hEarly system initialization cannot use “normal” memory management simply because it is not set up yet. But there is still need to allocate memory for various data structures, for instance for the physical page allocator.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hA specialized allocator called ``memblock`` performs the boot time memory management. The architecture specific initialization must set it up in :c:func:`setup_arch` and tear it down in :c:func:`mem_init` functions.h](hA specialized allocator called }(hhhhhNhNubhliteral)}(h ``memblock``h]hmemblock}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubhf performs the boot time memory management. The architecture specific initialization must set it up in }(hhhhhNhNubh)}(h:c:func:`setup_arch`h]h)}(hhh]h setup_arch()}(hhhhhNhNubah}(h]h ](xrefcc-funceh"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]refdoccore-api/boot-time-mm refdomainjreftypefunc refexplicitrefwarn reftarget setup_archuh1hhhhK hhubh and tear it down in }(hhhhhNhNubh)}(h:c:func:`mem_init`h]h)}(hj h]h mem_init()}(hj"hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmem_inituh1hhhhK hhubh functions.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hX=Once the early memory management is available it offers a variety of functions and macros for memory allocations. The allocation request may be directed to the first (and probably the only) node or to a particular node in a NUMA system. There are API variants that panic when an allocation fails and those that don't.h]hX?Once the early memory management is available it offers a variety of functions and macros for memory allocations. The allocation request may be directed to the first (and probably the only) node or to a particular node in a NUMA system. There are API variants that panic when an allocation fails and those that don’t.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hFMemblock also offers a variety of APIs that control its own behaviour.h]hFMemblock also offers a variety of APIs that control its own behaviour.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hMemblock Overviewh]hMemblock Overview}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchhhhhKubh)}(hMemblock is a method of managing memory regions during the early boot period when the usual kernel memory allocators are not up and running.h]hMemblock is a method of managing memory regions during the early boot period when the usual kernel memory allocators are not up and running.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK,hjchhubh)}(htMemblock views the system memory as collections of contiguous regions. There are several types of these collections:h]htMemblock views the system memory as collections of contiguous regions. There are several types of these collections:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK0hjchhubh bullet_list)}(hhh](h list_item)}(h``memory`` - describes the physical memory available to the kernel; this may differ from the actual physical memory installed in the system, for instance when the memory is restricted with ``mem=`` command line parameterh]h)}(h``memory`` - describes the physical memory available to the kernel; this may differ from the actual physical memory installed in the system, for instance when the memory is restricted with ``mem=`` command line parameterh](h)}(h ``memory``h]hmemory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh - describes the physical memory available to the kernel; this may differ from the actual physical memory installed in the system, for instance when the memory is restricted with }(hjhhhNhNubh)}(h``mem=``h]hmem=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh command line parameter}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK3hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h8``reserved`` - describes the regions that were allocatedh]h)}(hjh](h)}(h ``reserved``h]hreserved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, - describes the regions that were allocated}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK7hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h``physmem`` - describes the actual physical memory available during boot regardless of the possible restrictions and memory hot(un)plug; the ``physmem`` type is only available on some architectures. h]h)}(h``physmem`` - describes the actual physical memory available during boot regardless of the possible restrictions and memory hot(un)plug; the ``physmem`` type is only available on some architectures.h](h)}(h ``physmem``h]hphysmem}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh - describes the actual physical memory available during boot regardless of the possible restrictions and memory hot(un)plug; the }(hjhhhNhNubh)}(h ``physmem``h]hphysmem}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh. type is only available on some architectures.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK8hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet*uh1jhjhK3hjchhubh)}(hXwEach region is represented by struct memblock_region that defines the region extents, its attributes and NUMA node id on NUMA systems. Every memory type is described by the struct memblock_type which contains an array of memory regions along with the allocator metadata. The "memory" and "reserved" types are nicely wrapped with struct memblock. This structure is statically initialized at build time. The region arrays are initially sized to ``INIT_MEMBLOCK_MEMORY_REGIONS`` for "memory" and ``INIT_MEMBLOCK_RESERVED_REGIONS`` for "reserved". The region array for "physmem" is initially sized to ``INIT_PHYSMEM_REGIONS``. The memblock_allow_resize() enables automatic resizing of the region arrays during addition of new regions. This feature should be used with care so that memory allocated for the region array will not overlap with areas that should be reserved, for example initrd.h](hXEach region is represented by struct memblock_region that defines the region extents, its attributes and NUMA node id on NUMA systems. Every memory type is described by the struct memblock_type which contains an array of memory regions along with the allocator metadata. The “memory” and “reserved” types are nicely wrapped with struct memblock. This structure is statically initialized at build time. The region arrays are initially sized to }(hj9hhhNhNubh)}(h ``INIT_MEMBLOCK_MEMORY_REGIONS``h]hINIT_MEMBLOCK_MEMORY_REGIONS}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubh for “memory” and }(hj9hhhNhNubh)}(h"``INIT_MEMBLOCK_RESERVED_REGIONS``h]hINIT_MEMBLOCK_RESERVED_REGIONS}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubhN for “reserved”. The region array for “physmem” is initially sized to }(hj9hhhNhNubh)}(h``INIT_PHYSMEM_REGIONS``h]hINIT_PHYSMEM_REGIONS}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubhX . The memblock_allow_resize() enables automatic resizing of the region arrays during addition of new regions. This feature should be used with care so that memory allocated for the region array will not overlap with areas that should be reserved, for example initrd.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:26: ./mm/memblock.chK``MEMBLOCK_RSRV_HUGETLB`` memory is reserved for hugetlb pagesh](j-)}(h``MEMBLOCK_RSRV_HUGETLB``h]h)}(hjh]hMEMBLOCK_RSRV_HUGETLB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKKhjubjG)}(hhh]h)}(h$memory is reserved for hugetlb pagesh]h$memory is reserved for hugetlb pages}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKLhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKKhj#ubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_region (C struct)c.memblock_regionhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hmemblock_regionh]j)}(hstruct memblock_regionh](j)}(hstructh]hstruct}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKQubj)}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhjhhKQubj)}(hmemblock_regionh]j)}(hjTh]hmemblock_region}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ](jjeh"]h$]h&]jjuh1jhjVhhhjhhKQubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjRhhhjhhKQubah}(h]jMah ](jjeh"]h$]h&]jj)jhuh1jyhjhhKQhjOhhubj)}(hhh]h)}(hrepresents a memory regionh]hrepresents a memory region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKEhjhhubah}(h]h ]h"]h$]h&]uh1jhjOhhhjhhKQubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hXB**Definition**:: struct memblock_region { phys_addr_t base; phys_addr_t size; enum memblock_flags flags; #ifdef CONFIG_NUMA; int nid; #endif; }; **Members** ``base`` base address of the region ``size`` size of the region ``flags`` memory region attributes ``nid`` NUMA node idh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKIhjubh literal_block)}(hstruct memblock_region { phys_addr_t base; phys_addr_t size; enum memblock_flags flags; #ifdef CONFIG_NUMA; int nid; #endif; };h]hstruct memblock_region { phys_addr_t base; phys_addr_t size; enum memblock_flags flags; #ifdef CONFIG_NUMA; int nid; #endif; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKThjubj")}(hhh](j')}(h$``base`` base address of the region h](j-)}(h``base``h]h)}(hj h]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKGhjubjG)}(hhh]h)}(hbase address of the regionh]hbase address of the region}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKGhj"ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj!hKGhjubj')}(h``size`` size of the region h](j-)}(h``size``h]h)}(hjEh]hsize}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKHhj?ubjG)}(hhh]h)}(hsize of the regionh]hsize of the region}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhKHhj[ubah}(h]h ]h"]h$]h&]uh1jFhj?ubeh}(h]h ]h"]h$]h&]uh1j&hjZhKHhjubj')}(h#``flags`` memory region attributes h](j-)}(h ``flags``h]h)}(hj~h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKIhjxubjG)}(hhh]h)}(hmemory region attributesh]hmemory region attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKIhjubah}(h]h ]h"]h$]h&]uh1jFhjxubeh}(h]h ]h"]h$]h&]uh1j&hjhKIhjubj')}(h``nid`` NUMA node idh](j-)}(h``nid``h]h)}(hjh]hnid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKIhjubjG)}(hhh]h)}(h NUMA node idh]h NUMA node id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKJhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKIhjubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_type (C struct)c.memblock_typehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h memblock_typeh]j)}(hstruct memblock_typeh](j)}(hj\h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKPubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhKPubj)}(h memblock_typeh]j)}(hj h]h memblock_type}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhjhKPubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj hhhjhKPubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhKPhjhhubj)}(hhh]h)}(h,collection of memory regions of certain typeh]h,collection of memory regions of certain type}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKUhjPhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKPubeh}(h]h ](jstructeh"]h$]h&]jjjjkjjkjjjuh1jthhhjDhNhNubj)}(hXy**Definition**:: struct memblock_type { unsigned long cnt; unsigned long max; phys_addr_t total_size; struct memblock_region *regions; char *name; }; **Members** ``cnt`` number of regions ``max`` size of the allocated array ``total_size`` size of all regions ``regions`` array of regions ``name`` the memory type symbolic nameh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh:}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKYhjoubj)}(hstruct memblock_type { unsigned long cnt; unsigned long max; phys_addr_t total_size; struct memblock_region *regions; char *name; };h]hstruct memblock_type { unsigned long cnt; unsigned long max; phys_addr_t total_size; struct memblock_region *regions; char *name; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhK[hjoubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKchjoubj")}(hhh](j')}(h``cnt`` number of regions h](j-)}(h``cnt``h]h)}(hjh]hcnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKWhjubjG)}(hhh]h)}(hnumber of regionsh]hnumber of regions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKWhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKWhjubj')}(h$``max`` size of the allocated array h](j-)}(h``max``h]h)}(hjh]hmax}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKXhjubjG)}(hhh]h)}(hsize of the allocated arrayh]hsize of the allocated array}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKXhj ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj hKXhjubj')}(h#``total_size`` size of all regions h](j-)}(h``total_size``h]h)}(hj2 h]h total_size}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0 ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKYhj, ubjG)}(hhh]h)}(hsize of all regionsh]hsize of all regions}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG hKYhjH ubah}(h]h ]h"]h$]h&]uh1jFhj, ubeh}(h]h ]h"]h$]h&]uh1j&hjG hKYhjubj')}(h``regions`` array of regions h](j-)}(h ``regions``h]h)}(hjk h]hregions}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1hhji ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKZhje ubjG)}(hhh]h)}(harray of regionsh]harray of regions}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKZhj ubah}(h]h ]h"]h$]h&]uh1jFhje ubeh}(h]h ]h"]h$]h&]uh1j&hj hKZhjubj')}(h&``name`` the memory type symbolic nameh](j-)}(h``name``h]h)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKZhj ubjG)}(hhh]h)}(hthe memory type symbolic nameh]hthe memory type symbolic name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhK[hj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKZhjubeh}(h]h ]h"]h$]h&]uh1j!hjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock (C struct) c.memblockhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hmemblockh]j)}(hstruct memblockh](j)}(hj\h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKaubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKaubj)}(hmemblockh]j)}(hj h]hmemblock}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKaubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj hhhj hKaubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jyhj hKahj hhubj)}(hhh]h)}(hmemblock allocator metadatah]hmemblock allocator metadata}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKehj= hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKaubeh}(h]h ](jstructeh"]h$]h&]jjjjX jjX jjjuh1jthhhjDhNhNubj)}(hXq**Definition**:: struct memblock { bool bottom_up; phys_addr_t current_limit; struct memblock_type memory; struct memblock_type reserved; }; **Members** ``bottom_up`` is bottom up direction? ``current_limit`` physical address of the current allocation limit ``memory`` usable memory regions ``reserved`` reserved memory regionsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj` ubh:}(hj` hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKihj\ ubj)}(hstruct memblock { bool bottom_up; phys_addr_t current_limit; struct memblock_type memory; struct memblock_type reserved; };h]hstruct memblock { bool bottom_up; phys_addr_t current_limit; struct memblock_type memory; struct memblock_type reserved; };}hj} sbah}(h]h ]h"]h$]h&]jjuh1jh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKkhj\ ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKrhj\ ubj")}(hhh](j')}(h&``bottom_up`` is bottom up direction? h](j-)}(h ``bottom_up``h]h)}(hj h]h bottom_up}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKghj ubjG)}(hhh]h)}(his bottom up direction?h]his bottom up direction?}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKghj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKghj ubj')}(hC``current_limit`` physical address of the current allocation limit h](j-)}(h``current_limit``h]h)}(hj h]h current_limit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhhj ubjG)}(hhh]h)}(h0physical address of the current allocation limith]h0physical address of the current allocation limit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhhj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKhhj ubj')}(h!``memory`` usable memory regions h](j-)}(h ``memory``h]h)}(hj h]hmemory}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKihj ubjG)}(hhh]h)}(husable memory regionsh]husable memory regions}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4 hKihj5 ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj4 hKihj ubj')}(h$``reserved`` reserved memory regionsh](j-)}(h ``reserved``h]h)}(hjX h]hreserved}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKihjR ubjG)}(hhh]h)}(hreserved memory regionsh]hreserved memory regions}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKjhjn ubah}(h]h ]h"]h$]h&]uh1jFhjR ubeh}(h]h ]h"]h$]h&]uh1j&hjm hKihj ubeh}(h]h ]h"]h$]h&]uh1j!hj\ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp for_each_physmem_range (C macro)c.for_each_physmem_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_physmem_rangeh]j)}(hfor_each_physmem_rangeh]j)}(hfor_each_physmem_rangeh]j)}(hj h]hfor_each_physmem_range}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jyhj hKhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1jthhhjDhNhNubh)}(h4``for_each_physmem_range (i, type, p_start, p_end)``h]h)}(hj h]h0for_each_physmem_range (i, type, p_start, p_end)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjDhhubh block_quote)}(h4iterate through physmem areas not included in type. h]h)}(h3iterate through physmem areas not included in type.h]h3iterate through physmem areas not included in type.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hj hKhjDhhubj)}(hX%**Parameters** ``i`` u64 used as loop variable ``type`` ptr to memblock_type which excludes from the iteration, can be ``NULL`` ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hj> h]hi}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj< ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj8 ubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS hKhjT ubah}(h]h ]h"]h$]h&]uh1jFhj8 ubeh}(h]h ]h"]h$]h&]uh1j&hjS hKhj5 ubj')}(hQ``type`` ptr to memblock_type which excludes from the iteration, can be ``NULL`` h](j-)}(h``type``h]h)}(hjw h]htype}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjq ubjG)}(hhh]h)}(hGptr to memblock_type which excludes from the iteration, can be ``NULL``h](h?ptr to memblock_type which excludes from the iteration, can be }(hj hhhNhNubh)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jFhjq ubeh}(h]h ]h"]h$]h&]uh1j&hj hKhj5 ubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hj h]hp_start}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hj hhhNhNubh)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKhj5 ubj')}(hJ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](j-)}(h ``p_end``h]h)}(hj h]hp_end}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hj hhhNhNubh)}(h``NULL``h]hNULL}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKhj5 ubeh}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp__for_each_mem_range (C macro)c.__for_each_mem_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h__for_each_mem_rangeh]j)}(h__for_each_mem_rangeh]j)}(h__for_each_mem_rangeh]j)}(hjg h]h__for_each_mem_range}(hjq hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm ubah}(h]h ](jjeh"]h$]h&]jjuh1jhji hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhje hhhj hKubah}(h]j` ah ](jjeh"]h$]h&]jj)jhuh1jyhj hKhjb hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjb hhhj hKubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1jthhhjDhNhNubh)}(hO``__for_each_mem_range (i, type_a, type_b, nid, flags, p_start, p_end, p_nid)``h]h)}(hj h]hK__for_each_mem_range (i, type_a, type_b, nid, flags, p_start, p_end, p_nid)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjDhhubj )}(hiiterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL. h]h)}(hhiterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.h]hhiterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hj hKhjDhhubj)}(hX**Parameters** ``i`` u64 used as loop variable ``type_a`` ptr to memblock_type to iterate ``type_b`` ptr to memblock_type which excludes from the iteration ``nid`` node selector, ``NUMA_NO_NODE`` for all nodes ``flags`` pick from blocks based on memory attributes ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` ``p_nid`` ptr to int for nid of the range, can be ``NULL``h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hj h]hi}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hKhj ubj')}(h+``type_a`` ptr to memblock_type to iterate h](j-)}(h ``type_a``h]h)}(hj0h]htype_a}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj*ubjG)}(hhh]h)}(hptr to memblock_type to iterateh]hptr to memblock_type to iterate}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjFubah}(h]h ]h"]h$]h&]uh1jFhj*ubeh}(h]h ]h"]h$]h&]uh1j&hjEhKhj ubj')}(hB``type_b`` ptr to memblock_type which excludes from the iteration h](j-)}(h ``type_b``h]h)}(hjih]htype_b}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjcubjG)}(hhh]h)}(h6ptr to memblock_type which excludes from the iterationh]h6ptr to memblock_type which excludes from the iteration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hKhjubah}(h]h ]h"]h$]h&]uh1jFhjcubeh}(h]h ]h"]h$]h&]uh1j&hj~hKhj ubj')}(h6``nid`` node selector, ``NUMA_NO_NODE`` for all nodes h](j-)}(h``nid``h]h)}(hjh]hnid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h-node selector, ``NUMA_NO_NODE`` for all nodesh](hnode selector, }(hjhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh for all nodes}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhj ubj')}(h6``flags`` pick from blocks based on memory attributes h](j-)}(h ``flags``h]h)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhj ubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hj&h]hp_start}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj ubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hj?hhhNhNubh)}(h``NULL``h]hNULL}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?ubeh}(h]h ]h"]h$]h&]uh1hhj;hKhj<ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj;hKhj ubj')}(hK``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjmh]hp_end}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjgubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjgubeh}(h]h ]h"]h$]h&]uh1j&hjhKhj ubj')}(h:``p_nid`` ptr to int for nid of the range, can be ``NULL``h](j-)}(h ``p_nid``h]h)}(hjh]hp_nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h0ptr to int for nid of the range, can be ``NULL``h](h(ptr to int for nid of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhj ubeh}(h]h ]h"]h$]h&]uh1j!hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp"__for_each_mem_range_rev (C macro)c.__for_each_mem_range_revhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h__for_each_mem_range_revh]j)}(h__for_each_mem_range_revh]j)}(h__for_each_mem_range_revh]j)}(hjh]h__for_each_mem_range_rev}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhj3hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhj3hKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj3hKubeh}(h]h ](jmacroeh"]h$]h&]jjjjLjjLjjjuh1jthhhjDhNhNubh)}(hS``__for_each_mem_range_rev (i, type_a, type_b, nid, flags, p_start, p_end, p_nid)``h]h)}(hjRh]hO__for_each_mem_range_rev (i, type_a, type_b, nid, flags, p_start, p_end, p_nid)}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjDhhubj )}(hqreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL. h]h)}(hpreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.h]hpreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjhubah}(h]h ]h"]h$]h&]uh1j hjzhKhjDhhubj)}(hX**Parameters** ``i`` u64 used as loop variable ``type_a`` ptr to memblock_type to iterate ``type_b`` ptr to memblock_type which excludes from the iteration ``nid`` node selector, ``NUMA_NO_NODE`` for all nodes ``flags`` pick from blocks based on memory attributes ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` ``p_nid`` ptr to int for nid of the range, can be ``NULL``h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hjh]hi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjubj')}(h+``type_a`` ptr to memblock_type to iterate h](j-)}(h ``type_a``h]h)}(hjh]htype_a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(hptr to memblock_type to iterateh]hptr to memblock_type to iterate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjubj')}(hB``type_b`` ptr to memblock_type which excludes from the iteration h](j-)}(h ``type_b``h]h)}(hjh]htype_b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h6ptr to memblock_type which excludes from the iterationh]h6ptr to memblock_type which excludes from the iteration}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKhj.ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj-hKhjubj')}(h6``nid`` node selector, ``NUMA_NO_NODE`` for all nodes h](j-)}(h``nid``h]h)}(hjQh]hnid}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjKubjG)}(hhh]h)}(h-node selector, ``NUMA_NO_NODE`` for all nodesh](hnode selector, }(hjjhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjubh for all nodes}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjfhKhjgubah}(h]h ]h"]h$]h&]uh1jFhjKubeh}(h]h ]h"]h$]h&]uh1j&hjfhKhjubj')}(h6``flags`` pick from blocks based on memory attributes h](j-)}(h ``flags``h]h)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjh]hp_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjubj')}(hK``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjh]hp_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hj5hhhNhNubh)}(h``NULL``h]hNULL}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5ubeh}(h]h ]h"]h$]h&]uh1hhj1hKhj2ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj1hKhjubj')}(h:``p_nid`` ptr to int for nid of the range, can be ``NULL``h](j-)}(h ``p_nid``h]h)}(hjch]hp_nid}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj]ubjG)}(hhh]h)}(h0ptr to int for nid of the range, can be ``NULL``h](h(ptr to int for nid of the range, can be }(hj|hhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|ubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjyubah}(h]h ]h"]h$]h&]uh1jFhj]ubeh}(h]h ]h"]h$]h&]uh1j&hjxhKhjubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpfor_each_mem_range (C macro)c.for_each_mem_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_mem_rangeh]j)}(hfor_each_mem_rangeh]j)}(hfor_each_mem_rangeh]j)}(hjh]hfor_each_mem_range}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubh)}(h*``for_each_mem_range (i, p_start, p_end)``h]h)}(hjh]h&for_each_mem_range (i, p_start, p_end)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjDhhubj )}(hiterate through memory areas. h]h)}(hiterate through memory areas.h]hiterate through memory areas.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubah}(h]h ]h"]h$]h&]uh1j hj)hKhjDhhubj)}(h**Parameters** ``i`` u64 used as loop variable ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhj0ubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hjUh]hi}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjOubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhKhjkubah}(h]h ]h"]h$]h&]uh1jFhjOubeh}(h]h ]h"]h$]h&]uh1j&hjjhKhjLubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjh]hp_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjLubj')}(hJ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](j-)}(h ``p_end``h]h)}(hjh]hp_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjLubeh}(h]h ]h"]h$]h&]uh1j!hj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp for_each_mem_range_rev (C macro)c.for_each_mem_range_revhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_mem_range_revh]j)}(hfor_each_mem_range_revh]j)}(hfor_each_mem_range_revh]j)}(hj7h]hfor_each_mem_range_rev}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj9hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhj5hhhjThKubah}(h]j0ah ](jjeh"]h$]h&]jj)jhuh1jyhjThKhj2hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj2hhhjThKubeh}(h]h ](jmacroeh"]h$]h&]jjjjmjjmjjjuh1jthhhjDhNhNubh)}(h.``for_each_mem_range_rev (i, p_start, p_end)``h]h)}(hjsh]h*for_each_mem_range_rev (i, p_start, p_end)}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjDhhubj )}(hqreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL. h]h)}(hpreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.h]hpreverse iterate through memblock areas from type_a and not included in type_b. Or just type_a if type_b is NULL.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhKhjubah}(h]h ]h"]h$]h&]uh1j hjhKhjDhhubj)}(h**Parameters** ``i`` u64 used as loop variable ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hjh]hi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjh]hp_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjubj')}(hJ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL``h](j-)}(h ``p_end``h]h)}(hjGh]hp_end}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjAubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hj`hhhNhNubh)}(h``NULL``h]hNULL}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`ubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj]ubah}(h]h ]h"]h$]h&]uh1jFhjAubeh}(h]h ]h"]h$]h&]uh1j&hj\hMhjubeh}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp%for_each_reserved_mem_range (C macro)c.for_each_reserved_mem_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_reserved_mem_rangeh]j)}(hfor_each_reserved_mem_rangeh]j)}(hfor_each_reserved_mem_rangeh]j)}(hjh]hfor_each_reserved_mem_range}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM ubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhM hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubh)}(h3``for_each_reserved_mem_range (i, p_start, p_end)``h]h)}(hjh]h/for_each_reserved_mem_range (i, p_start, p_end)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM hjDhhubj )}(h)iterate over all reserved memblock areas h]h)}(h(iterate over all reserved memblock areash]h(iterate over all reserved memblock areas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM hjubah}(h]h ]h"]h$]h&]uh1j hj hM hjDhhubj)}(hX8**Parameters** ``i`` u64 used as loop variable ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` **Description** Walks over reserved areas of memblock. Available as soon as memblock is initialized.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hj9h]hi}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM hj3ubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhM hjOubah}(h]h ]h"]h$]h&]uh1jFhj3ubeh}(h]h ]h"]h$]h&]uh1j&hjNhM hj0ubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjrh]hp_start}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM hjlubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jFhjlubeh}(h]h ]h"]h$]h&]uh1j&hjhM hj0ubj')}(hK``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjh]hp_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhj0ubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubh)}(hTWalks over reserved areas of memblock. Available as soon as memblock is initialized.h]hTWalks over reserved areas of memblock. Available as soon as memblock is initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp for_each_mem_pfn_range (C macro)c.for_each_mem_pfn_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_mem_pfn_rangeh]j)}(hfor_each_mem_pfn_rangeh]j)}(hfor_each_mem_pfn_rangeh]j)}(hjAh]hfor_each_mem_pfn_range}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ](jjeh"]h$]h&]jjuh1jhjChhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM;ubah}(h]h ]h"]h$]h&]jjjuh1jjjhj?hhhj^hM;ubah}(h]j:ah ](jjeh"]h$]h&]jj)jhuh1jyhj^hM;hj<hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj<hhhj^hM;ubeh}(h]h ](jmacroeh"]h$]h&]jjjjwjjwjjjuh1jthhhjDhNhNubh)}(h:``for_each_mem_pfn_range (i, nid, p_start, p_end, p_nid)``h]h)}(hj}h]h6for_each_mem_pfn_range (i, nid, p_start, p_end, p_nid)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM=hjDhhubj )}(h early memory pfn range iterator h]h)}(hearly memory pfn range iteratorh]hearly memory pfn range iterator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM;hjubah}(h]h ]h"]h$]h&]uh1j hjhM;hjDhhubj)}(hXr**Parameters** ``i`` an integer used as loop variable ``nid`` node selector, ``MAX_NUMNODES`` for all nodes ``p_start`` ptr to ulong for start pfn of the range, can be ``NULL`` ``p_end`` ptr to ulong for end pfn of the range, can be ``NULL`` ``p_nid`` ptr to int for nid of the range, can be ``NULL`` **Description** Walks over configured memory ranges.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM?hjubj")}(hhh](j')}(h'``i`` an integer used as loop variable h](j-)}(h``i``h]h)}(hjh]hi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM<hjubjG)}(hhh]h)}(h an integer used as loop variableh]h an integer used as loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM<hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM<hjubj')}(h6``nid`` node selector, ``MAX_NUMNODES`` for all nodes h](j-)}(h``nid``h]h)}(hj h]hnid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM=hjubjG)}(hhh]h)}(h-node selector, ``MAX_NUMNODES`` for all nodesh](hnode selector, }(hj#hhhNhNubh)}(h``MAX_NUMNODES``h]h MAX_NUMNODES}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubh for all nodes}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM=hj ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM=hjubj')}(hE``p_start`` ptr to ulong for start pfn of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjUh]hp_start}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM>hjOubjG)}(hhh]h)}(h8ptr to ulong for start pfn of the range, can be ``NULL``h](h0ptr to ulong for start pfn of the range, can be }(hjnhhhNhNubh)}(h``NULL``h]hNULL}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnubeh}(h]h ]h"]h$]h&]uh1hhjjhM>hjkubah}(h]h ]h"]h$]h&]uh1jFhjOubeh}(h]h ]h"]h$]h&]uh1j&hjjhM>hjubj')}(hA``p_end`` ptr to ulong for end pfn of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjh]hp_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM?hjubjG)}(hhh]h)}(h6ptr to ulong for end pfn of the range, can be ``NULL``h](h.ptr to ulong for end pfn of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM?hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM?hjubj')}(h;``p_nid`` ptr to int for nid of the range, can be ``NULL`` h](j-)}(h ``p_nid``h]h)}(hjh]hp_nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM@hjubjG)}(hhh]h)}(h0ptr to int for nid of the range, can be ``NULL``h](h(ptr to int for nid of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM@hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM@hjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hj,h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMBhjubh)}(h$Walks over configured memory ranges.h]h$Walks over configured memory ranges.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp!for_each_free_mem_range (C macro)c.for_each_free_mem_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_free_mem_rangeh]j)}(hfor_each_free_mem_rangeh]j)}(hfor_each_free_mem_rangeh]j)}(hjkh]hfor_each_free_mem_range}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubah}(h]h ](jjeh"]h$]h&]jjuh1jhjmhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMJubah}(h]h ]h"]h$]h&]jjjuh1jjjhjihhhjhMJubah}(h]jdah ](jjeh"]h$]h&]jj)jhuh1jyhjhMJhjfhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjfhhhjhMJubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubh)}(hB``for_each_free_mem_range (i, nid, flags, p_start, p_end, p_nid)``h]h)}(hjh]h>for_each_free_mem_range (i, nid, flags, p_start, p_end, p_nid)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMLhjDhhubj )}(h$iterate through free memblock areas h]h)}(h#iterate through free memblock areash]h#iterate through free memblock areas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMJhjubah}(h]h ]h"]h$]h&]uh1j hjhMJhjDhhubj)}(hX**Parameters** ``i`` u64 used as loop variable ``nid`` node selector, ``NUMA_NO_NODE`` for all nodes ``flags`` pick from blocks based on memory attributes ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` ``p_nid`` ptr to int for nid of the range, can be ``NULL`` **Description** Walks over free (memory && !reserved) areas of memblock. Available as soon as memblock is initialized.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMNhjubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hjh]hi}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMKhjubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMKhjubj')}(h6``nid`` node selector, ``NUMA_NO_NODE`` for all nodes h](j-)}(h``nid``h]h)}(hj4h]hnid}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMLhj.ubjG)}(hhh]h)}(h-node selector, ``NUMA_NO_NODE`` for all nodesh](hnode selector, }(hjMhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMubh for all nodes}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjIhMLhjJubah}(h]h ]h"]h$]h&]uh1jFhj.ubeh}(h]h ]h"]h$]h&]uh1j&hjIhMLhjubj')}(h6``flags`` pick from blocks based on memory attributes h](j-)}(h ``flags``h]h)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMMhjyubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMMhjubah}(h]h ]h"]h$]h&]uh1jFhjyubeh}(h]h ]h"]h$]h&]uh1j&hjhMMhjubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjh]hp_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMNhjubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMNhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMNhjubj')}(hK``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjh]hp_end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMOhjubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhMOhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMOhjubj')}(h;``p_nid`` ptr to int for nid of the range, can be ``NULL`` h](j-)}(h ``p_nid``h]h)}(hjFh]hp_nid}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMPhj@ubjG)}(hhh]h)}(h0ptr to int for nid of the range, can be ``NULL``h](h(ptr to int for nid of the range, can be }(hj_hhhNhNubh)}(h``NULL``h]hNULL}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_ubeh}(h]h ]h"]h$]h&]uh1hhj[hMPhj\ubah}(h]h ]h"]h$]h&]uh1jFhj@ubeh}(h]h ]h"]h$]h&]uh1j&hj[hMPhjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMRhjubh)}(hgWalks over free (memory && !reserved) areas of memblock. Available as soon as memblock is initialized.h]hgWalks over free (memory && !reserved) areas of memblock. Available as soon as memblock is initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMQhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp)for_each_free_mem_range_reverse (C macro)!c.for_each_free_mem_range_reversehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_free_mem_range_reverseh]j)}(hfor_each_free_mem_range_reverseh]j)}(hfor_each_free_mem_range_reverseh]j)}(hjh]hfor_each_free_mem_range_reverse}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMZubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMZubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhMZhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhMZubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubh)}(hJ``for_each_free_mem_range_reverse (i, nid, flags, p_start, p_end, p_nid)``h]h)}(hj h]hFfor_each_free_mem_range_reverse (i, nid, flags, p_start, p_end, p_nid)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM\hjDhhubj )}(h(rev-iterate through free memblock areas h]h)}(h'rev-iterate through free memblock areash]h'rev-iterate through free memblock areas}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMZhj ubah}(h]h ]h"]h$]h&]uh1j hj2hMZhjDhhubj)}(hX **Parameters** ``i`` u64 used as loop variable ``nid`` node selector, ``NUMA_NO_NODE`` for all nodes ``flags`` pick from blocks based on memory attributes ``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` ``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` ``p_nid`` ptr to int for nid of the range, can be ``NULL`` **Description** Walks over free (memory && !reserved) areas of memblock in reverse order. Available as soon as memblock is initialized.h](h)}(h**Parameters**h]j)}(hj?h]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM^hj9ubj")}(hhh](j')}(h ``i`` u64 used as loop variable h](j-)}(h``i``h]h)}(hj^h]hi}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM[hjXubjG)}(hhh]h)}(hu64 used as loop variableh]hu64 used as loop variable}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshM[hjtubah}(h]h ]h"]h$]h&]uh1jFhjXubeh}(h]h ]h"]h$]h&]uh1j&hjshM[hjUubj')}(h6``nid`` node selector, ``NUMA_NO_NODE`` for all nodes h](j-)}(h``nid``h]h)}(hjh]hnid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM\hjubjG)}(hhh]h)}(h-node selector, ``NUMA_NO_NODE`` for all nodesh](hnode selector, }(hjhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh for all nodes}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM\hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM\hjUubj')}(h6``flags`` pick from blocks based on memory attributes h](j-)}(h ``flags``h]h)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM]hjubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM]hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM]hjUubj')}(hO``p_start`` ptr to phys_addr_t for start address of the range, can be ``NULL`` h](j-)}(h ``p_start``h]h)}(hjh]hp_start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM^hjubjG)}(hhh]h)}(hBptr to phys_addr_t for start address of the range, can be ``NULL``h](h:ptr to phys_addr_t for start address of the range, can be }(hj4hhhNhNubh)}(h``NULL``h]hNULL}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4ubeh}(h]h ]h"]h$]h&]uh1hhj0hM^hj1ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj0hM^hjUubj')}(hK``p_end`` ptr to phys_addr_t for end address of the range, can be ``NULL`` h](j-)}(h ``p_end``h]h)}(hjbh]hp_end}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM_hj\ubjG)}(hhh]h)}(h@ptr to phys_addr_t for end address of the range, can be ``NULL``h](h8ptr to phys_addr_t for end address of the range, can be }(hj{hhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{ubeh}(h]h ]h"]h$]h&]uh1hhjwhM_hjxubah}(h]h ]h"]h$]h&]uh1jFhj\ubeh}(h]h ]h"]h$]h&]uh1j&hjwhM_hjUubj')}(h;``p_nid`` ptr to int for nid of the range, can be ``NULL`` h](j-)}(h ``p_nid``h]h)}(hjh]hp_nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM`hjubjG)}(hhh]h)}(h0ptr to int for nid of the range, can be ``NULL``h](h(ptr to int for nid of the range, can be }(hjhhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjhM`hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM`hjUubeh}(h]h ]h"]h$]h&]uh1j!hj9ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMbhj9ubh)}(hxWalks over free (memory && !reserved) areas of memblock in reverse order. Available as soon as memblock is initialized.h]hxWalks over free (memory && !reserved) areas of memblock in reverse order. Available as soon as memblock is initialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMahj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp'memblock_set_current_limit (C function)c.memblock_set_current_limithNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h3void memblock_set_current_limit (phys_addr_t limit)h]j)}(h2void memblock_set_current_limit(phys_addr_t limit)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hj9hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j7hj3hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhjHhMubj)}(hmemblock_set_current_limith]j)}(hmemblock_set_current_limith]hmemblock_set_current_limit}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhj3hhhjHhMubhdesc_parameterlist)}(h(phys_addr_t limit)h]hdesc_parameter)}(hphys_addr_t limith](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj]sbc.memblock_set_current_limitasbuh1hhjwubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj)}(hlimith]hlimit}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjqubah}(h]h ]h"]h$]h&]jjuh1johj3hhhjHhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj/hhhjHhMubah}(h]j*ah ](jjeh"]h$]h&]jj)jhuh1jyhjHhMhj,hhubj)}(hhh]h)}(hjSet the current allocation limit to allow limiting allocations to what is currently accessible during booth]hjSet the current allocation limit to allow limiting allocations to what is currently accessible during boot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhj,hhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hJ**Parameters** ``phys_addr_t limit`` New limit value (physical address)h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubj")}(hhh]j')}(h8``phys_addr_t limit`` New limit value (physical address)h](j-)}(h``phys_addr_t limit``h]h)}(hjh]hphys_addr_t limit}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjubjG)}(hhh]h)}(h"New limit value (physical address)h]h"New limit value (physical address)}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj5ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj4hMhjubah}(h]h ]h"]h$]h&]uh1j!hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp,memblock_region_memory_base_pfn (C function)!c.memblock_region_memory_base_pfnhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hQunsigned long memblock_region_memory_base_pfn (const struct memblock_region *reg)h]j)}(hPunsigned long memblock_region_memory_base_pfn(const struct memblock_region *reg)h](j8)}(hunsignedh]hunsigned}(hjyhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjuhhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhhjhM ubj8)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjuhhhjhM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhhjhM ubj)}(hmemblock_region_memory_base_pfnh]j)}(hmemblock_region_memory_base_pfnh]hmemblock_region_memory_base_pfn}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjuhhhjhM ubjp)}(h#(const struct memblock_region *reg)h]jv)}(h!const struct memblock_region *regh](j)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj\h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hmemblock_regionh]hmemblock_region}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsb!c.memblock_region_memory_base_pfnasbuh1hhjubj)}(h h]h }(hj, hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(hj8h]h*}(hj< hhhNhNubah}(h]h ]pah"]h$]h&]uh1j: hjubj)}(hregh]hreg}(hjJ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubah}(h]h ]h"]h$]h&]jjuh1johjuhhhjhM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjqhhhjhM ubah}(h]jlah ](jjeh"]h$]h&]jj)jhuh1jyhjhM hjnhhubj)}(hhh]h)}(h'get the lowest pfn of the memory regionh]h'get the lowest pfn of the memory region}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM hjq hhubah}(h]h ]h"]h$]h&]uh1jhjnhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``const struct memblock_region *reg`` memblock_region structure **Return** the lowest pfn intersecting with the memory regionh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj ubj")}(hhh]j')}(h@``const struct memblock_region *reg`` memblock_region structure h](j-)}(h%``const struct memblock_region *reg``h]h)}(hj h]h!const struct memblock_region *reg}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj ubjG)}(hhh]h)}(hmemblock_region structureh]hmemblock_region structure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj hMhj ubah}(h]h ]h"]h$]h&]uh1j!hj ubh)}(h **Return**h]j)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj ubh)}(h2the lowest pfn intersecting with the memory regionh]h2the lowest pfn intersecting with the memory region}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp+memblock_region_memory_end_pfn (C function) c.memblock_region_memory_end_pfnhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hPunsigned long memblock_region_memory_end_pfn (const struct memblock_region *reg)h]j)}(hOunsigned long memblock_region_memory_end_pfn(const struct memblock_region *reg)h](j8)}(hunsignedh]hunsigned}(hj5!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1!hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMubj)}(h h]h }(hjD!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1!hhhjC!hMubj8)}(hlongh]hlong}(hjR!hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj1!hhhjC!hMubj)}(h h]h }(hj`!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1!hhhjC!hMubj)}(hmemblock_region_memory_end_pfnh]j)}(hmemblock_region_memory_end_pfnh]hmemblock_region_memory_end_pfn}(hjr!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn!ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1!hhhjC!hMubjp)}(h#(const struct memblock_region *reg)h]jv)}(h!const struct memblock_region *regh](j)}(hjh]hconst}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hj\h]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j)}(hmemblock_regionh]hmemblock_region}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jjt!sb c.memblock_region_memory_end_pfnasbuh1hhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj; )}(hj8h]h*}(hj!hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj!ubj)}(hregh]hreg}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj!ubah}(h]h ]h"]h$]h&]jjuh1johj1!hhhjC!hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj-!hhhjC!hMubah}(h]j(!ah ](jjeh"]h$]h&]jj)jhuh1jyhjC!hMhj*!hhubj)}(hhh]h)}(h$get the end pfn of the memory regionh]h$get the end pfn of the memory region}(hj,"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhj)"hhubah}(h]h ]h"]h$]h&]uh1jhj*!hhhjC!hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjD"jjD"jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``const struct memblock_region *reg`` memblock_region structure **Return** the end_pfn of the reserved regionh](h)}(h**Parameters**h]j)}(hjN"h]h Parameters}(hjP"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL"ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjH"ubj")}(hhh]j')}(h@``const struct memblock_region *reg`` memblock_region structure h](j-)}(h%``const struct memblock_region *reg``h]h)}(hjm"h]h!const struct memblock_region *reg}(hjo"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk"ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjg"ubjG)}(hhh]h)}(hmemblock_region structureh]hmemblock_region structure}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jFhjg"ubeh}(h]h ]h"]h$]h&]uh1j&hj"hMhjd"ubah}(h]h ]h"]h$]h&]uh1j!hjH"ubh)}(h **Return**h]j)}(hj"h]hReturn}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjH"ubh)}(h"the end_pfn of the reserved regionh]h"the end_pfn of the reserved region}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMhjH"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp.memblock_region_reserved_base_pfn (C function)#c.memblock_region_reserved_base_pfnhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hSunsigned long memblock_region_reserved_base_pfn (const struct memblock_region *reg)h]j)}(hRunsigned long memblock_region_reserved_base_pfn(const struct memblock_region *reg)h](j8)}(hunsignedh]hunsigned}(hj"hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj"hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM#ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhj"hM#ubj8)}(hlongh]hlong}(hj #hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj"hhhj"hM#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhj"hM#ubj)}(h!memblock_region_reserved_base_pfnh]j)}(h!memblock_region_reserved_base_pfnh]h!memblock_region_reserved_base_pfn}(hj*#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj"hhhj"hM#ubjp)}(h#(const struct memblock_region *reg)h]jv)}(h!const struct memblock_region *regh](j)}(hjh]hconst}(hjF#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubj)}(h h]h }(hjS#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubj)}(hj\h]hstruct}(hja#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubj)}(h h]h }(hjn#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubh)}(hhh]j)}(hmemblock_regionh]hmemblock_region}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jj,#sb#c.memblock_region_reserved_base_pfnasbuh1hhjB#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubj; )}(hj8h]h*}(hj#hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjB#ubj)}(hregh]hreg}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB#ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj>#ubah}(h]h ]h"]h$]h&]jjuh1johj"hhhj"hM#ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj"hhhj"hM#ubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1jyhj"hM#hj"hhubj)}(hhh]h)}(h)get the lowest pfn of the reserved regionh]h)get the lowest pfn of the reserved region}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM#hj#hhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj"hM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj#jj#jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``const struct memblock_region *reg`` memblock_region structure **Return** the lowest pfn intersecting with the reserved regionh](h)}(h**Parameters**h]j)}(hj$h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM'hj$ubj")}(hhh]j')}(h@``const struct memblock_region *reg`` memblock_region structure h](j-)}(h%``const struct memblock_region *reg``h]h)}(hj%$h]h!const struct memblock_region *reg}(hj'$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#$ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM$hj$ubjG)}(hhh]h)}(hmemblock_region structureh]hmemblock_region structure}(hj>$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:$hM$hj;$ubah}(h]h ]h"]h$]h&]uh1jFhj$ubeh}(h]h ]h"]h$]h&]uh1j&hj:$hM$hj$ubah}(h]h ]h"]h$]h&]uh1j!hj$ubh)}(h **Return**h]j)}(hj`$h]hReturn}(hjb$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^$ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM&hj$ubh)}(h4the lowest pfn intersecting with the reserved regionh]h4the lowest pfn intersecting with the reserved region}(hjv$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM&hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp-memblock_region_reserved_end_pfn (C function)"c.memblock_region_reserved_end_pfnhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hRunsigned long memblock_region_reserved_end_pfn (const struct memblock_region *reg)h]j)}(hQunsigned long memblock_region_reserved_end_pfn(const struct memblock_region *reg)h](j8)}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM.ubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hM.ubj8)}(hlongh]hlong}(hj$hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$hhhj$hM.ubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hM.ubj)}(h memblock_region_reserved_end_pfnh]j)}(h memblock_region_reserved_end_pfnh]h memblock_region_reserved_end_pfn}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj$hhhj$hM.ubjp)}(h#(const struct memblock_region *reg)h]jv)}(h!const struct memblock_region *regh](j)}(hjh]hconst}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(h h]h }(hj %hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(hj\h]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(h h]h }(hj&%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hhh]j)}(hmemblock_regionh]hmemblock_region}(hj7%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9%modnameN classnameNjj)}j]j)}jj$sb"c.memblock_region_reserved_end_pfnasbuh1hhj$ubj)}(h h]h }(hjW%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj; )}(hj8h]h*}(hje%hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj$ubj)}(hregh]hreg}(hjr%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj$ubah}(h]h ]h"]h$]h&]jjuh1johj$hhhj$hM.ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj$hhhj$hM.ubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1jyhj$hM.hj$hhubj)}(hhh]h)}(h&get the end pfn of the reserved regionh]h&get the end pfn of the reserved region}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM.hj%hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj$hM.ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%jj%jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``const struct memblock_region *reg`` memblock_region structure **Return** the end_pfn of the reserved regionh](h)}(h**Parameters**h]j)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM2hj%ubj")}(hhh]j')}(h@``const struct memblock_region *reg`` memblock_region structure h](j-)}(h%``const struct memblock_region *reg``h]h)}(hj%h]h!const struct memblock_region *reg}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM/hj%ubjG)}(hhh]h)}(hmemblock_region structureh]hmemblock_region structure}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hM/hj%ubah}(h]h ]h"]h$]h&]uh1jFhj%ubeh}(h]h ]h"]h$]h&]uh1j&hj%hM/hj%ubah}(h]h ]h"]h$]h&]uh1j!hj%ubh)}(h **Return**h]j)}(hj&h]hReturn}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM1hj%ubh)}(h"the end_pfn of the reserved regionh]h"the end_pfn of the reserved region}(hj.&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM1hj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpfor_each_mem_region (C macro)c.for_each_mem_regionhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_mem_regionh]j)}(hfor_each_mem_regionh]j)}(hfor_each_mem_regionh]j)}(hjW&h]hfor_each_mem_region}(hja&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]&ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjY&hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM9ubah}(h]h ]h"]h$]h&]jjjuh1jjjhjU&hhhjt&hM9ubah}(h]jP&ah ](jjeh"]h$]h&]jj)jhuh1jyhjt&hM9hjR&hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjR&hhhjt&hM9ubeh}(h]h ](jmacroeh"]h$]h&]jjjj&jj&jjjuh1jthhhjDhNhNubh)}(h ``for_each_mem_region (region)``h]h)}(hj&h]hfor_each_mem_region (region)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM;hjDhhubj )}(hiterate over memory regions h]h)}(hiterate over memory regionsh]hiterate over memory regions}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM9hj&ubah}(h]h ]h"]h$]h&]uh1j hj&hM9hjDhhubj)}(h***Parameters** ``region`` loop variableh](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM=hj&ubj")}(hhh]j')}(h``region`` loop variableh](j-)}(h ``region``h]h)}(hj&h]hregion}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM?hj&ubjG)}(hhh]h)}(h loop variableh]h loop variable}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhM:hj&ubah}(h]h ]h"]h$]h&]uh1jFhj&ubeh}(h]h ]h"]h$]h&]uh1j&hj&hM?hj&ubah}(h]h ]h"]h$]h&]uh1j!hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp&for_each_reserved_mem_region (C macro)c.for_each_reserved_mem_regionhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hfor_each_reserved_mem_regionh]j)}(hfor_each_reserved_mem_regionh]j)}(hfor_each_reserved_mem_regionh]j)}(hj;'h]hfor_each_reserved_mem_region}(hjE'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj='hhh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMBubah}(h]h ]h"]h$]h&]jjjuh1jjjhj9'hhhjX'hMBubah}(h]j4'ah ](jjeh"]h$]h&]jj)jhuh1jyhjX'hMBhj6'hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj6'hhhjX'hMBubeh}(h]h ](jmacroeh"]h$]h&]jjjjq'jjq'jjjuh1jthhhjDhNhNubh)}(h)``for_each_reserved_mem_region (region)``h]h)}(hjw'h]h%for_each_reserved_mem_region (region)}(hjy'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju'ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMDhjDhhubj )}(h&itereate over reserved memory regions h]h)}(h%itereate over reserved memory regionsh]h%itereate over reserved memory regions}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMBhj'ubah}(h]h ]h"]h$]h&]uh1j hj'hMBhjDhhubj)}(h***Parameters** ``region`` loop variableh](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMFhj'ubj")}(hhh]j')}(h``region`` loop variableh](j-)}(h ``region``h]h)}(hj'h]hregion}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]uh1j,h^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMHhj'ubjG)}(hhh]h)}(h loop variableh]h loop variable}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:39: ./include/linux/memblock.hhMChj'ubah}(h]h ]h"]h$]h&]uh1jFhj'ubeh}(h]h ]h"]h$]h&]uh1j&hj'hMHhj'ubah}(h]h ]h"]h$]h&]uh1j!hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp,__memblock_find_range_bottom_up (C function)!c.__memblock_find_range_bottom_uphNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hphys_addr_t __init_memblock __memblock_find_range_bottom_up (phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h]j)}(hphys_addr_t __init_memblock __memblock_find_range_bottom_up(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj((hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*(modnameN classnameNjj)}j]j)}j__memblock_find_range_bottom_upsb!c.__memblock_find_range_bottom_upasbuh1hhj!(hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKubj)}(h h]h }(hjJ(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!(hhhjI(hKubh__init_memblock}(hj!(hhhNhNubj)}(h h]h }(hj\(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!(hhhjI(hKubj)}(h__memblock_find_range_bottom_uph]j)}(hjF(h]h__memblock_find_range_bottom_up}(hjn(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj(ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj!(hhhjI(hKubjp)}(hm(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h](jv)}(hphys_addr_t starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]jD(!c.__memblock_find_range_bottom_upasbuh1hhj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hstarth]hstart}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubjv)}(hphys_addr_t endh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]jD(!c.__memblock_find_range_bottom_upasbuh1hhj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hendh]hend}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]jD(!c.__memblock_find_range_bottom_upasbuh1hhj)ubj)}(h h]h }(hj:)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hsizeh]hsize}(hjH)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjd)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjf)modnameN classnameNjj)}j]jD(!c.__memblock_find_range_bottom_upasbuh1hhj])ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj])ubj)}(halignh]halign}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj])ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubjv)}(hint nidh](j8)}(hinth]hint}(hj)hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hnidh]hnid}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]jD(!c.__memblock_find_range_bottom_upasbuh1hhj)ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj)}(hflagsh]hflags}(hj(*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj(ubeh}(h]h ]h"]h$]h&]jjuh1johj!(hhhjI(hKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj(hhhjI(hKubah}(h]j(ah ](jjeh"]h$]h&]jj)jhuh1jyhjI(hKhj(hhubj)}(hhh]h)}(h#find free area utility in bottom-uph]h#find free area utility in bottom-up}(hjR*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjO*hhubah}(h]h ]h"]h$]h&]uh1jhj(hhhjI(hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjj*jjj*jjjuh1jthhhjDhNhNubj)}(hXK**Parameters** ``phys_addr_t start`` start of candidate range ``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` ``phys_addr_t size`` size of free area to find ``phys_addr_t align`` alignment of free area to find ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node ``enum memblock_flags flags`` pick from blocks based on memory attributes **Description** Utility called from memblock_find_in_range_node(), find free area bottom-up. **Return** Found address on success, 0 on failure.h](h)}(h**Parameters**h]j)}(hjt*h]h Parameters}(hjv*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr*ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjn*ubj")}(hhh](j')}(h/``phys_addr_t start`` start of candidate range h](j-)}(h``phys_addr_t start``h]h)}(hj*h]hphys_addr_t start}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj*ubjG)}(hhh]h)}(hstart of candidate rangeh]hstart of candidate range}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1jFhj*ubeh}(h]h ]h"]h$]h&]uh1j&hj*hKhj*ubj')}(hp``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` h](j-)}(h``phys_addr_t end``h]h)}(hj*h]hphys_addr_t end}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj*ubjG)}(hhh]h)}(h[end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE``h](hend of candidate range, can be }(hj*hhhNhNubh)}(h``MEMBLOCK_ALLOC_ANYWHERE``h]hMEMBLOCK_ALLOC_ANYWHERE}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubh or }(hj*hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj*ubah}(h]h ]h"]h$]h&]uh1jFhj*ubeh}(h]h ]h"]h$]h&]uh1j&hj*hKhj*ubj')}(h/``phys_addr_t size`` size of free area to find h](j-)}(h``phys_addr_t size``h]h)}(hj&+h]hphys_addr_t size}(hj(+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$+ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj +ubjG)}(hhh]h)}(hsize of free area to findh]hsize of free area to find}(hj?+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;+hKhj<+ubah}(h]h ]h"]h$]h&]uh1jFhj +ubeh}(h]h ]h"]h$]h&]uh1j&hj;+hKhj*ubj')}(h5``phys_addr_t align`` alignment of free area to find h](j-)}(h``phys_addr_t align``h]h)}(hj_+h]hphys_addr_t align}(hja+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]+ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjY+ubjG)}(hhh]h)}(halignment of free area to findh]halignment of free area to find}(hjx+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt+hKhju+ubah}(h]h ]h"]h$]h&]uh1jFhjY+ubeh}(h]h ]h"]h$]h&]uh1j&hjt+hKhj*ubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hj+h]hint nid}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj+ubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hj+hhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ubh for any node}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj+hKhj+ubah}(h]h ]h"]h$]h&]uh1jFhj+ubeh}(h]h ]h"]h$]h&]uh1j&hj+hKhj*ubj')}(hJ``enum memblock_flags flags`` pick from blocks based on memory attributes h](j-)}(h``enum memblock_flags flags``h]h)}(hj+h]henum memblock_flags flags}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj+ubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj+ubah}(h]h ]h"]h$]h&]uh1jFhj+ubeh}(h]h ]h"]h$]h&]uh1j&hj+hKhj*ubeh}(h]h ]h"]h$]h&]uh1j!hjn*ubh)}(h**Description**h]j)}(hj,h]h Description}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjn*ubh)}(hLUtility called from memblock_find_in_range_node(), find free area bottom-up.h]hLUtility called from memblock_find_in_range_node(), find free area bottom-up.}(hj4,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjn*ubh)}(h **Return**h]j)}(hjE,h]hReturn}(hjG,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC,ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjn*ubh)}(h'Found address on success, 0 on failure.h]h'Found address on success, 0 on failure.}(hj[,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjn*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp+__memblock_find_range_top_down (C function) c.__memblock_find_range_top_downhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hphys_addr_t __init_memblock __memblock_find_range_top_down (phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h]j)}(hphys_addr_t __init_memblock __memblock_find_range_top_down(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j)}j__memblock_find_range_top_downsb c.__memblock_find_range_top_downasbuh1hhj,hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj,hKubh__init_memblock}(hj,hhhNhNubj)}(h h]h }(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj,hKubj)}(h__memblock_find_range_top_downh]j)}(hj,h]h__memblock_find_range_top_down}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj,hhhj,hKubjp)}(hm(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align, int nid, enum memblock_flags flags)h](jv)}(hphys_addr_t starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j, c.__memblock_find_range_top_downasbuh1hhj,ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj)}(hstarth]hstart}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubjv)}(hphys_addr_t endh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj9-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;-modnameN classnameNjj)}j]j, c.__memblock_find_range_top_downasbuh1hhj2-ubj)}(h h]h }(hjW-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2-ubj)}(hendh]hend}(hje-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2-ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j, c.__memblock_find_range_top_downasbuh1hhjz-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz-ubj)}(hsizeh]hsize}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz-ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNjj)}j]j, c.__memblock_find_range_top_downasbuh1hhj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(halignh]halign}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubjv)}(hint nidh](j8)}(hinth]hint}(hj.hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj .ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj .ubj)}(hnidh]hnid}(hj*.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj .ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hjC.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?.ubj)}(h h]h }(hjP.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?.ubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hja.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjc.modnameN classnameNjj)}j]j, c.__memblock_find_range_top_downasbuh1hhj?.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?.ubj)}(hflagsh]hflags}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?.ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj,ubeh}(h]h ]h"]h$]h&]jjuh1johj,hhhj,hKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj,hhhj,hKubah}(h]j},ah ](jjeh"]h$]h&]jj)jhuh1jyhj,hKhj,hhubj)}(hhh]h)}(h#find free area utility, in top-downh]h#find free area utility, in top-down}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj.hhubah}(h]h ]h"]h$]h&]uh1jhj,hhhj,hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.jj.jjjuh1jthhhjDhNhNubj)}(hXJ**Parameters** ``phys_addr_t start`` start of candidate range ``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` ``phys_addr_t size`` size of free area to find ``phys_addr_t align`` alignment of free area to find ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node ``enum memblock_flags flags`` pick from blocks based on memory attributes **Description** Utility called from memblock_find_in_range_node(), find free area top-down. **Return** Found address on success, 0 on failure.h](h)}(h**Parameters**h]j)}(hj.h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj.ubj")}(hhh](j')}(h/``phys_addr_t start`` start of candidate range h](j-)}(h``phys_addr_t start``h]h)}(hj.h]hphys_addr_t start}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj.ubjG)}(hhh]h)}(hstart of candidate rangeh]hstart of candidate range}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj /hMhj/ubah}(h]h ]h"]h$]h&]uh1jFhj.ubeh}(h]h ]h"]h$]h&]uh1j&hj /hMhj.ubj')}(hp``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` h](j-)}(h``phys_addr_t end``h]h)}(hj1/h]hphys_addr_t end}(hj3/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj//ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj+/ubjG)}(hhh]h)}(h[end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE``h](hend of candidate range, can be }(hjJ/hhhNhNubh)}(h``MEMBLOCK_ALLOC_ANYWHERE``h]hMEMBLOCK_ALLOC_ANYWHERE}(hjR/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ/ubh or }(hjJ/hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hjd/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ/ubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjG/ubah}(h]h ]h"]h$]h&]uh1jFhj+/ubeh}(h]h ]h"]h$]h&]uh1j&hjF/hMhj.ubj')}(h/``phys_addr_t size`` size of free area to find h](j-)}(h``phys_addr_t size``h]h)}(hj/h]hphys_addr_t size}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj/ubjG)}(hhh]h)}(hsize of free area to findh]hsize of free area to find}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jFhj/ubeh}(h]h ]h"]h$]h&]uh1j&hj/hMhj.ubj')}(h5``phys_addr_t align`` alignment of free area to find h](j-)}(h``phys_addr_t align``h]h)}(hj/h]hphys_addr_t align}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj/ubjG)}(hhh]h)}(halignment of free area to findh]halignment of free area to find}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jFhj/ubeh}(h]h ]h"]h$]h&]uh1j&hj/hMhj.ubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hj/h]hint nid}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj/ubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hj0hhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0ubh for any node}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0hMhj0ubah}(h]h ]h"]h$]h&]uh1jFhj/ubeh}(h]h ]h"]h$]h&]uh1j&hj0hMhj.ubj')}(hJ``enum memblock_flags flags`` pick from blocks based on memory attributes h](j-)}(h``enum memblock_flags flags``h]h)}(hjH0h]henum memblock_flags flags}(hjJ0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjF0ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjB0ubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hja0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]0hMhj^0ubah}(h]h ]h"]h$]h&]uh1jFhjB0ubeh}(h]h ]h"]h$]h&]uh1j&hj]0hMhj.ubeh}(h]h ]h"]h$]h&]uh1j!hj.ubh)}(h**Description**h]j)}(hj0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj.ubh)}(hKUtility called from memblock_find_in_range_node(), find free area top-down.h]hKUtility called from memblock_find_in_range_node(), find free area top-down.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj.ubh)}(h **Return**h]j)}(hj0h]hReturn}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj.ubh)}(h'Found address on success, 0 on failure.h]h'Found address on success, 0 on failure.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp(memblock_find_in_range_node (C function)c.memblock_find_in_range_nodehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hphys_addr_t __init_memblock memblock_find_in_range_node (phys_addr_t size, phys_addr_t align, phys_addr_t start, phys_addr_t end, int nid, enum memblock_flags flags)h]j)}(hphys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t size, phys_addr_t align, phys_addr_t start, phys_addr_t end, int nid, enum memblock_flags flags)h](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jmemblock_find_in_range_nodesbc.memblock_find_in_range_nodeasbuh1hhj0hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM&ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhhj1hM&ubh__init_memblock}(hj0hhhNhNubj)}(h h]h }(hj&1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhhj1hM&ubj)}(hmemblock_find_in_range_nodeh]j)}(hj1h]hmemblock_find_in_range_node}(hj81hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj41ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj0hhhj1hM&ubjp)}(hm(phys_addr_t size, phys_addr_t align, phys_addr_t start, phys_addr_t end, int nid, enum memblock_flags flags)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjV1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjX1modnameN classnameNjj)}j]j1c.memblock_find_in_range_nodeasbuh1hhjO1ubj)}(h h]h }(hjt1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO1ubj)}(hsizeh]hsize}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO1ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]j1c.memblock_find_in_range_nodeasbuh1hhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(halignh]halign}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubjv)}(hphys_addr_t starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]j1c.memblock_find_in_range_nodeasbuh1hhj1ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(hstarth]hstart}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubjv)}(hphys_addr_t endh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj.2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj02modnameN classnameNjj)}j]j1c.memblock_find_in_range_nodeasbuh1hhj'2ubj)}(h h]h }(hjL2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'2ubj)}(hendh]hend}(hjZ2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'2ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubjv)}(hint nidh](j8)}(hinth]hint}(hjs2hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjo2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo2ubj)}(hnidh]hnid}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo2ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]j1c.memblock_find_in_range_nodeasbuh1hhj2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(hflagsh]hflags}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjK1ubeh}(h]h ]h"]h$]h&]jjuh1johj0hhhj1hM&ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj0hhhj1hM&ubah}(h]j0ah ](jjeh"]h$]h&]jj)jhuh1jyhj1hM&hj0hhubj)}(hhh]h)}(h&find free area in given range and nodeh]h&find free area in given range and node}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM&hj3hhubah}(h]h ]h"]h$]h&]uh1jhj0hhhj1hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj43jj43jjjuh1jthhhjDhNhNubj)}(hXL**Parameters** ``phys_addr_t size`` size of free area to find ``phys_addr_t align`` alignment of free area to find ``phys_addr_t start`` start of candidate range ``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node ``enum memblock_flags flags`` pick from blocks based on memory attributes **Description** Find **size** free area aligned to **align** in the specified range and node. **Return** Found address on success, 0 on failure.h](h)}(h**Parameters**h]j)}(hj>3h]h Parameters}(hj@3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<3ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM*hj83ubj")}(hhh](j')}(h/``phys_addr_t size`` size of free area to find h](j-)}(h``phys_addr_t size``h]h)}(hj]3h]hphys_addr_t size}(hj_3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[3ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM'hjW3ubjG)}(hhh]h)}(hsize of free area to findh]hsize of free area to find}(hjv3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr3hM'hjs3ubah}(h]h ]h"]h$]h&]uh1jFhjW3ubeh}(h]h ]h"]h$]h&]uh1j&hjr3hM'hjT3ubj')}(h5``phys_addr_t align`` alignment of free area to find h](j-)}(h``phys_addr_t align``h]h)}(hj3h]hphys_addr_t align}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM(hj3ubjG)}(hhh]h)}(halignment of free area to findh]halignment of free area to find}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hM(hj3ubah}(h]h ]h"]h$]h&]uh1jFhj3ubeh}(h]h ]h"]h$]h&]uh1j&hj3hM(hjT3ubj')}(h/``phys_addr_t start`` start of candidate range h](j-)}(h``phys_addr_t start``h]h)}(hj3h]hphys_addr_t start}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM)hj3ubjG)}(hhh]h)}(hstart of candidate rangeh]hstart of candidate range}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hM)hj3ubah}(h]h ]h"]h$]h&]uh1jFhj3ubeh}(h]h ]h"]h$]h&]uh1j&hj3hM)hjT3ubj')}(hp``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` h](j-)}(h``phys_addr_t end``h]h)}(hj4h]hphys_addr_t end}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM+hj4ubjG)}(hhh]h)}(h[end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE``h](hend of candidate range, can be }(hj!4hhhNhNubh)}(h``MEMBLOCK_ALLOC_ANYWHERE``h]hMEMBLOCK_ALLOC_ANYWHERE}(hj)4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!4ubh or }(hj!4hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hj;4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!4ubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM*hj4ubah}(h]h ]h"]h$]h&]uh1jFhj4ubeh}(h]h ]h"]h$]h&]uh1j&hj4hM+hjT3ubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjb4h]hint nid}(hjd4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`4ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM,hj\4ubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hj{4hhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{4ubh for any node}(hj{4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjw4hM,hjx4ubah}(h]h ]h"]h$]h&]uh1jFhj\4ubeh}(h]h ]h"]h$]h&]uh1j&hjw4hM,hjT3ubj')}(hJ``enum memblock_flags flags`` pick from blocks based on memory attributes h](j-)}(h``enum memblock_flags flags``h]h)}(hj4h]henum memblock_flags flags}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM-hj4ubjG)}(hhh]h)}(h+pick from blocks based on memory attributesh]h+pick from blocks based on memory attributes}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hM-hj4ubah}(h]h ]h"]h$]h&]uh1jFhj4ubeh}(h]h ]h"]h$]h&]uh1j&hj4hM-hjT3ubeh}(h]h ]h"]h$]h&]uh1j!hj83ubh)}(h**Description**h]j)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM/hj83ubh)}(hMFind **size** free area aligned to **align** in the specified range and node.h](hFind }(hj4hhhNhNubj)}(h**size**h]hsize}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh free area aligned to }(hj4hhhNhNubj)}(h **align**h]halign}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh! in the specified range and node.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM.hj83ubh)}(h **Return**h]j)}(hj35h]hReturn}(hj55hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj15ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM0hj83ubh)}(h'Found address on success, 0 on failure.h]h'Found address on success, 0 on failure.}(hjI5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM1hj83ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_find_in_range (C function)c.memblock_find_in_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h|phys_addr_t __init_memblock memblock_find_in_range (phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align)h]j)}(h{phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align)h](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj{5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}5modnameN classnameNjj)}j]j)}jmemblock_find_in_rangesbc.memblock_find_in_rangeasbuh1hhjt5hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMKubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt5hhhj5hMKubh__init_memblock}(hjt5hhhNhNubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt5hhhj5hMKubj)}(hmemblock_find_in_rangeh]j)}(hj5h]hmemblock_find_in_range}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjt5hhhj5hMKubjp)}(hI(phys_addr_t start, phys_addr_t end, phys_addr_t size, phys_addr_t align)h](jv)}(hphys_addr_t starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j5c.memblock_find_in_rangeasbuh1hhj5ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(hstarth]hstart}(hj 6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj5ubjv)}(hphys_addr_t endh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj'6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)6modnameN classnameNjj)}j]j5c.memblock_find_in_rangeasbuh1hhj 6ubj)}(h h]h }(hjE6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 6ubj)}(hendh]hend}(hjS6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 6ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj5ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjo6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjq6modnameN classnameNjj)}j]j5c.memblock_find_in_rangeasbuh1hhjh6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh6ubj)}(hsizeh]hsize}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh6ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj5ubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j5c.memblock_find_in_rangeasbuh1hhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(halignh]halign}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj5ubeh}(h]h ]h"]h$]h&]jjuh1johjt5hhhj5hMKubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjp5hhhj5hMKubah}(h]jk5ah ](jjeh"]h$]h&]jj)jhuh1jyhj5hMKhjm5hhubj)}(hhh]h)}(hfind free area in given rangeh]hfind free area in given range}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMKhj 7hhubah}(h]h ]h"]h$]h&]uh1jhjm5hhhj5hMKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%7jj%7jjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``phys_addr_t start`` start of candidate range ``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` ``phys_addr_t size`` size of free area to find ``phys_addr_t align`` alignment of free area to find **Description** Find **size** free area aligned to **align** in the specified range. **Return** Found address on success, 0 on failure.h](h)}(h**Parameters**h]j)}(hj/7h]h Parameters}(hj17hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-7ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMOhj)7ubj")}(hhh](j')}(h/``phys_addr_t start`` start of candidate range h](j-)}(h``phys_addr_t start``h]h)}(hjN7h]hphys_addr_t start}(hjP7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL7ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMLhjH7ubjG)}(hhh]h)}(hstart of candidate rangeh]hstart of candidate range}(hjg7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc7hMLhjd7ubah}(h]h ]h"]h$]h&]uh1jFhjH7ubeh}(h]h ]h"]h$]h&]uh1j&hjc7hMLhjE7ubj')}(hp``phys_addr_t end`` end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE`` h](j-)}(h``phys_addr_t end``h]h)}(hj7h]hphys_addr_t end}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMNhj7ubjG)}(hhh]h)}(h[end of candidate range, can be ``MEMBLOCK_ALLOC_ANYWHERE`` or ``MEMBLOCK_ALLOC_ACCESSIBLE``h](hend of candidate range, can be }(hj7hhhNhNubh)}(h``MEMBLOCK_ALLOC_ANYWHERE``h]hMEMBLOCK_ALLOC_ANYWHERE}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubh or }(hj7hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMMhj7ubah}(h]h ]h"]h$]h&]uh1jFhj7ubeh}(h]h ]h"]h$]h&]uh1j&hj7hMNhjE7ubj')}(h/``phys_addr_t size`` size of free area to find h](j-)}(h``phys_addr_t size``h]h)}(hj7h]hphys_addr_t size}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMOhj7ubjG)}(hhh]h)}(hsize of free area to findh]hsize of free area to find}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMOhj7ubah}(h]h ]h"]h$]h&]uh1jFhj7ubeh}(h]h ]h"]h$]h&]uh1j&hj7hMOhjE7ubj')}(h5``phys_addr_t align`` alignment of free area to find h](j-)}(h``phys_addr_t align``h]h)}(hj8h]hphys_addr_t align}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMPhj8ubjG)}(hhh]h)}(halignment of free area to findh]halignment of free area to find}(hj38hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/8hMPhj08ubah}(h]h ]h"]h$]h&]uh1jFhj8ubeh}(h]h ]h"]h$]h&]uh1j&hj/8hMPhjE7ubeh}(h]h ]h"]h$]h&]uh1j!hj)7ubh)}(h**Description**h]j)}(hjU8h]h Description}(hjW8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS8ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMRhj)7ubh)}(hDFind **size** free area aligned to **align** in the specified range.h](hFind }(hjk8hhhNhNubj)}(h**size**h]hsize}(hjs8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk8ubh free area aligned to }(hjk8hhhNhNubj)}(h **align**h]halign}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk8ubh in the specified range.}(hjk8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMQhj)7ubh)}(h **Return**h]j)}(hj8h]hReturn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMShj)7ubh)}(h'Found address on success, 0 on failure.h]h'Found address on success, 0 on failure.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMThj)7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_discard (C function)c.memblock_discardhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hvoid memblock_discard (void)h]j)}(hvoid memblock_discard(void)h](j8)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj8hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8hhhj8hMubj)}(hmemblock_discardh]j)}(hmemblock_discardh]hmemblock_discard}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj8hhhj8hMubjp)}(h(void)h]jv)}(hvoidh]j8)}(hvoidh]hvoid}(hj"9hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9ubah}(h]h ]h"]h$]h&]noemphjjuh1juhj9ubah}(h]h ]h"]h$]h&]jjuh1johj8hhhj8hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj8hhhj8hMubah}(h]j8ah ](jjeh"]h$]h&]jj)jhuh1jyhj8hMhj8hhubj)}(hhh]h)}(h9discard memory and reserved arrays if they were allocatedh]h9discard memory and reserved arrays if they were allocated}(hjL9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjI9hhubah}(h]h ]h"]h$]h&]uh1jhj8hhhj8hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjd9jjd9jjjuh1jthhhjDhNhNubj)}(h'**Parameters** ``void`` no argumentsh](h)}(h**Parameters**h]j)}(hjn9h]h Parameters}(hjp9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl9ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjh9ubj")}(hhh]j')}(h``void`` no argumentsh](j-)}(h``void``h]h)}(hj9h]hvoid}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj9ubjG)}(hhh]h)}(h no argumentsh]h no arguments}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj9ubah}(h]h ]h"]h$]h&]uh1jFhj9ubeh}(h]h ]h"]h$]h&]uh1j&hj9hMhj9ubah}(h]h ]h"]h$]h&]uh1j!hjh9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp"memblock_double_array (C function)c.memblock_double_arrayhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h}int __init_memblock memblock_double_array (struct memblock_type *type, phys_addr_t new_area_start, phys_addr_t new_area_size)h]j)}(h|int __init_memblock memblock_double_array(struct memblock_type *type, phys_addr_t new_area_start, phys_addr_t new_area_size)h](j8)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj9hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhj9hMubh__init_memblock}(hj9hhhNhNubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhj9hMubj)}(hmemblock_double_arrayh]j)}(hmemblock_double_arrayh]hmemblock_double_array}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj9hhhj9hMubjp)}(hS(struct memblock_type *type, phys_addr_t new_area_start, phys_addr_t new_area_size)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hj6:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2:ubj)}(h h]h }(hjC:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2:ubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hjT:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjV:modnameN classnameNjj)}j]j)}jj:sbc.memblock_double_arrayasbuh1hhj2:ubj)}(h h]h }(hjt:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2:ubj; )}(hj8h]h*}(hj:hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj2:ubj)}(htypeh]htype}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2:ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj.:ubjv)}(hphys_addr_t new_area_starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]jp:c.memblock_double_arrayasbuh1hhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hnew_area_starth]hnew_area_start}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj.:ubjv)}(hphys_addr_t new_area_sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]jp:c.memblock_double_arrayasbuh1hhj:ubj)}(h h]h }(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(h new_area_sizeh]h new_area_size}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj.:ubeh}(h]h ]h"]h$]h&]jjuh1johj9hhhj9hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj9hhhj9hMubah}(h]j9ah ](jjeh"]h$]h&]jj)jhuh1jyhj9hMhj9hhubj)}(hhh]h)}(h-double the size of the memblock regions arrayh]h-double the size of the memblock regions array}(hjI;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjF;hhubah}(h]h ]h"]h$]h&]uh1jhj9hhhj9hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjja;jja;jjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``struct memblock_type *type`` memblock type of the regions array being doubled ``phys_addr_t new_area_start`` starting address of memory range to avoid overlap with ``phys_addr_t new_area_size`` size of memory range to avoid overlap with **Description** Double the size of the **type** regions array. If memblock is being used to allocate memory for a new reserved regions array and there is a previously allocated memory range [**new_area_start**, **new_area_start** + **new_area_size**] waiting to be reserved, ensure the memory used by the new array does not overlap. **Return** 0 on success, -1 on failure.h](h)}(h**Parameters**h]j)}(hjk;h]h Parameters}(hjm;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji;ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhje;ubj")}(hhh](j')}(hP``struct memblock_type *type`` memblock type of the regions array being doubled h](j-)}(h``struct memblock_type *type``h]h)}(hj;h]hstruct memblock_type *type}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj;ubjG)}(hhh]h)}(h0memblock type of the regions array being doubledh]h0memblock type of the regions array being doubled}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jFhj;ubeh}(h]h ]h"]h$]h&]uh1j&hj;hMhj;ubj')}(hV``phys_addr_t new_area_start`` starting address of memory range to avoid overlap with h](j-)}(h``phys_addr_t new_area_start``h]h)}(hj;h]hphys_addr_t new_area_start}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj;ubjG)}(hhh]h)}(h6starting address of memory range to avoid overlap withh]h6starting address of memory range to avoid overlap with}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jFhj;ubeh}(h]h ]h"]h$]h&]uh1j&hj;hMhj;ubj')}(hI``phys_addr_t new_area_size`` size of memory range to avoid overlap with h](j-)}(h``phys_addr_t new_area_size``h]h)}(hj;h]hphys_addr_t new_area_size}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj;ubjG)}(hhh]h)}(h*size of memory range to avoid overlap withh]h*size of memory range to avoid overlap with}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj<ubah}(h]h ]h"]h$]h&]uh1jFhj;ubeh}(h]h ]h"]h$]h&]uh1j&hj<hMhj;ubeh}(h]h ]h"]h$]h&]uh1j!hje;ubh)}(h**Description**h]j)}(hj7<h]h Description}(hj9<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5<ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhje;ubh)}(hX<Double the size of the **type** regions array. If memblock is being used to allocate memory for a new reserved regions array and there is a previously allocated memory range [**new_area_start**, **new_area_start** + **new_area_size**] waiting to be reserved, ensure the memory used by the new array does not overlap.h](hDouble the size of the }(hjM<hhhNhNubj)}(h**type**h]htype}(hjU<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM<ubh regions array. If memblock is being used to allocate memory for a new reserved regions array and there is a previously allocated memory range [}(hjM<hhhNhNubj)}(h**new_area_start**h]hnew_area_start}(hjg<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM<ubh, }(hjM<hhhNhNubj)}(h**new_area_start**h]hnew_area_start}(hjy<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM<ubh + }(hjM<hhhNhNubj)}(h**new_area_size**h]h new_area_size}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM<ubhS] waiting to be reserved, ensure the memory used by the new array does not overlap.}(hjM<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhje;ubh)}(h **Return**h]j)}(hj<h]hReturn}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhje;ubh)}(h0 on success, -1 on failure.h]h0 on success, -1 on failure.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhje;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_merge_regions (C function)c.memblock_merge_regionshNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hxvoid __init_memblock memblock_merge_regions (struct memblock_type *type, unsigned long start_rgn, unsigned long end_rgn)h]j)}(hwvoid __init_memblock memblock_merge_regions(struct memblock_type *type, unsigned long start_rgn, unsigned long end_rgn)h](j8)}(hvoidh]hvoid}(hj<hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj<hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhj<hMubh__init_memblock}(hj<hhhNhNubj)}(h h]h }(hj =hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhj<hMubj)}(hmemblock_merge_regionsh]j)}(hmemblock_merge_regionsh]hmemblock_merge_regions}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj<hhhj<hMubjp)}(hL(struct memblock_type *type, unsigned long start_rgn, unsigned long end_rgn)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hj:=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6=ubj)}(h h]h }(hjG=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6=ubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hjX=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZ=modnameN classnameNjj)}j]j)}jj =sbc.memblock_merge_regionsasbuh1hhj6=ubj)}(h h]h }(hjx=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6=ubj; )}(hj8h]h*}(hj=hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj6=ubj)}(htypeh]htype}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6=ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj2=ubjv)}(hunsigned long start_rgnh](j8)}(hunsignedh]hunsigned}(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj8)}(hlongh]hlong}(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(h start_rgnh]h start_rgn}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj2=ubjv)}(hunsigned long end_rgnh](j8)}(hunsignedh]hunsigned}(hj=hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubj)}(h h]h }(hj >hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj8)}(hlongh]hlong}(hj>hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj=ubj)}(h h]h }(hj'>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hend_rgnh]hend_rgn}(hj5>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj2=ubeh}(h]h ]h"]h$]h&]jjuh1johj<hhhj<hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj<hhhj<hMubah}(h]j<ah ](jjeh"]h$]h&]jj)jhuh1jyhj<hMhj<hhubj)}(hhh]h)}(h$merge neighboring compatible regionsh]h$merge neighboring compatible regions}(hj_>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj\>hhubah}(h]h ]h"]h$]h&]uh1jhj<hhhj<hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjw>jjw>jjjuh1jthhhjDhNhNubj)}(hX)**Parameters** ``struct memblock_type *type`` memblock type to scan ``unsigned long start_rgn`` start scanning from (**start_rgn** - 1) ``unsigned long end_rgn`` end scanning at (**end_rgn** - 1) Scan **type** and merge neighboring compatible regions in [**start_rgn** - 1, **end_rgn**)h](h)}(h**Parameters**h]j)}(hj>h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj{>ubj")}(hhh](j')}(h5``struct memblock_type *type`` memblock type to scan h](j-)}(h``struct memblock_type *type``h]h)}(hj>h]hstruct memblock_type *type}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj>ubjG)}(hhh]h)}(hmemblock type to scanh]hmemblock type to scan}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1jFhj>ubeh}(h]h ]h"]h$]h&]uh1j&hj>hMhj>ubj')}(hD``unsigned long start_rgn`` start scanning from (**start_rgn** - 1) h](j-)}(h``unsigned long start_rgn``h]h)}(hj>h]hunsigned long start_rgn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj>ubjG)}(hhh]h)}(h'start scanning from (**start_rgn** - 1)h](hstart scanning from (}(hj>hhhNhNubj)}(h **start_rgn**h]h start_rgn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh - 1)}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hMhj>ubah}(h]h ]h"]h$]h&]uh1jFhj>ubeh}(h]h ]h"]h$]h&]uh1j&hj>hMhj>ubj')}(h``unsigned long end_rgn`` end scanning at (**end_rgn** - 1) Scan **type** and merge neighboring compatible regions in [**start_rgn** - 1, **end_rgn**)h](j-)}(h``unsigned long end_rgn``h]h)}(hj$?h]hunsigned long end_rgn}(hj&?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"?ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj?ubjG)}(hhh]h)}(h|end scanning at (**end_rgn** - 1) Scan **type** and merge neighboring compatible regions in [**start_rgn** - 1, **end_rgn**)h](hend scanning at (}(hj=?hhhNhNubj)}(h **end_rgn**h]hend_rgn}(hjE?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=?ubh - 1) Scan }(hj=?hhhNhNubj)}(h**type**h]htype}(hjW?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=?ubh. and merge neighboring compatible regions in [}(hj=?hhhNhNubj)}(h **start_rgn**h]h start_rgn}(hji?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=?ubh - 1, }(hj=?hhhNhNubj)}(h **end_rgn**h]hend_rgn}(hj{?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=?ubh)}(hj=?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj9?hMhj:?ubah}(h]h ]h"]h$]h&]uh1jFhj?ubeh}(h]h ]h"]h$]h&]uh1j&hj9?hMhj>ubeh}(h]h ]h"]h$]h&]uh1j!hj{>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_insert_region (C function)c.memblock_insert_regionhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hvoid __init_memblock memblock_insert_region (struct memblock_type *type, int idx, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h]j)}(hvoid __init_memblock memblock_insert_region(struct memblock_type *type, int idx, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](j8)}(hvoidh]hvoid}(hj?hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj?hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM5ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hM5ubh__init_memblock}(hj?hhhNhNubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hM5ubj)}(hmemblock_insert_regionh]j)}(hmemblock_insert_regionh]hmemblock_insert_region}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj?hhhj?hM5ubjp)}(hm(struct memblock_type *type, int idx, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(h h]h }(hj!@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hj2@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4@modnameN classnameNjj)}j]j)}jj?sbc.memblock_insert_regionasbuh1hhj@ubj)}(h h]h }(hjR@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj; )}(hj8h]h*}(hj`@hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj@ubj)}(htypeh]htype}(hjm@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubjv)}(hint idxh](j8)}(hinth]hint}(hj@hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hidxh]hidx}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubjv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]jN@c.memblock_insert_regionasbuh1hhj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hbaseh]hbase}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]jN@c.memblock_insert_regionasbuh1hhj@ubj)}(h h]h }(hj$AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hsizeh]hsize}(hj2AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubjv)}(hint nidh](j8)}(hinth]hint}(hjKAhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjGAubj)}(h h]h }(hjYAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGAubj)}(hnidh]hnid}(hjgAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGAubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Aubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Aubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]jN@c.memblock_insert_regionasbuh1hhj|Aubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Aubj)}(hflagsh]hflags}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Aubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj @ubeh}(h]h ]h"]h$]h&]jjuh1johj?hhhj?hM5ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj?hhhj?hM5ubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1jyhj?hM5hj?hhubj)}(hhh]h)}(hinsert new memblock regionh]hinsert new memblock region}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM5hjAhhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj Bjj Bjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``struct memblock_type *type`` memblock type to insert into ``int idx`` index for the insertion point ``phys_addr_t base`` base address of the new region ``phys_addr_t size`` size of the new region ``int nid`` node id of the new region ``enum memblock_flags flags`` flags of the new region **Description** Insert new memblock region [**base**, **base** + **size**) into **type** at **idx**. **type** must already have extra room to accommodate the new region.h](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM9hjBubj")}(hhh](j')}(h<``struct memblock_type *type`` memblock type to insert into h](j-)}(h``struct memblock_type *type``h]h)}(hj5Bh]hstruct memblock_type *type}(hj7BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3Bubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM6hj/BubjG)}(hhh]h)}(hmemblock type to insert intoh]hmemblock type to insert into}(hjNBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJBhM6hjKBubah}(h]h ]h"]h$]h&]uh1jFhj/Bubeh}(h]h ]h"]h$]h&]uh1j&hjJBhM6hj,Bubj')}(h*``int idx`` index for the insertion point h](j-)}(h ``int idx``h]h)}(hjnBh]hint idx}(hjpBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlBubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM7hjhBubjG)}(hhh]h)}(hindex for the insertion pointh]hindex for the insertion point}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM7hjBubah}(h]h ]h"]h$]h&]uh1jFhjhBubeh}(h]h ]h"]h$]h&]uh1j&hjBhM7hj,Bubj')}(h4``phys_addr_t base`` base address of the new region h](j-)}(h``phys_addr_t base``h]h)}(hjBh]hphys_addr_t base}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM8hjBubjG)}(hhh]h)}(hbase address of the new regionh]hbase address of the new region}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM8hjBubah}(h]h ]h"]h$]h&]uh1jFhjBubeh}(h]h ]h"]h$]h&]uh1j&hjBhM8hj,Bubj')}(h,``phys_addr_t size`` size of the new region h](j-)}(h``phys_addr_t size``h]h)}(hjBh]hphys_addr_t size}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM9hjBubjG)}(hhh]h)}(hsize of the new regionh]hsize of the new region}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM9hjBubah}(h]h ]h"]h$]h&]uh1jFhjBubeh}(h]h ]h"]h$]h&]uh1j&hjBhM9hj,Bubj')}(h&``int nid`` node id of the new region h](j-)}(h ``int nid``h]h)}(hjCh]hint nid}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM:hjCubjG)}(hhh]h)}(hnode id of the new regionh]hnode id of the new region}(hj2ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ChM:hj/Cubah}(h]h ]h"]h$]h&]uh1jFhjCubeh}(h]h ]h"]h$]h&]uh1j&hj.ChM:hj,Bubj')}(h6``enum memblock_flags flags`` flags of the new region h](j-)}(h``enum memblock_flags flags``h]h)}(hjRCh]henum memblock_flags flags}(hjTChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPCubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM;hjLCubjG)}(hhh]h)}(hflags of the new regionh]hflags of the new region}(hjkChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjgChM;hjhCubah}(h]h ]h"]h$]h&]uh1jFhjLCubeh}(h]h ]h"]h$]h&]uh1j&hjgChM;hj,Bubeh}(h]h ]h"]h$]h&]uh1j!hjBubh)}(h**Description**h]j)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM=hjBubh)}(hInsert new memblock region [**base**, **base** + **size**) into **type** at **idx**. **type** must already have extra room to accommodate the new region.h](hInsert new memblock region [}(hjChhhNhNubj)}(h**base**h]hbase}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh, }(hjChhhNhNubj)}(h**base**h]hbase}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh + }(hjChhhNhNubj)}(h**size**h]hsize}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh) into }(hjChhhNhNubj)}(h**type**h]htype}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh at }(hjChhhNhNubj)}(h**idx**h]hidx}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh. }(hjChhhNhNubj)}(h**type**h]htype}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh< must already have extra room to accommodate the new region.}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM<hjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_add_range (C function)c.memblock_add_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hint __init_memblock memblock_add_range (struct memblock_type *type, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h]j)}(hint __init_memblock memblock_add_range(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](j8)}(hinth]hint}(hj>DhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:DhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMSubj)}(h h]h }(hjMDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:DhhhjLDhMSubh__init_memblock}(hj:DhhhNhNubj)}(h h]h }(hj_DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:DhhhjLDhMSubj)}(hmemblock_add_rangeh]j)}(hmemblock_add_rangeh]hmemblock_add_range}(hjqDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmDubah}(h]h ](jjeh"]h$]h&]jjuh1jhj:DhhhjLDhMSubjp)}(hd(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jjsDsbc.memblock_add_rangeasbuh1hhjDubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj; )}(hj8h]h*}(hjDhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjDubj)}(htypeh]htype}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjDubjv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]jDc.memblock_add_rangeasbuh1hhjDubj)}(h h]h }(hj EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj)}(hbaseh]hbase}(hj.EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjDubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjJEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLEmodnameN classnameNjj)}j]jDc.memblock_add_rangeasbuh1hhjCEubj)}(h h]h }(hjhEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCEubj)}(hsizeh]hsize}(hjvEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCEubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjDubjv)}(hint nidh](j8)}(hinth]hint}(hjEhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hnidh]hnid}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjDubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]jDc.memblock_add_rangeasbuh1hhjEubj)}(h h]h }(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hflagsh]hflags}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjDubeh}(h]h ]h"]h$]h&]jjuh1johj:DhhhjLDhMSubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj6DhhhjLDhMSubah}(h]j1Dah ](jjeh"]h$]h&]jj)jhuh1jyhjLDhMShj3Dhhubj)}(hhh]h)}(hadd new memblock regionh]hadd new memblock region}(hj8FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMShj5Fhhubah}(h]h ]h"]h$]h&]uh1jhj3DhhhjLDhMSubeh}(h]h ](jfunctioneh"]h$]h&]jjjjPFjjPFjjjuh1jthhhjDhNhNubj)}(hXv**Parameters** ``struct memblock_type *type`` memblock type to add new region into ``phys_addr_t base`` base address of the new region ``phys_addr_t size`` size of the new region ``int nid`` nid of the new region ``enum memblock_flags flags`` flags of the new region **Description** Add new memblock region [**base**, **base** + **size**) into **type**. The new region is allowed to overlap with existing ones - overlaps don't affect already existing regions. **type** is guaranteed to be minimal (all neighbouring compatible regions are merged) after the addition. **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjZFh]h Parameters}(hj\FhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXFubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMWhjTFubj")}(hhh](j')}(hD``struct memblock_type *type`` memblock type to add new region into h](j-)}(h``struct memblock_type *type``h]h)}(hjyFh]hstruct memblock_type *type}(hj{FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwFubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMThjsFubjG)}(hhh]h)}(h$memblock type to add new region intoh]h$memblock type to add new region into}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMThjFubah}(h]h ]h"]h$]h&]uh1jFhjsFubeh}(h]h ]h"]h$]h&]uh1j&hjFhMThjpFubj')}(h4``phys_addr_t base`` base address of the new region h](j-)}(h``phys_addr_t base``h]h)}(hjFh]hphys_addr_t base}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMUhjFubjG)}(hhh]h)}(hbase address of the new regionh]hbase address of the new region}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMUhjFubah}(h]h ]h"]h$]h&]uh1jFhjFubeh}(h]h ]h"]h$]h&]uh1j&hjFhMUhjpFubj')}(h,``phys_addr_t size`` size of the new region h](j-)}(h``phys_addr_t size``h]h)}(hjFh]hphys_addr_t size}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMVhjFubjG)}(hhh]h)}(hsize of the new regionh]hsize of the new region}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMVhjGubah}(h]h ]h"]h$]h&]uh1jFhjFubeh}(h]h ]h"]h$]h&]uh1j&hjGhMVhjpFubj')}(h"``int nid`` nid of the new region h](j-)}(h ``int nid``h]h)}(hj$Gh]hint nid}(hj&GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"Gubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMWhjGubjG)}(hhh]h)}(hnid of the new regionh]hnid of the new region}(hj=GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9GhMWhj:Gubah}(h]h ]h"]h$]h&]uh1jFhjGubeh}(h]h ]h"]h$]h&]uh1j&hj9GhMWhjpFubj')}(h6``enum memblock_flags flags`` flags of the new region h](j-)}(h``enum memblock_flags flags``h]h)}(hj]Gh]henum memblock_flags flags}(hj_GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[Gubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMXhjWGubjG)}(hhh]h)}(hflags of the new regionh]hflags of the new region}(hjvGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrGhMXhjsGubah}(h]h ]h"]h$]h&]uh1jFhjWGubeh}(h]h ]h"]h$]h&]uh1j&hjrGhMXhjpFubeh}(h]h ]h"]h$]h&]uh1j!hjTFubh)}(h**Description**h]j)}(hjGh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMZhjTFubh)}(hXAdd new memblock region [**base**, **base** + **size**) into **type**. The new region is allowed to overlap with existing ones - overlaps don't affect already existing regions. **type** is guaranteed to be minimal (all neighbouring compatible regions are merged) after the addition.h](hAdd new memblock region [}(hjGhhhNhNubj)}(h**base**h]hbase}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh, }(hjGhhhNhNubj)}(h**base**h]hbase}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh + }(hjGhhhNhNubj)}(h**size**h]hsize}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh) into }(hjGhhhNhNubj)}(h**type**h]htype}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubhp. The new region is allowed to overlap with existing ones - overlaps don’t affect already existing regions. }(hjGhhhNhNubj)}(h**type**h]htype}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubha is guaranteed to be minimal (all neighbouring compatible regions are merged) after the addition.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMYhjTFubh)}(h **Return**h]j)}(hjHh]hReturn}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM^hjTFubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hj/HhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM_hjTFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_add_node (C function)c.memblock_add_nodehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hnint __init_memblock memblock_add_node (phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h]j)}(hmint __init_memblock memblock_add_node(phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](j8)}(hinth]hint}(hj^HhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjZHhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjmHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZHhhhjlHhMubh__init_memblock}(hjZHhhhNhNubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZHhhhjlHhMubj)}(hmemblock_add_nodeh]j)}(hmemblock_add_nodeh]hmemblock_add_node}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ](jjeh"]h$]h&]jjuh1jhjZHhhhjlHhMubjp)}(hH(phys_addr_t base, phys_addr_t size, int nid, enum memblock_flags flags)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j]j)}jjHsbc.memblock_add_nodeasbuh1hhjHubj)}(h h]h }(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hbaseh]hbase}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjHubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j]jHc.memblock_add_nodeasbuh1hhjHubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hsizeh]hsize}(hj&IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjHubjv)}(hint nidh](j8)}(hinth]hint}(hj?IhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj;Iubj)}(h h]h }(hjMIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Iubj)}(hnidh]hnid}(hj[IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Iubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjHubjv)}(henum memblock_flags flagsh](j)}(hjh]henum}(hjtIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpIubh)}(hhh]j)}(hmemblock_flagsh]hmemblock_flags}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]jHc.memblock_add_nodeasbuh1hhjpIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpIubj)}(hflagsh]hflags}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpIubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjHubeh}(h]h ]h"]h$]h&]jjuh1johjZHhhhjlHhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjVHhhhjlHhMubah}(h]jQHah ](jjeh"]h$]h&]jj)jhuh1jyhjlHhMhjSHhhubj)}(hhh]h)}(h*add new memblock region within a NUMA nodeh]h*add new memblock region within a NUMA node}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjIhhubah}(h]h ]h"]h$]h&]uh1jhjSHhhhjlHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjJjjJjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``phys_addr_t base`` base address of the new region ``phys_addr_t size`` size of the new region ``int nid`` nid of the new region ``enum memblock_flags flags`` flags of the new region **Description** Add new memblock region [**base**, **base** + **size**) to the "memory" type. See memblock_add_range() description for mode details **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hj Jh]h Parameters}(hj JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubj")}(hhh](j')}(h4``phys_addr_t base`` base address of the new region h](j-)}(h``phys_addr_t base``h]h)}(hj)Jh]hphys_addr_t base}(hj+JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'Jubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj#JubjG)}(hhh]h)}(hbase address of the new regionh]hbase address of the new region}(hjBJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>JhMhj?Jubah}(h]h ]h"]h$]h&]uh1jFhj#Jubeh}(h]h ]h"]h$]h&]uh1j&hj>JhMhj Jubj')}(h,``phys_addr_t size`` size of the new region h](j-)}(h``phys_addr_t size``h]h)}(hjbJh]hphys_addr_t size}(hjdJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`Jubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj\JubjG)}(hhh]h)}(hsize of the new regionh]hsize of the new region}(hj{JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwJhMhjxJubah}(h]h ]h"]h$]h&]uh1jFhj\Jubeh}(h]h ]h"]h$]h&]uh1j&hjwJhMhj Jubj')}(h"``int nid`` nid of the new region h](j-)}(h ``int nid``h]h)}(hjJh]hint nid}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubjG)}(hhh]h)}(hnid of the new regionh]hnid of the new region}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1jFhjJubeh}(h]h ]h"]h$]h&]uh1j&hjJhMhj Jubj')}(h6``enum memblock_flags flags`` flags of the new region h](j-)}(h``enum memblock_flags flags``h]h)}(hjJh]henum memblock_flags flags}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubjG)}(hhh]h)}(hflags of the new regionh]hflags of the new region}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1jFhjJubeh}(h]h ]h"]h$]h&]uh1j&hjJhMhj Jubeh}(h]h ]h"]h$]h&]uh1j!hjJubh)}(h**Description**h]j)}(hjKh]h Description}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Kubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubh)}(hAdd new memblock region [**base**, **base** + **size**) to the "memory" type. See memblock_add_range() description for mode detailsh](hAdd new memblock region [}(hj%KhhhNhNubj)}(h**base**h]hbase}(hj-KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Kubh, }(hj%KhhhNhNubj)}(h**base**h]hbase}(hj?KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Kubh + }(hj%KhhhNhNubj)}(h**size**h]hsize}(hjQKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%KubhQ) to the “memory” type. See memblock_add_range() description for mode details}(hj%KhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubh)}(h **Return**h]j)}(hjlKh]hReturn}(hjnKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjKubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjJubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_add (C function)c.memblock_addhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hEint __init_memblock memblock_add (phys_addr_t base, phys_addr_t size)h]j)}(hDint __init_memblock memblock_add(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjKhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjKhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKhhhjKhMubh__init_memblock}(hjKhhhNhNubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKhhhjKhMubj)}(h memblock_addh]j)}(h memblock_addh]h memblock_add}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ](jjeh"]h$]h&]jjuh1jhjKhhhjKhMubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLmodnameN classnameNjj)}j]j)}jjKsbc.memblock_addasbuh1hhjKubj)}(h h]h }(hj#LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj)}(hbaseh]hbase}(hj1LhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjKubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjMLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOLmodnameN classnameNjj)}j]jLc.memblock_addasbuh1hhjFLubj)}(h h]h }(hjkLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFLubj)}(hsizeh]hsize}(hjyLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFLubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjKubeh}(h]h ]h"]h$]h&]jjuh1johjKhhhjKhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjKhhhjKhMubah}(h]jKah ](jjeh"]h$]h&]jj)jhuh1jyhjKhMhjKhhubj)}(hhh]h)}(hadd new memblock regionh]hadd new memblock region}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLhhubah}(h]h ]h"]h$]h&]uh1jhjKhhhjKhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjLjjLjjjuh1jthhhjDhNhNubj)}(hX8**Parameters** ``phys_addr_t base`` base address of the new region ``phys_addr_t size`` size of the new region **Description** Add new memblock region [**base**, **base** + **size**) to the "memory" type. See memblock_add_range() description for mode details **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjLh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubj")}(hhh](j')}(h4``phys_addr_t base`` base address of the new region h](j-)}(h``phys_addr_t base``h]h)}(hjLh]hphys_addr_t base}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubjG)}(hhh]h)}(hbase address of the new regionh]hbase address of the new region}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjLubah}(h]h ]h"]h$]h&]uh1jFhjLubeh}(h]h ]h"]h$]h&]uh1j&hjLhMhjLubj')}(h,``phys_addr_t size`` size of the new region h](j-)}(h``phys_addr_t size``h]h)}(hjMh]hphys_addr_t size}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjMubjG)}(hhh]h)}(hsize of the new regionh]hsize of the new region}(hj6MhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2MhMhj3Mubah}(h]h ]h"]h$]h&]uh1jFhjMubeh}(h]h ]h"]h$]h&]uh1j&hj2MhMhjLubeh}(h]h ]h"]h$]h&]uh1j!hjLubh)}(h**Description**h]j)}(hjXMh]h Description}(hjZMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVMubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubh)}(hAdd new memblock region [**base**, **base** + **size**) to the "memory" type. See memblock_add_range() description for mode detailsh](hAdd new memblock region [}(hjnMhhhNhNubj)}(h**base**h]hbase}(hjvMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnMubh, }(hjnMhhhNhNubj)}(h**base**h]hbase}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnMubh + }(hjnMhhhNhNubj)}(h**size**h]hsize}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnMubhQ) to the “memory” type. See memblock_add_range() description for mode details}(hjnMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubh)}(h **Return**h]j)}(hjMh]hReturn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjLubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp,memblock_validate_numa_coverage (C function)!c.memblock_validate_numa_coveragehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hTbool __init_memblock memblock_validate_numa_coverage (unsigned long threshold_bytes)h]j)}(hSbool __init_memblock memblock_validate_numa_coverage(unsigned long threshold_bytes)h](j8)}(hboolh]hbool}(hjMhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjMhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hj NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhhjNhMubh__init_memblock}(hjMhhhNhNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMhhhjNhMubj)}(hmemblock_validate_numa_coverageh]j)}(hmemblock_validate_numa_coverageh]hmemblock_validate_numa_coverage}(hj-NhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)Nubah}(h]h ](jjeh"]h$]h&]jjuh1jhjMhhhjNhMubjp)}(h(unsigned long threshold_bytes)h]jv)}(hunsigned long threshold_bytesh](j8)}(hunsignedh]hunsigned}(hjINhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjENubj)}(h h]h }(hjWNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjENubj8)}(hlongh]hlong}(hjeNhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjENubj)}(h h]h }(hjsNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjENubj)}(hthreshold_bytesh]hthreshold_bytes}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjENubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjANubah}(h]h ]h"]h$]h&]jjuh1johjMhhhjNhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjMhhhjNhMubah}(h]jMah ](jjeh"]h$]h&]jj)jhuh1jyhjNhMhjMhhubj)}(hhh]h)}(hKcheck if amount of memory with no node ID assigned is less than a thresholdh]hKcheck if amount of memory with no node ID assigned is less than a threshold}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNhhubah}(h]h ]h"]h$]h&]uh1jhjMhhhjNhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNjjNjjjuh1jthhhjDhNhNubj)}(hX:**Parameters** ``unsigned long threshold_bytes`` maximal memory size that can have unassigned node ID (in bytes). **Description** A buggy firmware may report memory that does not belong to any node. Check if amount of such memory is below **threshold_bytes**. **Return** true on success, false on failure.h](h)}(h**Parameters**h]j)}(hjNh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubj")}(hhh]j')}(hc``unsigned long threshold_bytes`` maximal memory size that can have unassigned node ID (in bytes). h](j-)}(h!``unsigned long threshold_bytes``h]h)}(hjNh]hunsigned long threshold_bytes}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubjG)}(hhh]h)}(h@maximal memory size that can have unassigned node ID (in bytes).h]h@maximal memory size that can have unassigned node ID (in bytes).}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjOubah}(h]h ]h"]h$]h&]uh1jFhjNubeh}(h]h ]h"]h$]h&]uh1j&hjOhMhjNubah}(h]h ]h"]h$]h&]uh1j!hjNubh)}(h**Description**h]j)}(hj(Oh]h Description}(hj*OhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&Oubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubh)}(hA buggy firmware may report memory that does not belong to any node. Check if amount of such memory is below **threshold_bytes**.h](hmA buggy firmware may report memory that does not belong to any node. Check if amount of such memory is below }(hj>OhhhNhNubj)}(h**threshold_bytes**h]hthreshold_bytes}(hjFOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>Oubh.}(hj>OhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubh)}(h **Return**h]j)}(hjaOh]hReturn}(hjcOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_Oubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubh)}(h"true on success, false on failure.h]h"true on success, false on failure.}(hjwOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_isolate_range (C function)c.memblock_isolate_rangehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hint __init_memblock memblock_isolate_range (struct memblock_type *type, phys_addr_t base, phys_addr_t size, int *start_rgn, int *end_rgn)h]j)}(hint __init_memblock memblock_isolate_range(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int *start_rgn, int *end_rgn)h](j8)}(hinth]hint}(hjOhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjOhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhhjOhMubh__init_memblock}(hjOhhhNhNubj)}(h h]h }(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhhjOhMubj)}(hmemblock_isolate_rangeh]j)}(hmemblock_isolate_rangeh]hmemblock_isolate_range}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubah}(h]h ](jjeh"]h$]h&]jjuh1jhjOhhhjOhMubjp)}(h^(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int *start_rgn, int *end_rgn)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjOsbc.memblock_isolate_rangeasbuh1hhjOubj)}(h h]h }(hj3PhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj; )}(hj8h]h*}(hjAPhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjOubj)}(htypeh]htype}(hjNPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlPmodnameN classnameNjj)}j]j/Pc.memblock_isolate_rangeasbuh1hhjcPubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcPubj)}(hbaseh]hbase}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcPubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j/Pc.memblock_isolate_rangeasbuh1hhjPubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj)}(hsizeh]hsize}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(hint *start_rgnh](j8)}(hinth]hint}(hjPhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjPubj)}(h h]h }(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj; )}(hj8h]h*}(hjQhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjPubj)}(h start_rgnh]h start_rgn}(hj QhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(h int *end_rgnh](j8)}(hinth]hint}(hj9QhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj5Qubj)}(h h]h }(hjGQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Qubj; )}(hj8h]h*}(hjUQhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj5Qubj)}(hend_rgnh]hend_rgn}(hjbQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Qubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubeh}(h]h ]h"]h$]h&]jjuh1johjOhhhjOhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjOhhhjOhMubah}(h]jOah ](jjeh"]h$]h&]jj)jhuh1jyhjOhMhjOhhubj)}(hhh]h)}(h+isolate given range into disjoint memblocksh]h+isolate given range into disjoint memblocks}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjQhhubah}(h]h ]h"]h$]h&]uh1jhjOhhhjOhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``struct memblock_type *type`` memblock type to isolate range for ``phys_addr_t base`` base of range to isolate ``phys_addr_t size`` size of range to isolate ``int *start_rgn`` out parameter for the start of isolated region ``int *end_rgn`` out parameter for the end of isolated region **Description** Walk **type** and ensure that regions don't cross the boundaries defined by [**base**, **base** + **size**). Crossing regions are split at the boundaries, which may create at most two more regions. The index of the first region inside the range is returned in ***start_rgn** and the index of the first region after the range is returned in ***end_rgn**. **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjQh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjQubj")}(hhh](j')}(hB``struct memblock_type *type`` memblock type to isolate range for h](j-)}(h``struct memblock_type *type``h]h)}(hjQh]hstruct memblock_type *type}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjQubjG)}(hhh]h)}(h"memblock type to isolate range forh]h"memblock type to isolate range for}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhMhjQubah}(h]h ]h"]h$]h&]uh1jFhjQubeh}(h]h ]h"]h$]h&]uh1j&hjQhMhjQubj')}(h.``phys_addr_t base`` base of range to isolate h](j-)}(h``phys_addr_t base``h]h)}(hjRh]hphys_addr_t base}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjRubjG)}(hhh]h)}(hbase of range to isolateh]hbase of range to isolate}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjRubah}(h]h ]h"]h$]h&]uh1jFhjRubeh}(h]h ]h"]h$]h&]uh1j&hjRhMhjQubj')}(h.``phys_addr_t size`` size of range to isolate h](j-)}(h``phys_addr_t size``h]h)}(hj?Rh]hphys_addr_t size}(hjARhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=Rubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj9RubjG)}(hhh]h)}(hsize of range to isolateh]hsize of range to isolate}(hjXRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTRhMhjURubah}(h]h ]h"]h$]h&]uh1jFhj9Rubeh}(h]h ]h"]h$]h&]uh1j&hjTRhMhjQubj')}(hB``int *start_rgn`` out parameter for the start of isolated region h](j-)}(h``int *start_rgn``h]h)}(hjxRh]hint *start_rgn}(hjzRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvRubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjrRubjG)}(hhh]h)}(h.out parameter for the start of isolated regionh]h.out parameter for the start of isolated region}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM hjRubah}(h]h ]h"]h$]h&]uh1jFhjrRubeh}(h]h ]h"]h$]h&]uh1j&hjRhM hjQubj')}(h>``int *end_rgn`` out parameter for the end of isolated region h](j-)}(h``int *end_rgn``h]h)}(hjRh]h int *end_rgn}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM!hjRubjG)}(hhh]h)}(h,out parameter for the end of isolated regionh]h,out parameter for the end of isolated region}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM!hjRubah}(h]h ]h"]h$]h&]uh1jFhjRubeh}(h]h ]h"]h$]h&]uh1j&hjRhM!hjQubeh}(h]h ]h"]h$]h&]uh1j!hjQubh)}(h**Description**h]j)}(hjRh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM#hjQubh)}(hXcWalk **type** and ensure that regions don't cross the boundaries defined by [**base**, **base** + **size**). Crossing regions are split at the boundaries, which may create at most two more regions. The index of the first region inside the range is returned in ***start_rgn** and the index of the first region after the range is returned in ***end_rgn**.h](hWalk }(hjShhhNhNubj)}(h**type**h]htype}(hj ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhB and ensure that regions don’t cross the boundaries defined by [}(hjShhhNhNubj)}(h**base**h]hbase}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh, }(hjShhhNhNubj)}(h**base**h]hbase}(hj.ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh + }(hjShhhNhNubj)}(h**size**h]hsize}(hj@ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh). Crossing regions are split at the boundaries, which may create at most two more regions. The index of the first region inside the range is returned in }(hjShhhNhNubj)}(h***start_rgn**h]h *start_rgn}(hjRShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubhB and the index of the first region after the range is returned in }(hjShhhNhNubj)}(h ***end_rgn**h]h*end_rgn}(hjdShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM"hjQubh)}(h **Return**h]j)}(hjSh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Subah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM(hjQubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM)hjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_free (C function)c.memblock_freehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h;void __init_memblock memblock_free (void *ptr, size_t size)h]j)}(h:void __init_memblock memblock_free(void *ptr, size_t size)h](j8)}(hvoidh]hvoid}(hjShhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjShhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjShMubh__init_memblock}(hjShhhNhNubj)}(h h]h }(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjShMubj)}(h memblock_freeh]j)}(h memblock_freeh]h memblock_free}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jjeh"]h$]h&]jjuh1jhjShhhjShMubjp)}(h(void *ptr, size_t size)h](jv)}(h void *ptrh](j8)}(hvoidh]hvoid}(hjThhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjTubj)}(h h]h }(hj!ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj; )}(hj8h]h*}(hj/ThhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjTubj)}(hptrh]hptr}(hj``void *ptr`` starting address of the boot memory allocation h](j-)}(h ``void *ptr``h]h)}(hjTh]h void *ptr}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjTubjG)}(hhh]h)}(h/starting address of the boot memory allocationh]h/starting address of the boot memory allocation}(hj UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1jFhjTubeh}(h]h ]h"]h$]h&]uh1j&hjUhMhjTubj')}(h7``size_t size`` size of the boot memory block in bytes h](j-)}(h``size_t size``h]h)}(hj*Uh]h size_t size}(hj,UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(Uubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj$UubjG)}(hhh]h)}(h&size of the boot memory block in bytesh]h&size of the boot memory block in bytes}(hjCUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?UhMhj@Uubah}(h]h ]h"]h$]h&]uh1jFhj$Uubeh}(h]h ]h"]h$]h&]uh1j&hj?UhMhjTubeh}(h]h ]h"]h$]h&]uh1j!hjTubh)}(h**Description**h]j)}(hjeUh]h Description}(hjgUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcUubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjTubh)}(hFree boot memory block previously allocated by memblock_alloc_xx() API. If called after the buddy allocator is available, the memory is released to the buddy allocator.h]hFree boot memory block previously allocated by memblock_alloc_xx() API. If called after the buddy allocator is available, the memory is released to the buddy allocator.}(hj{UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_phys_free (C function)c.memblock_phys_freehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hKint __init_memblock memblock_phys_free (phys_addr_t base, phys_addr_t size)h]j)}(hJint __init_memblock memblock_phys_free(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjUhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjUhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhjUhMubh__init_memblock}(hjUhhhNhNubj)}(h h]h }(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhjUhMubj)}(hmemblock_phys_freeh]j)}(hmemblock_phys_freeh]hmemblock_phys_free}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ](jjeh"]h$]h&]jjuh1jhjUhhhjUhMubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j)}jjUsbc.memblock_phys_freeasbuh1hhjUubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(hbaseh]hbase}(hj*VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjUubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjFVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHVmodnameN classnameNjj)}j]jVc.memblock_phys_freeasbuh1hhj?Vubj)}(h h]h }(hjdVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?Vubj)}(hsizeh]hsize}(hjrVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?Vubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjUubeh}(h]h ]h"]h$]h&]jjuh1johjUhhhjUhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjUhhhjUhMubah}(h]jUah ](jjeh"]h$]h&]jj)jhuh1jyhjUhMhjUhhubj)}(hhh]h)}(hfree boot memory blockh]hfree boot memory block}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVhhubah}(h]h ]h"]h$]h&]uh1jhjUhhhjUhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjVjjVjjjuh1jthhhjDhNhNubj)}(hXU**Parameters** ``phys_addr_t base`` phys starting address of the boot memory block ``phys_addr_t size`` size of the boot memory block in bytes **Description** Free boot memory block previously allocated by memblock_phys_alloc_xx() API. If called after the buddy allocator is available, the memory is released to the buddy allocator.h](h)}(h**Parameters**h]j)}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubj")}(hhh](j')}(hE``phys_addr_t base`` phys starting address of the boot memory block h](j-)}(h``phys_addr_t base``h]h)}(hjVh]hphys_addr_t base}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubjG)}(hhh]h)}(h/phys starting address of the boot memory blockh]h/phys starting address of the boot memory block}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jFhjVubeh}(h]h ]h"]h$]h&]uh1j&hjVhMhjVubj')}(h<``phys_addr_t size`` size of the boot memory block in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjWh]hphys_addr_t size}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjWubjG)}(hhh]h)}(h&size of the boot memory block in bytesh]h&size of the boot memory block in bytes}(hj/WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+WhMhj,Wubah}(h]h ]h"]h$]h&]uh1jFhjWubeh}(h]h ]h"]h$]h&]uh1j&hj+WhMhjVubeh}(h]h ]h"]h$]h&]uh1j!hjVubh)}(h**Description**h]j)}(hjQWh]h Description}(hjSWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOWubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubh)}(hFree boot memory block previously allocated by memblock_phys_alloc_xx() API. If called after the buddy allocator is available, the memory is released to the buddy allocator.h]hFree boot memory block previously allocated by memblock_phys_alloc_xx() API. If called after the buddy allocator is available, the memory is released to the buddy allocator.}(hjgWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp!memblock_setclr_flag (C function)c.memblock_setclr_flaghNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h|int __init_memblock memblock_setclr_flag (struct memblock_type *type, phys_addr_t base, phys_addr_t size, int set, int flag)h]j)}(h{int __init_memblock memblock_setclr_flag(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int set, int flag)h](j8)}(hinth]hint}(hjWhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjWhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhjWhMubh__init_memblock}(hjWhhhNhNubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhjWhMubj)}(hmemblock_setclr_flagh]j)}(hmemblock_setclr_flagh]hmemblock_setclr_flag}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]jjuh1jhjWhhhjWhMubjp)}(hS(struct memblock_type *type, phys_addr_t base, phys_addr_t size, int set, int flag)h](jv)}(hstruct memblock_type *typeh](j)}(hj\h]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubh)}(hhh]j)}(h memblock_typeh]h memblock_type}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]j)}jjWsbc.memblock_setclr_flagasbuh1hhjWubj)}(h h]h }(hj#XhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj; )}(hj8h]h*}(hj1XhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjWubj)}(htypeh]htype}(hj>XhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjWubjv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjZXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\XmodnameN classnameNjj)}j]jXc.memblock_setclr_flagasbuh1hhjSXubj)}(h h]h }(hjxXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSXubj)}(hbaseh]hbase}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSXubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjWubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]jXc.memblock_setclr_flagasbuh1hhjXubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(hsizeh]hsize}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjWubjv)}(hint seth](j8)}(hinth]hint}(hjXhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjXubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj)}(hseth]hset}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjWubjv)}(hint flagh](j8)}(hinth]hint}(hjYhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjYubj)}(h h]h }(hj*YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hflagh]hflag}(hj8YhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjWubeh}(h]h ]h"]h$]h&]jjuh1johjWhhhjWhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjWhhhjWhMubah}(h]jWah ](jjeh"]h$]h&]jj)jhuh1jyhjWhMhjWhhubj)}(hhh]h)}(h%set or clear flag for a memory regionh]h%set or clear flag for a memory region}(hjbYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj_Yhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjWhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzYjjzYjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``struct memblock_type *type`` memblock type to set/clear flag for ``phys_addr_t base`` base address of the region ``phys_addr_t size`` size of the region ``int set`` set or clear the flag ``int flag`` the flag to update **Description** This function isolates region [**base**, **base** + **size**), and sets/clears flag **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjYh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj~Yubj")}(hhh](j')}(hC``struct memblock_type *type`` memblock type to set/clear flag for h](j-)}(h``struct memblock_type *type``h]h)}(hjYh]hstruct memblock_type *type}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjYubjG)}(hhh]h)}(h#memblock type to set/clear flag forh]h#memblock type to set/clear flag for}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjYubah}(h]h ]h"]h$]h&]uh1jFhjYubeh}(h]h ]h"]h$]h&]uh1j&hjYhMhjYubj')}(h0``phys_addr_t base`` base address of the region h](j-)}(h``phys_addr_t base``h]h)}(hjYh]hphys_addr_t base}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjYubjG)}(hhh]h)}(hbase address of the regionh]hbase address of the region}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhM hjYubah}(h]h ]h"]h$]h&]uh1jFhjYubeh}(h]h ]h"]h$]h&]uh1j&hjYhM hjYubj')}(h(``phys_addr_t size`` size of the region h](j-)}(h``phys_addr_t size``h]h)}(hjZh]hphys_addr_t size}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjZubjG)}(hhh]h)}(hsize of the regionh]hsize of the region}(hj.ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ZhM hj+Zubah}(h]h ]h"]h$]h&]uh1jFhjZubeh}(h]h ]h"]h$]h&]uh1j&hj*ZhM hjYubj')}(h"``int set`` set or clear the flag h](j-)}(h ``int set``h]h)}(hjNZh]hint set}(hjPZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLZubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjHZubjG)}(hhh]h)}(hset or clear the flagh]hset or clear the flag}(hjgZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcZhM hjdZubah}(h]h ]h"]h$]h&]uh1jFhjHZubeh}(h]h ]h"]h$]h&]uh1j&hjcZhM hjYubj')}(h ``int flag`` the flag to update h](j-)}(h ``int flag``h]h)}(hjZh]hint flag}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjZubjG)}(hhh]h)}(hthe flag to updateh]hthe flag to update}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhM hjZubah}(h]h ]h"]h$]h&]uh1jFhjZubeh}(h]h ]h"]h$]h&]uh1j&hjZhM hjYubeh}(h]h ]h"]h$]h&]uh1j!hj~Yubh)}(h**Description**h]j)}(hjZh]h Description}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~Yubh)}(hSThis function isolates region [**base**, **base** + **size**), and sets/clears flagh](hThis function isolates region [}(hjZhhhNhNubj)}(h**base**h]hbase}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh, }(hjZhhhNhNubj)}(h**base**h]hbase}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh + }(hjZhhhNhNubj)}(h**size**h]hsize}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh), and sets/clears flag}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj~Yubh)}(h **Return**h]j)}(hj[h]hReturn}(hj![hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~Yubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hj5[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~Yubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp"memblock_mark_hotplug (C function)c.memblock_mark_hotplughNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hNint __init_memblock memblock_mark_hotplug (phys_addr_t base, phys_addr_t size)h]j)}(hMint __init_memblock memblock_mark_hotplug(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjd[hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj`[hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM)ubj)}(h h]h }(hjs[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`[hhhjr[hM)ubh__init_memblock}(hj`[hhhNhNubj)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`[hhhjr[hM)ubj)}(hmemblock_mark_hotplugh]j)}(hmemblock_mark_hotplugh]hmemblock_mark_hotplug}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj`[hhhjr[hM)ubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNjj)}j]j)}jj[sbc.memblock_mark_hotplugasbuh1hhj[ubj)}(h h]h }(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj)}(hbaseh]hbase}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj[ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j[c.memblock_mark_hotplugasbuh1hhj[ubj)}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj)}(hsizeh]hsize}(hj,\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj[ubeh}(h]h ]h"]h$]h&]jjuh1johj`[hhhjr[hM)ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj\[hhhjr[hM)ubah}(h]jW[ah ](jjeh"]h$]h&]jj)jhuh1jyhjr[hM)hjY[hhubj)}(hhh]h)}(h4Mark hotpluggable memory with flag MEMBLOCK_HOTPLUG.h]h4Mark hotpluggable memory with flag MEMBLOCK_HOTPLUG.}(hjV\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM)hjS\hhubah}(h]h ]h"]h$]h&]uh1jhjY[hhhjr[hM)ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjn\jjn\jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``phys_addr_t base`` the base phys addr of the region ``phys_addr_t size`` the size of the region **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjx\h]h Parameters}(hjz\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv\ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM-hjr\ubj")}(hhh](j')}(h6``phys_addr_t base`` the base phys addr of the region h](j-)}(h``phys_addr_t base``h]h)}(hj\h]hphys_addr_t base}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM*hj\ubjG)}(hhh]h)}(h the base phys addr of the regionh]h the base phys addr of the region}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hM*hj\ubah}(h]h ]h"]h$]h&]uh1jFhj\ubeh}(h]h ]h"]h$]h&]uh1j&hj\hM*hj\ubj')}(h,``phys_addr_t size`` the size of the region h](j-)}(h``phys_addr_t size``h]h)}(hj\h]hphys_addr_t size}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM+hj\ubjG)}(hhh]h)}(hthe size of the regionh]hthe size of the region}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hM+hj\ubah}(h]h ]h"]h$]h&]uh1jFhj\ubeh}(h]h ]h"]h$]h&]uh1j&hj\hM+hj\ubeh}(h]h ]h"]h$]h&]uh1j!hjr\ubh)}(h **Return**h]j)}(hj ]h]hReturn}(hj ]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ]ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM-hjr\ubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hj!]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM-hjr\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_clear_hotplug (C function)c.memblock_clear_hotplughNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hOint __init_memblock memblock_clear_hotplug (phys_addr_t base, phys_addr_t size)h]j)}(hNint __init_memblock memblock_clear_hotplug(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjP]hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjL]hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM5ubj)}(h h]h }(hj_]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL]hhhj^]hM5ubh__init_memblock}(hjL]hhhNhNubj)}(h h]h }(hjq]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL]hhhj^]hM5ubj)}(hmemblock_clear_hotplugh]j)}(hmemblock_clear_hotplugh]hmemblock_clear_hotplug}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjL]hhhj^]hM5ubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j)}jj]sbc.memblock_clear_hotplugasbuh1hhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hbaseh]hbase}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj]ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j]c.memblock_clear_hotplugasbuh1hhj]ubj)}(h h]h }(hj ^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hsizeh]hsize}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj]ubeh}(h]h ]h"]h$]h&]jjuh1johjL]hhhj^]hM5ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjH]hhhj^]hM5ubah}(h]jC]ah ](jjeh"]h$]h&]jj)jhuh1jyhj^]hM5hjE]hhubj)}(hhh]h)}(h3Clear flag MEMBLOCK_HOTPLUG for a specified region.h]h3Clear flag MEMBLOCK_HOTPLUG for a specified region.}(hjB^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM5hj?^hhubah}(h]h ]h"]h$]h&]uh1jhjE]hhhj^]hM5ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZ^jjZ^jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``phys_addr_t base`` the base phys addr of the region ``phys_addr_t size`` the size of the region **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjd^h]h Parameters}(hjf^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb^ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM9hj^^ubj")}(hhh](j')}(h6``phys_addr_t base`` the base phys addr of the region h](j-)}(h``phys_addr_t base``h]h)}(hj^h]hphys_addr_t base}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM6hj}^ubjG)}(hhh]h)}(h the base phys addr of the regionh]h the base phys addr of the region}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hM6hj^ubah}(h]h ]h"]h$]h&]uh1jFhj}^ubeh}(h]h ]h"]h$]h&]uh1j&hj^hM6hjz^ubj')}(h,``phys_addr_t size`` the size of the region h](j-)}(h``phys_addr_t size``h]h)}(hj^h]hphys_addr_t size}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM7hj^ubjG)}(hhh]h)}(hthe size of the regionh]hthe size of the region}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hM7hj^ubah}(h]h ]h"]h$]h&]uh1jFhj^ubeh}(h]h ]h"]h$]h&]uh1j&hj^hM7hjz^ubeh}(h]h ]h"]h$]h&]uh1j!hj^^ubh)}(h **Return**h]j)}(hj^h]hReturn}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM9hj^^ubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hj _hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM9hj^^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp!memblock_mark_mirror (C function)c.memblock_mark_mirrorhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hMint __init_memblock memblock_mark_mirror (phys_addr_t base, phys_addr_t size)h]j)}(hLint __init_memblock memblock_mark_mirror(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hj<_hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj8_hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMAubj)}(h h]h }(hjK_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8_hhhjJ_hMAubh__init_memblock}(hj8_hhhNhNubj)}(h h]h }(hj]_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8_hhhjJ_hMAubj)}(hmemblock_mark_mirrorh]j)}(hmemblock_mark_mirrorh]hmemblock_mark_mirror}(hjo_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk_ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj8_hhhjJ_hMAubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]j)}jjq_sbc.memblock_mark_mirrorasbuh1hhj_ubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hbaseh]hbase}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj_ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]j_c.memblock_mark_mirrorasbuh1hhj_ubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubj)}(hsizeh]hsize}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj_ubeh}(h]h ]h"]h$]h&]jjuh1johj8_hhhjJ_hMAubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj4_hhhjJ_hMAubah}(h]j/_ah ](jjeh"]h$]h&]jj)jhuh1jyhjJ_hMAhj1_hhubj)}(hhh]h)}(h/Mark mirrored memory with flag MEMBLOCK_MIRROR.h]h/Mark mirrored memory with flag MEMBLOCK_MIRROR.}(hj.`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMAhj+`hhubah}(h]h ]h"]h$]h&]uh1jhj1_hhhjJ_hMAubeh}(h]h ](jfunctioneh"]h$]h&]jjjjF`jjF`jjjuh1jthhhjDhNhNubj)}(h**Parameters** ``phys_addr_t base`` the base phys addr of the region ``phys_addr_t size`` the size of the region **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjP`h]h Parameters}(hjR`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN`ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMEhjJ`ubj")}(hhh](j')}(h6``phys_addr_t base`` the base phys addr of the region h](j-)}(h``phys_addr_t base``h]h)}(hjo`h]hphys_addr_t base}(hjq`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm`ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMBhji`ubjG)}(hhh]h)}(h the base phys addr of the regionh]h the base phys addr of the region}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMBhj`ubah}(h]h ]h"]h$]h&]uh1jFhji`ubeh}(h]h ]h"]h$]h&]uh1j&hj`hMBhjf`ubj')}(h,``phys_addr_t size`` the size of the region h](j-)}(h``phys_addr_t size``h]h)}(hj`h]hphys_addr_t size}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMChj`ubjG)}(hhh]h)}(hthe size of the regionh]hthe size of the region}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMChj`ubah}(h]h ]h"]h$]h&]uh1jFhj`ubeh}(h]h ]h"]h$]h&]uh1j&hj`hMChjf`ubeh}(h]h ]h"]h$]h&]uh1j!hjJ`ubh)}(h **Return**h]j)}(hj`h]hReturn}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMEhjJ`ubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMEhjJ`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp memblock_mark_nomap (C function)c.memblock_mark_nomaphNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hLint __init_memblock memblock_mark_nomap (phys_addr_t base, phys_addr_t size)h]j)}(hKint __init_memblock memblock_mark_nomap(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hj(ahhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj$ahhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMRubj)}(h h]h }(hj7ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ahhhj6ahMRubh__init_memblock}(hj$ahhhNhNubj)}(h h]h }(hjIahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ahhhj6ahMRubj)}(hmemblock_mark_nomaph]j)}(hmemblock_mark_nomaph]hmemblock_mark_nomap}(hj[ahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWaubah}(h]h ](jjeh"]h$]h&]jjuh1jhj$ahhhj6ahMRubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjzahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|amodnameN classnameNjj)}j]j)}jj]asbc.memblock_mark_nomapasbuh1hhjsaubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsaubj)}(hbaseh]hbase}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsaubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjoaubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]jac.memblock_mark_nomapasbuh1hhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hsizeh]hsize}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjoaubeh}(h]h ]h"]h$]h&]jjuh1johj$ahhhj6ahMRubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj ahhhj6ahMRubah}(h]jaah ](jjeh"]h$]h&]jj)jhuh1jyhj6ahMRhjahhubj)}(hhh]h)}(h.Mark a memory region with flag MEMBLOCK_NOMAP.h]h.Mark a memory region with flag MEMBLOCK_NOMAP.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMRhjbhhubah}(h]h ]h"]h$]h&]uh1jhjahhhj6ahMRubeh}(h]h ](jfunctioneh"]h$]h&]jjjj2bjj2bjjjuh1jthhhjDhNhNubj)}(hXE**Parameters** ``phys_addr_t base`` the base phys addr of the region ``phys_addr_t size`` the size of the region **Description** The memory regions marked with ``MEMBLOCK_NOMAP`` will not be added to the direct mapping of the physical memory. These regions will still be covered by the memory map. The struct page representing NOMAP memory frames in the memory map will be PageReserved() **Note** if the memory being marked ``MEMBLOCK_NOMAP`` was allocated from memblock, the caller must inform kmemleak to ignore that memory **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:bubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMVhj6bubj")}(hhh](j')}(h6``phys_addr_t base`` the base phys addr of the region h](j-)}(h``phys_addr_t base``h]h)}(hj[bh]hphys_addr_t base}(hj]bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYbubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMShjUbubjG)}(hhh]h)}(h the base phys addr of the regionh]h the base phys addr of the region}(hjtbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpbhMShjqbubah}(h]h ]h"]h$]h&]uh1jFhjUbubeh}(h]h ]h"]h$]h&]uh1j&hjpbhMShjRbubj')}(h,``phys_addr_t size`` the size of the region h](j-)}(h``phys_addr_t size``h]h)}(hjbh]hphys_addr_t size}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMThjbubjG)}(hhh]h)}(hthe size of the regionh]hthe size of the region}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMThjbubah}(h]h ]h"]h$]h&]uh1jFhjbubeh}(h]h ]h"]h$]h&]uh1j&hjbhMThjRbubeh}(h]h ]h"]h$]h&]uh1j!hj6bubh)}(h**Description**h]j)}(hjbh]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMVhj6bubh)}(hXThe memory regions marked with ``MEMBLOCK_NOMAP`` will not be added to the direct mapping of the physical memory. These regions will still be covered by the memory map. The struct page representing NOMAP memory frames in the memory map will be PageReserved()h](hThe memory regions marked with }(hjbhhhNhNubh)}(h``MEMBLOCK_NOMAP``h]hMEMBLOCK_NOMAP}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbubh will not be added to the direct mapping of the physical memory. These regions will still be covered by the memory map. The struct page representing NOMAP memory frames in the memory map will be PageReserved()}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMUhj6bubh)}(h**Note**h]j)}(hjch]hNote}(hj chhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMZhj6bubh)}(hif the memory being marked ``MEMBLOCK_NOMAP`` was allocated from memblock, the caller must inform kmemleak to ignore that memoryh](hif the memory being marked }(hjchhhNhNubh)}(h``MEMBLOCK_NOMAP``h]hMEMBLOCK_NOMAP}(hj&chhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcubhS was allocated from memblock, the caller must inform kmemleak to ignore that memory}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM[hj6bubh)}(h **Return**h]j)}(hjAch]hReturn}(hjCchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?cubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM^hj6bubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjWchhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM^hj6bubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp!memblock_clear_nomap (C function)c.memblock_clear_nomaphNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hMint __init_memblock memblock_clear_nomap (phys_addr_t base, phys_addr_t size)h]j)}(hLint __init_memblock memblock_clear_nomap(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjchhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjchhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMfubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhjchMfubh__init_memblock}(hjchhhNhNubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhjchMfubj)}(hmemblock_clear_nomaph]j)}(hmemblock_clear_nomaph]hmemblock_clear_nomap}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ](jjeh"]h$]h&]jjuh1jhjchhhjchMfubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jjcsbc.memblock_clear_nomapasbuh1hhjcubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj)}(hbaseh]hbase}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjcubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj"dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$dmodnameN classnameNjj)}j]jcc.memblock_clear_nomapasbuh1hhjdubj)}(h h]h }(hj@dhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj)}(hsizeh]hsize}(hjNdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjcubeh}(h]h ]h"]h$]h&]jjuh1johjchhhjchMfubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj~chhhjchMfubah}(h]jycah ](jjeh"]h$]h&]jj)jhuh1jyhjchMfhj{chhubj)}(hhh]h)}(h1Clear flag MEMBLOCK_NOMAP for a specified region.h]h1Clear flag MEMBLOCK_NOMAP for a specified region.}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMfhjudhhubah}(h]h ]h"]h$]h&]uh1jhj{chhhjchMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1jthhhjDhNhNubj)}(h**Parameters** ``phys_addr_t base`` the base phys addr of the region ``phys_addr_t size`` the size of the region **Return** 0 on success, -errno on failure.h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMjhjdubj")}(hhh](j')}(h6``phys_addr_t base`` the base phys addr of the region h](j-)}(h``phys_addr_t base``h]h)}(hjdh]hphys_addr_t base}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMghjdubjG)}(hhh]h)}(h the base phys addr of the regionh]h the base phys addr of the region}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMghjdubah}(h]h ]h"]h$]h&]uh1jFhjdubeh}(h]h ]h"]h$]h&]uh1j&hjdhMghjdubj')}(h,``phys_addr_t size`` the size of the region h](j-)}(h``phys_addr_t size``h]h)}(hjdh]hphys_addr_t size}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhhjdubjG)}(hhh]h)}(hthe size of the regionh]hthe size of the region}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhhjeubah}(h]h ]h"]h$]h&]uh1jFhjdubeh}(h]h ]h"]h$]h&]uh1j&hjehMhhjdubeh}(h]h ]h"]h$]h&]uh1j!hjdubh)}(h **Return**h]j)}(hj-eh]hReturn}(hj/ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+eubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMjhjdubh)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjCehhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMjhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp*memblock_reserved_mark_noinit (C function)c.memblock_reserved_mark_noinithNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hVint __init_memblock memblock_reserved_mark_noinit (phys_addr_t base, phys_addr_t size)h]j)}(hUint __init_memblock memblock_reserved_mark_noinit(phys_addr_t base, phys_addr_t size)h](j8)}(hinth]hint}(hjrehhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjnehhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMrubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnehhhjehMrubh__init_memblock}(hjnehhhNhNubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnehhhjehMrubj)}(hmemblock_reserved_mark_noinith]j)}(hmemblock_reserved_mark_noinith]hmemblock_reserved_mark_noinit}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ](jjeh"]h$]h&]jjuh1jhjnehhhjehMrubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]j)}jjesbc.memblock_reserved_mark_noinitasbuh1hhjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj)}(hbaseh]hbase}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjeubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj fubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]jec.memblock_reserved_mark_noinitasbuh1hhjfubj)}(h h]h }(hj,fhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj)}(hsizeh]hsize}(hj:fhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjeubeh}(h]h ]h"]h$]h&]jjuh1johjnehhhjehMrubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjjehhhjehMrubah}(h]jeeah ](jjeh"]h$]h&]jj)jhuh1jyhjehMrhjgehhubj)}(hhh]h)}(h}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}hhhj=}hMubj)}(hmemblock_alloc_range_nidh]j)}(hj:}h]hmemblock_alloc_range_nid}(hjP}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL}ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj}hhhj=}hMubjp)}(hb(phys_addr_t size, phys_addr_t align, phys_addr_t start, phys_addr_t end, int nid, bool exact_nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjn}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjp}modnameN classnameNjj)}j]j8}c.memblock_alloc_range_nidasbuh1hhjg}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg}ubj)}(hsizeh]hsize}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjg}ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j8}c.memblock_alloc_range_nidasbuh1hhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(halignh]halign}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubjv)}(hphys_addr_t starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j8}c.memblock_alloc_range_nidasbuh1hhj}ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hstarth]hstart}(hj*~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubjv)}(hphys_addr_t endh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjF~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjC~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjH~modnameN classnameNjj)}j]j8}c.memblock_alloc_range_nidasbuh1hhj?~ubj)}(h h]h }(hjd~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?~ubj)}(hendh]hend}(hjr~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?~ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubjv)}(hint nidh](j8)}(hinth]hint}(hj~hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj~ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(hnidh]hnid}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubjv)}(hbool exact_nidh](j8)}(hjMh]hbool}(hj~hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj~ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj)}(h exact_nidh]h exact_nid}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjc}ubeh}(h]h ]h"]h$]h&]jjuh1johj}hhhj=}hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhj}hhhj=}hMubah}(h]j }ah ](jjeh"]h$]h&]jj)jhuh1jyhj=}hMhj}hhubj)}(hhh]h)}(hallocate boot memory blockh]hallocate boot memory block}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj}hhhj=}hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hXO**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``phys_addr_t start`` the lower bound of the memory region to allocate (phys address) ``phys_addr_t end`` the upper bound of the memory region to allocate (phys address) ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node ``bool exact_nid`` control the allocation fall back to other nodes **Description** The allocation is performed from memory region limited by memblock.current_limit if **end** == ``MEMBLOCK_ALLOC_ACCESSIBLE``. If the specified node can not hold the requested memory and **exact_nid** is false, the allocation falls back to any node in the system. For systems with memory mirroring, the allocation is attempted first from the regions with mirroring enabled and then retried from any memory region. In addition, function using kmemleak_alloc_phys for allocated boot memory block, it is never reported as leaks. **Return** Physical address of allocated memory block on success, ``0`` on failure.h](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj!ubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjFh]hphys_addr_t size}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj@ubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1jFhj@ubeh}(h]h ]h"]h$]h&]uh1j&hj[hMhj=ubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hjh]hphys_addr_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjyubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjyubeh}(h]h ]h"]h$]h&]uh1j&hjhMhj=ubj')}(hV``phys_addr_t start`` the lower bound of the memory region to allocate (phys address) h](j-)}(h``phys_addr_t start``h]h)}(hjh]hphys_addr_t start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h?the lower bound of the memory region to allocate (phys address)h]h?the lower bound of the memory region to allocate (phys address)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhj=ubj')}(hT``phys_addr_t end`` the upper bound of the memory region to allocate (phys address) h](j-)}(h``phys_addr_t end``h]h)}(hjh]hphys_addr_t end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h?the upper bound of the memory region to allocate (phys address)h]h?the upper bound of the memory region to allocate (phys address)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhj=ubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hj*h]hint nid}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj$ubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hjChhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCubh for any node}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj?hMhj@ubah}(h]h ]h"]h$]h&]uh1jFhj$ubeh}(h]h ]h"]h$]h&]uh1j&hj?hMhj=ubj')}(hC``bool exact_nid`` control the allocation fall back to other nodes h](j-)}(h``bool exact_nid``h]h)}(hjuh]hbool exact_nid}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjoubjG)}(hhh]h)}(h/control the allocation fall back to other nodesh]h/control the allocation fall back to other nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjoubeh}(h]h ]h"]h$]h&]uh1j&hjhMhj=ubeh}(h]h ]h"]h$]h&]uh1j!hj!ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj!ubh)}(h}The allocation is performed from memory region limited by memblock.current_limit if **end** == ``MEMBLOCK_ALLOC_ACCESSIBLE``.h](hTThe allocation is performed from memory region limited by memblock.current_limit if }(hjƀhhhNhNubj)}(h**end**h]hend}(hj΀hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjƀubh == }(hjƀhhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjƀubh.}(hjƀhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj!ubh)}(hIf the specified node can not hold the requested memory and **exact_nid** is false, the allocation falls back to any node in the system.h](hh]hReturn}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMmhj3ubh)}(hLphysical address of the allocated memory block on success, ``0`` on failure.h](h;physical address of the allocated memory block on success, }(hjThhhNhNubh)}(h``0``h]h0}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTubh on failure.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMnhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp$memblock_alloc_internal (C function)c.memblock_alloc_internalhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hvoid * memblock_alloc_internal (phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid, bool exact_nid)h]j)}(hvoid *memblock_alloc_internal(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid, bool exact_nid)h](j8)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMxubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMxubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjhhhjhMxubj)}(hmemblock_alloc_internalh]j)}(hmemblock_alloc_internalh]hmemblock_alloc_internal}(hjÇhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMxubjp)}(hj(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid, bool exact_nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj߇ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjŇsbc.memblock_alloc_internalasbuh1hhjۇubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۇubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۇubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]jc.memblock_alloc_internalasbuh1hhj%ubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(halignh]halign}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubjv)}(hphys_addr_t min_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]jc.memblock_alloc_internalasbuh1hhjmubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj)}(hmin_addrh]hmin_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubjv)}(hphys_addr_t max_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.memblock_alloc_internalasbuh1hhjubj)}(h h]h }(hjڈhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmax_addrh]hmax_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubjv)}(hint nidh](j8)}(hinth]hint}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hnidh]hnid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubjv)}(hbool exact_nidh](j8)}(hjMh]hbool}(hj6hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj2ubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(h exact_nidh]h exact_nid}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjׇubeh}(h]h ]h"]h$]h&]jjuh1johjhhhjhMxubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMxubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhMxhjhhubj)}(hhh]h)}(hallocate boot memory blockh]hallocate boot memory block}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMxhjxhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMxubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``phys_addr_t min_addr`` the lower bound of the memory region to allocate (phys address) ``phys_addr_t max_addr`` the upper bound of the memory region to allocate (phys address) ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node ``bool exact_nid`` control the allocation fall back to other nodes **Description** Allocates memory block using memblock_alloc_range_nid() and converts the returned physical address to virtual. The **min_addr** limit is dropped if it can not be satisfied and the allocation will fall back to memory below **min_addr**. Other constraints, such as node and mirrored memory will be handled again in memblock_alloc_range_nid(). **Return** Virtual address of allocated memory block on success, NULL on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM|hjubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMyhjubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hjՉhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjщhMyhj҉ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjщhMyhjubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hjh]hphys_addr_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMzhjubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMzhj ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj hMzhjubj')}(hY``phys_addr_t min_addr`` the lower bound of the memory region to allocate (phys address) h](j-)}(h``phys_addr_t min_addr``h]h)}(hj.h]hphys_addr_t min_addr}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM{hj(ubjG)}(hhh]h)}(h?the lower bound of the memory region to allocate (phys address)h]h?the lower bound of the memory region to allocate (phys address)}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChM{hjDubah}(h]h ]h"]h$]h&]uh1jFhj(ubeh}(h]h ]h"]h$]h&]uh1j&hjChM{hjubj')}(hY``phys_addr_t max_addr`` the upper bound of the memory region to allocate (phys address) h](j-)}(h``phys_addr_t max_addr``h]h)}(hjgh]hphys_addr_t max_addr}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM|hjaubjG)}(hhh]h)}(h?the upper bound of the memory region to allocate (phys address)h]h?the upper bound of the memory region to allocate (phys address)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hM|hj}ubah}(h]h ]h"]h$]h&]uh1jFhjaubeh}(h]h ]h"]h$]h&]uh1j&hj|hM|hjubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjh]hint nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM}hjubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hjhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh for any node}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM}hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM}hjubj')}(hC``bool exact_nid`` control the allocation fall back to other nodes h](j-)}(h``bool exact_nid``h]h)}(hjh]hbool exact_nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM~hjubjG)}(hhh]h)}(h/control the allocation fall back to other nodesh]h/control the allocation fall back to other nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM~hjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(hnAllocates memory block using memblock_alloc_range_nid() and converts the returned physical address to virtual.h]hnAllocates memory block using memblock_alloc_range_nid() and converts the returned physical address to virtual.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(hThe **min_addr** limit is dropped if it can not be satisfied and the allocation will fall back to memory below **min_addr**. Other constraints, such as node and mirrored memory will be handled again in memblock_alloc_range_nid().h](hThe }(hjKhhhNhNubj)}(h **min_addr**h]hmin_addr}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubh_ limit is dropped if it can not be satisfied and the allocation will fall back to memory below }(hjKhhhNhNubj)}(h **min_addr**h]hmin_addr}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubhj. Other constraints, such as node and mirrored memory will be handled again in memblock_alloc_range_nid().}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(hFVirtual address of allocated memory block on success, NULL on failure.h]hFVirtual address of allocated memory block on success, NULL on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp)memblock_alloc_exact_nid_raw (C function)c.memblock_alloc_exact_nid_rawhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h~void * memblock_alloc_exact_nid_raw (phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h]j)}(h|void *memblock_alloc_exact_nid_raw(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](j8)}(hvoidh]hvoid}(hjŋhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjԋhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjӋhMubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjhhhjӋhMubj)}(hmemblock_alloc_exact_nid_rawh]j)}(hmemblock_alloc_exact_nid_rawh]hmemblock_alloc_exact_nid_raw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjӋhMubjp)}(hZ(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.memblock_alloc_exact_nid_rawasbuh1hhj ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hsizeh]hsize}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j.c.memblock_alloc_exact_nid_rawasbuh1hhjUubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(halignh]halign}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t min_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j.c.memblock_alloc_exact_nid_rawasbuh1hhjubj)}(h h]h }(hjŒhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmin_addrh]hmin_addr}(hjЌhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t max_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j.c.memblock_alloc_exact_nid_rawasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmax_addrh]hmax_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hint nidh](j8)}(hinth]hint}(hj1hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj-ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hnidh]hnid}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johjhhhjӋhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjӋhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjӋhMhjhhubj)}(hhh]h)}(hCallocate boot memory block on the exact node without zeroing memoryh]hCallocate boot memory block on the exact node without zeroing memory}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjthhubah}(h]h ]h"]h$]h&]uh1jhjhhhjӋhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) ``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node **Description** Public function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory. **Return** Virtual address of allocated memory block on success, NULL on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hjэhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj͍hMhj΍ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj͍hMhjubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hjh]hphys_addr_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjubj')}(ht``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) h](j-)}(h``phys_addr_t min_addr``h]h)}(hj*h]hphys_addr_t min_addr}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj$ubjG)}(hhh]h)}(hZthe lower bound of the memory region from where the allocation is preferred (phys address)h]hZthe lower bound of the memory region from where the allocation is preferred (phys address)}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj@ubah}(h]h ]h"]h$]h&]uh1jFhj$ubeh}(h]h ]h"]h$]h&]uh1j&hj?hMhjubj')}(h``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value h](j-)}(h``phys_addr_t max_addr``h]h)}(hjdh]hphys_addr_t max_addr}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj^ubjG)}(hhh]h)}(hthe upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit valueh](h_the upper bound of the memory region from where the allocation is preferred (phys address), or }(hj}hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}ubhE to allocate only from memory limited by memblock.current_limit value}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjzubah}(h]h ]h"]h$]h&]uh1jFhj^ubeh}(h]h ]h"]h$]h&]uh1j&hjyhMhjubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjh]hint nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hjɎhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjюhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjɎubh for any node}(hjɎhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjŎhMhjƎubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjŎhMhjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(h{Public function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory.h]h{Public function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(h **Return**h]j)}(hj$h]hReturn}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubh)}(hFVirtual address of allocated memory block on success, NULL on failure.h]hFVirtual address of allocated memory block on success, NULL on failure.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp'memblock_alloc_try_nid_raw (C function)c.memblock_alloc_try_nid_rawhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h|void * memblock_alloc_try_nid_raw (phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h]j)}(hzvoid *memblock_alloc_try_nid_raw(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](j8)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjehhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhhjwhMubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjehhhjwhMubj)}(hmemblock_alloc_try_nid_rawh]j)}(hmemblock_alloc_try_nid_rawh]hmemblock_alloc_try_nid_raw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjehhhjwhMubjp)}(hZ(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.memblock_alloc_try_nid_rawasbuh1hhjubj)}(h h]h }(hj֏hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jҏc.memblock_alloc_try_nid_rawasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(halignh]halign}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t min_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]jҏc.memblock_alloc_try_nid_rawasbuh1hhjAubj)}(h h]h }(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(hmin_addrh]hmin_addr}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t max_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jҏc.memblock_alloc_try_nid_rawasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmax_addrh]hmax_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hint nidh](j8)}(hinth]hint}(hjՐhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjѐubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjѐubj)}(hnidh]hnid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjѐubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johjehhhjwhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjahhhjwhMubah}(h]j\ah ](jjeh"]h$]h&]jj)jhuh1jyhjwhMhj^hhubj)}(hhh]h)}(hGallocate boot memory block without zeroing memory and without panickingh]hGallocate boot memory block without zeroing memory and without panicking}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj^hhhjwhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1jthhhjDhNhNubj)}(hXM**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) ``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node **Description** Public function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory, does not panic if request cannot be satisfied. **Return** Virtual address of allocated memory block on success, NULL on failure.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hj\h]hphys_addr_t size}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjrubah}(h]h ]h"]h$]h&]uh1jFhjVubeh}(h]h ]h"]h$]h&]uh1j&hjqhMhjSubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hjh]hphys_addr_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjSubj')}(ht``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) h](j-)}(h``phys_addr_t min_addr``h]h)}(hjΑh]hphys_addr_t min_addr}(hjБhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj̑ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjȑubjG)}(hhh]h)}(hZthe lower bound of the memory region from where the allocation is preferred (phys address)h]hZthe lower bound of the memory region from where the allocation is preferred (phys address)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubah}(h]h ]h"]h$]h&]uh1jFhjȑubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjSubj')}(h``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value h](j-)}(h``phys_addr_t max_addr``h]h)}(hjh]hphys_addr_t max_addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(hthe upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit valueh](h_the upper bound of the memory region from where the allocation is preferred (phys address), or }(hj!hhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!ubhE to allocate only from memory limited by memblock.current_limit value}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjSubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjTh]hint nid}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjNubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hjmhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmubh for any node}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjihMhjjubah}(h]h ]h"]h$]h&]uh1jFhjNubeh}(h]h ]h"]h$]h&]uh1j&hjihMhjSubeh}(h]h ]h"]h$]h&]uh1j!hj7ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(hPublic function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory, does not panic if request cannot be satisfied.h]hPublic function, provides additional debug information (including caller info), if enabled. Does not zero allocated memory, does not panic if request cannot be satisfied.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(h **Return**h]j)}(hjȒh]hReturn}(hjʒhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjƒubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(hFVirtual address of allocated memory block on success, NULL on failure.h]hFVirtual address of allocated memory block on success, NULL on failure.}(hjޒhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_alloc_hugetlb (C function)c.memblock_alloc_hugetlbhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hIvoid * memblock_alloc_hugetlb (phys_addr_t size, int nid, bool exact_nid)h]j)}(hGvoid *memblock_alloc_hugetlb(phys_addr_t size, int nid, bool exact_nid)h](j8)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj; )}(hj8h]h*}(hj*hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj hhhjhMubj)}(hmemblock_alloc_hugetlbh]j)}(hmemblock_alloc_hugetlbh]hmemblock_alloc_hugetlb}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhjhMubjp)}(h+(phys_addr_t size, int nid, bool exact_nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jj=sbc.memblock_alloc_hugetlbasbuh1hhjSubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(hint nidh](j8)}(hinth]hint}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hnidh]hnid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubjv)}(hbool exact_nidh](j8)}(hjMh]hbool}(hj֓hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjғubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjғubj)}(h exact_nidh]h exact_nid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjғubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjOubeh}(h]h ]h"]h$]h&]jjuh1johj hhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhMhjhhubj)}(hhh]h)}(h&allocate boot memory for HugeTLB pagesh]h&allocate boot memory for HugeTLB pages}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1jthhhjDhNhNubj)}(hX}**Parameters** ``phys_addr_t size`` size of the memory to be allocated in bytes ``int nid`` nid of the free memory to find, ``NUMA_NO_NODE`` for any node ``bool exact_nid`` only allocate from the specified nid. If ``false``, the specified nid is tried first, and then all nodes are tried as fallback. **Description** HugeTLB pages are always aligned by their size, so the alignment matches **size**. Since the memory is for userspace, mirrored memory is not used. The memory is not zeroed. Does not panic if request cannot be satisfied. **Return** Virtual address of allocated memory block on success, ``NULL`` on failure.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubj")}(hhh](j')}(hA``phys_addr_t size`` size of the memory to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hj\h]hphys_addr_t size}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjVubjG)}(hhh]h)}(h+size of the memory to be allocated in bytesh]h+size of the memory to be allocated in bytes}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjrubah}(h]h ]h"]h$]h&]uh1jFhjVubeh}(h]h ]h"]h$]h&]uh1j&hjqhMhjSubj')}(hJ``int nid`` nid of the free memory to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjh]hint nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubjG)}(hhh]h)}(h=nid of the free memory to find, ``NUMA_NO_NODE`` for any nodeh](h nid of the free memory to find, }(hjhhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh for any node}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjSubj')}(h``bool exact_nid`` only allocate from the specified nid. If ``false``, the specified nid is tried first, and then all nodes are tried as fallback. h](j-)}(h``bool exact_nid``h]h)}(hjh]hbool exact_nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjޔubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjڔubjG)}(hhh]h)}(honly allocate from the specified nid. If ``false``, the specified nid is tried first, and then all nodes are tried as fallback.h](h)only allocate from the specified nid. If }(hjhhhNhNubh)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubhM, the specified nid is tried first, and then all nodes are tried as fallback.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhjubah}(h]h ]h"]h$]h&]uh1jFhjڔubeh}(h]h ]h"]h$]h&]uh1j&hjhMhjSubeh}(h]h ]h"]h$]h&]uh1j!hj7ubh)}(h**Description**h]j)}(hj.h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(hHugeTLB pages are always aligned by their size, so the alignment matches **size**. Since the memory is for userspace, mirrored memory is not used. The memory is not zeroed. Does not panic if request cannot be satisfied.h](hIHugeTLB pages are always aligned by their size, so the alignment matches }(hjDhhhNhNubj)}(h**size**h]hsize}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh. Since the memory is for userspace, mirrored memory is not used. The memory is not zeroed. Does not panic if request cannot be satisfied.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(h **Return**h]j)}(hjgh]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubh)}(hJVirtual address of allocated memory block on success, ``NULL`` on failure.h](h6Virtual address of allocated memory block on success, }(hj}hhhNhNubh)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}ubh on failure.}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp#memblock_alloc_try_nid (C function)c.memblock_alloc_try_nidhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hxvoid * memblock_alloc_try_nid (phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h]j)}(hvvoid *memblock_alloc_try_nid(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](j8)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM+ubj)}(h h]h }(hj͕hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj̕hM+ubj; )}(hj8h]h*}(hjەhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjhhhj̕hM+ubj)}(hmemblock_alloc_try_nidh]j)}(hmemblock_alloc_try_nidh]hmemblock_alloc_try_nid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj̕hM+ubjp)}(hZ(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr, phys_addr_t max_addr, int nid)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.memblock_alloc_try_nidasbuh1hhjubj)}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]j'c.memblock_alloc_try_nidasbuh1hhjNubj)}(h h]h }(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(halignh]halign}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t min_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j'c.memblock_alloc_try_nidasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hmin_addrh]hmin_addr}(hjɖhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t max_addrh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j'c.memblock_alloc_try_nidasbuh1hhjޖubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޖubj)}(hmax_addrh]hmax_addr}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޖubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hint nidh](j8)}(hinth]hint}(hj*hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj&ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hnidh]hnid}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johjhhhj̕hM+ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhj̕hM+ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhj̕hM+hjhhubj)}(hhh]h)}(hallocate boot memory blockh]hallocate boot memory block}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM+hjmhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj̕hM+ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hX)**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) ``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value ``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node **Description** Public function, provides additional debug information (including caller info), if enabled. This function zeroes the allocated memory. **Return** Virtual address of allocated memory block on success, NULL on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM/hjubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM,hjubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hjʗhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjƗhM,hjǗubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjƗhM,hjubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hjh]hphys_addr_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM-hjubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM-hjubj')}(ht``phys_addr_t min_addr`` the lower bound of the memory region from where the allocation is preferred (phys address) h](j-)}(h``phys_addr_t min_addr``h]h)}(hj#h]hphys_addr_t min_addr}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM/hjubjG)}(hhh]h)}(hZthe lower bound of the memory region from where the allocation is preferred (phys address)h]hZthe lower bound of the memory region from where the allocation is preferred (phys address)}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM.hj9ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj8hM/hjubj')}(h``phys_addr_t max_addr`` the upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit value h](j-)}(h``phys_addr_t max_addr``h]h)}(hj]h]hphys_addr_t max_addr}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM2hjWubjG)}(hhh]h)}(hthe upper bound of the memory region from where the allocation is preferred (phys address), or ``MEMBLOCK_ALLOC_ACCESSIBLE`` to allocate only from memory limited by memblock.current_limit valueh](h_the upper bound of the memory region from where the allocation is preferred (phys address), or }(hjvhhhNhNubh)}(h``MEMBLOCK_ALLOC_ACCESSIBLE``h]hMEMBLOCK_ALLOC_ACCESSIBLE}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvubhE to allocate only from memory limited by memblock.current_limit value}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM0hjsubah}(h]h ]h"]h$]h&]uh1jFhjWubeh}(h]h ]h"]h$]h&]uh1j&hjrhM2hjubj')}(hH``int nid`` nid of the free area to find, ``NUMA_NO_NODE`` for any node h](j-)}(h ``int nid``h]h)}(hjh]hint nid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM3hjubjG)}(hhh]h)}(h;nid of the free area to find, ``NUMA_NO_NODE`` for any nodeh](hnid of the free area to find, }(hj˜hhhNhNubh)}(h``NUMA_NO_NODE``h]h NUMA_NO_NODE}(hjʘhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj˜ubh for any node}(hj˜hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM3hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM3hjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM5hjubh)}(hPublic function, provides additional debug information (including caller info), if enabled. This function zeroes the allocated memory.h]hPublic function, provides additional debug information (including caller info), if enabled. This function zeroes the allocated memory.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM4hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM7hjubh)}(hFVirtual address of allocated memory block on success, NULL on failure.h]hFVirtual address of allocated memory block on success, NULL on failure.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp&__memblock_alloc_or_panic (C function)c.__memblock_alloc_or_panichNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hXvoid * __memblock_alloc_or_panic (phys_addr_t size, phys_addr_t align, const char *func)h]j)}(hVvoid *__memblock_alloc_or_panic(phys_addr_t size, phys_addr_t align, const char *func)h](j8)}(hvoidh]hvoid}(hjbhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj^hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMNubj)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhhjphMNubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj^hhhjphMNubj)}(h__memblock_alloc_or_panich]j)}(h__memblock_alloc_or_panich]h__memblock_alloc_or_panic}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj^hhhjphMNubjp)}(h7(phys_addr_t size, phys_addr_t align, const char *func)h](jv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__memblock_alloc_or_panicasbuh1hhjubj)}(h h]h }(hjϙhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsizeh]hsize}(hjݙhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t alignh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j˙c.__memblock_alloc_or_panicasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(halignh]halign}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hconst char *funch](j)}(hjh]hconst}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj8)}(hcharh]hchar}(hjYhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj:ubj)}(h h]h }(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj; )}(hj8h]h*}(hjuhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hj:ubj)}(hfunch]hfunc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johj^hhhjphMNubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjZhhhjphMNubah}(h]jUah ](jjeh"]h$]h&]jj)jhuh1jyhjphMNhjWhhubj)}(hhh]h)}(h+Try to allocate memory and panic on failureh]h+Try to allocate memory and panic on failure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMNhjhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjphMNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjĚjjĚjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``phys_addr_t size`` size of memory block to be allocated in bytes ``phys_addr_t align`` alignment of the region and block's size ``const char *func`` caller func name **Description** This function attempts to allocate memory using memblock_alloc, and in case of failure, it calls panic with the formatted message. This function should not be used directly, please use the macro memblock_alloc_or_panic.h](h)}(h**Parameters**h]j)}(hjΚh]h Parameters}(hjКhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj̚ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMRhjȚubj")}(hhh](j')}(hC``phys_addr_t size`` size of memory block to be allocated in bytes h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMOhjubjG)}(hhh]h)}(h-size of memory block to be allocated in bytesh]h-size of memory block to be allocated in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMOhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhMOhjubj')}(h?``phys_addr_t align`` alignment of the region and block's size h](j-)}(h``phys_addr_t align``h]h)}(hj&h]hphys_addr_t align}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMPhj ubjG)}(hhh]h)}(h(alignment of the region and block's sizeh]h*alignment of the region and block’s size}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMPhj<ubah}(h]h ]h"]h$]h&]uh1jFhj ubeh}(h]h ]h"]h$]h&]uh1j&hj;hMPhjubj')}(h&``const char *func`` caller func name h](j-)}(h``const char *func``h]h)}(hj_h]hconst char *func}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMQhjYubjG)}(hhh]h)}(hcaller func nameh]hcaller func name}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMQhjuubah}(h]h ]h"]h$]h&]uh1jFhjYubeh}(h]h ]h"]h$]h&]uh1j&hjthMQhjubeh}(h]h ]h"]h$]h&]uh1j!hjȚubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMShjȚubh)}(hThis function attempts to allocate memory using memblock_alloc, and in case of failure, it calls panic with the formatted message. This function should not be used directly, please use the macro memblock_alloc_or_panic.h]hThis function attempts to allocate memory using memblock_alloc, and in case of failure, it calls panic with the formatted message. This function should not be used directly, please use the macro memblock_alloc_or_panic.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMRhjȚubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp-memblock_estimated_nr_free_pages (C function)"c.memblock_estimated_nr_free_pageshNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h5unsigned long memblock_estimated_nr_free_pages (void)h]j)}(h4unsigned long memblock_estimated_nr_free_pages(void)h](j8)}(hunsignedh]hunsigned}(hjߛhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjۛhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۛhhhjhMubj8)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjۛhhhjhMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۛhhhjhMubj)}(h memblock_estimated_nr_free_pagesh]j)}(h memblock_estimated_nr_free_pagesh]h memblock_estimated_nr_free_pages}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjۛhhhjhMubjp)}(h(void)h]jv)}(hvoidh]j8)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj4ubah}(h]h ]h"]h$]h&]noemphjjuh1juhj0ubah}(h]h ]h"]h$]h&]jjuh1johjۛhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjכhhhjhMubah}(h]jқah ](jjeh"]h$]h&]jj)jhuh1jyhjhMhjԛhhubj)}(hhh]h)}(hAreturn estimated number of free pages from memblock point of viewh]hAreturn estimated number of free pages from memblock point of view}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj_hhubah}(h]h ]h"]h$]h&]uh1jhjԛhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzjjzjjjuh1jthhhjDhNhNubj)}(hX**Parameters** ``void`` no arguments **Description** During bootup, subsystems might need a rough estimate of the number of free pages in the whole system, before precise numbers are available from the buddy. Especially with CONFIG_DEFERRED_STRUCT_PAGE_INIT, the numbers obtained from the buddy might be very imprecise during bootup. **Return** An estimated number of free pages from memblock point of view.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~ubj")}(hhh]j')}(h``void`` no arguments h](j-)}(h``void``h]h)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjubjG)}(hhh]h)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhKhjubah}(h]h ]h"]h$]h&]uh1j!hj~ubh)}(h**Description**h]j)}(hjޜh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjܜubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhj~ubh)}(hXDuring bootup, subsystems might need a rough estimate of the number of free pages in the whole system, before precise numbers are available from the buddy. Especially with CONFIG_DEFERRED_STRUCT_PAGE_INIT, the numbers obtained from the buddy might be very imprecise during bootup.h]hXDuring bootup, subsystems might need a rough estimate of the number of free pages in the whole system, before precise numbers are available from the buddy. Especially with CONFIG_DEFERRED_STRUCT_PAGE_INIT, the numbers obtained from the buddy might be very imprecise during bootup.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~ubh)}(h>An estimated number of free pages from memblock point of view.h]h>An estimated number of free pages from memblock point of view.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp&memblock_is_region_memory (C function)c.memblock_is_region_memoryhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hSbool __init_memblock memblock_is_region_memory (phys_addr_t base, phys_addr_t size)h]j)}(hRbool __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size)h](j8)}(hjMh]hbool}(hjJhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjFhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMIubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhjWhMIubh__init_memblock}(hjFhhhNhNubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhjWhMIubj)}(hmemblock_is_region_memoryh]j)}(hmemblock_is_region_memoryh]hmemblock_is_region_memory}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]jjuh1jhjFhhhjWhMIubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj~sbc.memblock_is_region_memoryasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hbaseh]hbase}(hjɝhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.memblock_is_region_memoryasbuh1hhjޝubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޝubj)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjޝubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johjFhhhjWhMIubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjBhhhjWhMIubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1jyhjWhMIhj?hhubj)}(hhh]h)}(h'check if a region is a subset of memoryh]h'check if a region is a subset of memory}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMIhj8hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhjWhMIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1jthhhjDhNhNubj)}(h**Parameters** ``phys_addr_t base`` base of region to check ``phys_addr_t size`` size of region to check **Description** Check if the region [**base**, **base** + **size**) is a subset of a memory block. **Return** 0 if false, non-zero if trueh](h)}(h**Parameters**h]j)}(hj]h]h Parameters}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMMhjWubj")}(hhh](j')}(h-``phys_addr_t base`` base of region to check h](j-)}(h``phys_addr_t base``h]h)}(hj|h]hphys_addr_t base}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMJhjvubjG)}(hhh]h)}(hbase of region to checkh]hbase of region to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1jFhjvubeh}(h]h ]h"]h$]h&]uh1j&hjhMJhjsubj')}(h-``phys_addr_t size`` size of region to check h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMKhjubjG)}(hhh]h)}(hsize of region to checkh]hsize of region to check}(hjΞhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjʞhMKhj˞ubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjʞhMKhjsubeh}(h]h ]h"]h$]h&]uh1j!hjWubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMMhjWubh)}(hRCheck if the region [**base**, **base** + **size**) is a subset of a memory block.h](hCheck if the region [}(hjhhhNhNubj)}(h**base**h]hbase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h**base**h]hbase}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh + }(hjhhhNhNubj)}(h**size**h]hsize}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh ) is a subset of a memory block.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMLhjWubh)}(h **Return**h]j)}(hjMh]hReturn}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMNhjWubh)}(h0 if false, non-zero if trueh]h0 if false, non-zero if true}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMOhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp(memblock_is_region_reserved (C function)c.memblock_is_region_reservedhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hUbool __init_memblock memblock_is_region_reserved (phys_addr_t base, phys_addr_t size)h]j)}(hTbool __init_memblock memblock_is_region_reserved(phys_addr_t base, phys_addr_t size)h](j8)}(hjMh]hbool}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM^ubh__init_memblock}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM^ubj)}(hmemblock_is_region_reservedh]j)}(hmemblock_is_region_reservedh]hmemblock_is_region_reserved}(hjğhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhM^ubjp)}(h$(phys_addr_t base, phys_addr_t size)h](jv)}(hphys_addr_t baseh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjƟsbc.memblock_is_region_reservedasbuh1hhjܟubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjܟubj)}(hbaseh]hbase}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjܟubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj؟ubjv)}(hphys_addr_t sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]jc.memblock_is_region_reservedasbuh1hhj&ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(hsizeh]hsize}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphjjuh1juhj؟ubeh}(h]h ]h"]h$]h&]jjuh1johjhhhjhM^ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhM^ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjhM^hjhhubj)}(hhh]h)}(h,check if a region intersects reserved memoryh]h,check if a region intersects reserved memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM^hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM^ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hX **Parameters** ``phys_addr_t base`` base of region to check ``phys_addr_t size`` size of region to check **Description** Check if the region [**base**, **base** + **size**) intersects a reserved memory block. **Return** True if they intersect, false if not.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMbhjubj")}(hhh](j')}(h-``phys_addr_t base`` base of region to check h](j-)}(h``phys_addr_t base``h]h)}(hjĠh]hphys_addr_t base}(hjƠhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM_hjubjG)}(hhh]h)}(hbase of region to checkh]hbase of region to check}(hjݠhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj٠hM_hjڠubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj٠hM_hjubj')}(h-``phys_addr_t size`` size of region to check h](j-)}(h``phys_addr_t size``h]h)}(hjh]hphys_addr_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM`hjubjG)}(hhh]h)}(hsize of region to checkh]hsize of region to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM`hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM`hjubeh}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hj8h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMbhjubh)}(hWCheck if the region [**base**, **base** + **size**) intersects a reserved memory block.h](hCheck if the region [}(hjNhhhNhNubj)}(h**base**h]hbase}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubh, }(hjNhhhNhNubj)}(h**base**h]hbase}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubh + }(hjNhhhNhNubj)}(h**size**h]hsize}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubh%) intersects a reserved memory block.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMahjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMdhjubh)}(h%True if they intersect, false if not.h]h%True if they intersect, false if not.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chMehjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jpmemblock_free_all (C function)c.memblock_free_allhNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hvoid memblock_free_all (void)h]j)}(hvoid memblock_free_all(void)h](j8)}(hvoidh]hvoid}(hjڡhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hj֡hhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj֡hhhjhM ubj)}(hmemblock_free_allh]j)}(hmemblock_free_allh]hmemblock_free_all}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhj֡hhhjhM ubjp)}(h(void)h]jv)}(hvoidh]j8)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]noemphjjuh1juhjubah}(h]h ]h"]h$]h&]jjuh1johj֡hhhjhM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjҡhhhjhM ubah}(h]j͡ah ](jjeh"]h$]h&]jj)jhuh1jyhjhM hjϡhhubj)}(hhh]h)}(h)release free pages to the buddy allocatorh]h)release free pages to the buddy allocator}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj>hhubah}(h]h ]h"]h$]h&]uh1jhjϡhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjYjjYjjjuh1jthhhjDhNhNubj)}(h'**Parameters** ``void`` no argumentsh](h)}(h**Parameters**h]j)}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj]ubj")}(hhh]j')}(h``void`` no argumentsh](j-)}(h``void``h]h)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj|ubjG)}(hhh]h)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chKhjubah}(h]h ]h"]h$]h&]uh1jFhj|ubeh}(h]h ]h"]h$]h&]uh1j&hjhM hjyubah}(h]h ]h"]h$]h&]uh1j!hj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp%reserve_mem_find_by_name (C function)c.reserve_mem_find_by_namehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(hVint reserve_mem_find_by_name (const char *name, phys_addr_t *start, phys_addr_t *size)h]j)}(hUint reserve_mem_find_by_name(const char *name, phys_addr_t *start, phys_addr_t *size)h](j8)}(hinth]hint}(hjܢhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjآhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjآhhhjhM ubj)}(hreserve_mem_find_by_nameh]j)}(hreserve_mem_find_by_nameh]hreserve_mem_find_by_name}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjآhhhjhM ubjp)}(h9(const char *name, phys_addr_t *start, phys_addr_t *size)h](jv)}(hconst char *nameh](j)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj8)}(hcharh]hchar}(hj4hhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(h h]h }(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj; )}(hj8h]h*}(hjPhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjubj)}(hnameh]hname}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t *starth](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j)}jjsbc.reserve_mem_find_by_nameasbuh1hhjrubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjrubj)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubjv)}(hphys_addr_t *sizeh](h)}(hhh]j)}(h phys_addr_th]h phys_addr_t}(hjУhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjͣubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjңmodnameN classnameNjj)}j]jc.reserve_mem_find_by_nameasbuh1hhjɣubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjɣubj; )}(hj8h]h*}(hjhhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjɣubj)}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjɣubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubeh}(h]h ]h"]h$]h&]jjuh1johjآhhhjhM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjԢhhhjhM ubah}(h]jϢah ](jjeh"]h$]h&]jj)jhuh1jyhjhM hjѢhhubj)}(hhh]h)}(h-Find reserved memory region with a given nameh]h-Find reserved memory region with a given name}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hj0hhubah}(h]h ]h"]h$]h&]uh1jhjѢhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1jthhhjDhNhNubj)}(hXU**Parameters** ``const char *name`` The name that is attached to a reserved memory region ``phys_addr_t *start`` If found, holds the start address ``phys_addr_t *size`` If found, holds the size of the address. **Description** **start** and **size** are only updated if **name** is found. **Return** 1 if found or 0 if not found.h](h)}(h**Parameters**h]j)}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjOubj")}(hhh](j')}(hK``const char *name`` The name that is attached to a reserved memory region h](j-)}(h``const char *name``h]h)}(hjth]hconst char *name}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjnubjG)}(hhh]h)}(h5The name that is attached to a reserved memory regionh]h5The name that is attached to a reserved memory region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jFhjnubeh}(h]h ]h"]h$]h&]uh1j&hjhM hjkubj')}(h9``phys_addr_t *start`` If found, holds the start address h](j-)}(h``phys_addr_t *start``h]h)}(hjh]hphys_addr_t *start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubjG)}(hhh]h)}(h!If found, holds the start addressh]h!If found, holds the start address}(hjƤhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj¤hM hjäubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hj¤hM hjkubj')}(h?``phys_addr_t *size`` If found, holds the size of the address. h](j-)}(h``phys_addr_t *size``h]h)}(hjh]hphys_addr_t *size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubjG)}(hhh]h)}(h(If found, holds the size of the address.h]h(If found, holds the size of the address.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM hjkubeh}(h]h ]h"]h$]h&]uh1j!hjOubh)}(h**Description**h]j)}(hj!h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjOubh)}(h=**start** and **size** are only updated if **name** is found.h](j)}(h **start**h]hstart}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh and }(hj7hhhNhNubj)}(h**size**h]hsize}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh are only updated if }(hj7hhhNhNubj)}(h**name**h]hname}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubh is found.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjOubh)}(h **Return**h]j)}(hjzh]hReturn}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjOubh)}(h1 if found or 0 if not found.h]h1 if found or 0 if not found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubjd)}(hhh]h}(h]h ]h"]h$]h&]entries](jp(reserve_mem_release_by_name (C function)c.reserve_mem_release_by_namehNtauh1jchjDhhhNhNubju)}(hhh](jz)}(h2int reserve_mem_release_by_name (const char *name)h]j)}(h1int reserve_mem_release_by_name(const char *name)h](j8)}(hinth]hint}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM ubj)}(h h]h }(hjΥhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjͥhM ubj)}(hreserve_mem_release_by_nameh]j)}(hreserve_mem_release_by_nameh]hreserve_mem_release_by_name}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjܥubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjͥhM ubjp)}(h(const char *name)h]jv)}(hconst char *nameh](j)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj8)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jDah"]h$]h&]uh1j7hjubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj; )}(hj8h]h*}(hj3hhhNhNubah}(h]h ]jF ah"]h$]h&]uh1j: hjubj)}(hnameh]hname}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1juhjubah}(h]h ]h"]h$]h&]jjuh1johjhhhjͥhM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjͥhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jyhjͥhM hjhhubj)}(hhh]h)}(h0Release reserved memory region with a given nameh]h0Release reserved memory region with a given name}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjghhubah}(h]h ]h"]h$]h&]uh1jhjhhhjͥhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jthhhjDhNhNubj)}(hX9**Parameters** ``const char *name`` The name that is attached to a reserved memory region **Description** Forcibly release the pages in the reserved memory region so that those memory can be used as free memory. After released the reserved region size becomes 0. **Return** 1 if released or 0 if not found.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubj")}(hhh]j')}(hK``const char *name`` The name that is attached to a reserved memory region h](j-)}(h``const char *name``h]h)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubjG)}(hhh]h)}(h5The name that is attached to a reserved memory regionh]h5The name that is attached to a reserved memory region}(hjĦhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jFhjubeh}(h]h ]h"]h$]h&]uh1j&hjhM hjubah}(h]h ]h"]h$]h&]uh1j!hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubh)}(hForcibly release the pages in the reserved memory region so that those memory can be used as free memory. After released the reserved region size becomes 0.h]hForcibly release the pages in the reserved memory region so that those memory can be used as free memory. After released the reserved region size becomes 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubh)}(h **Return**h]j)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubh)}(h 1 if released or 0 if not found.h]h 1 if released or 0 if not found.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/core-api/boot-time-mm:40: ./mm/memblock.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjDhhhNhNubeh}(h]functions-and-structuresah ]h"]functions and structuresah$]h&]uh1hhhhhhhhKubeh}(h]boot-time-memory-managementah ]h"]boot time memory managementah$]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_handlerjlerror_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}(jFjCjAj>j>j;u nametypes}(jFjAj>uh}(jChj>jcj;jDjrj{jMjRjj j j j j j` je jjjjj0j5jjj:j?jdjijjj*j/jljqj(!j-!j"j"j$j$jP&jU&j4'j9'j(j(j},j,j0j0jk5jp5j8j8j9j9j<j<j?j?j1Dj6DjQHjVHjKjKjMjMjOjOjSjSjUjUjWjWjW[j\[jC]jH]j/_j4_jaj ajycj~cjeejjejgjgjijijkjkjmjmjsjsjyjyj }j}jjjjjjjjj\jajjjjjUjZjқjכj=jBjjj͡jҡjϢjԢjju 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.