On 16.10.19 12:28, Anshuman Khandual wrote:


On 10/16/2019 02:28 PM, Michal Hocko wrote:
On Wed 16-10-19 13:04:53, Anshuman Khandual wrote:
HugeTLB helper alloc_gigantic_page() implements fairly generic allocation
method where it scans over various zones looking for a large contiguous pfn
range before trying to allocate it with alloc_contig_range(). Other than
deriving the requested order from 'struct hstate', there is nothing HugeTLB
specific in there. This can be made available for general use to allocate
contiguous memory which could not have been allocated through the buddy
allocator.

alloc_gigantic_page() has been split carving out actual allocation method
which is then made available via new alloc_contig_pages() helper wrapped
under CONFIG_CONTIG_ALLOC. All references to 'gigantic' have been replaced
with more generic term 'contig'. Allocated pages here should be freed with
free_contig_range() or by calling __free_page() on each allocated page.

Do we want to export this to modules? Apart from mostly styling issues
pointed by David this looks fine.

I do agree that a general allocator api belongs to page_alloc.c rather
than force people to invent their own and broken instances.
Cc: Mike Kravetz <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Oscar Salvador <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Mike Rapoport <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Pavel Tatashin <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: [email protected]
Signed-off-by: Anshuman Khandual <[email protected]>

After other issues mentioned by David get resolved you can add

Just to confirm. Only the styling issues, right ? pfn_range_valid_contig(),
pfn alignment and zone scanning all remain the same like before ?


Fine with me. Please do think about the alignment thingy. (I suggest to just enforce an alignment to a power of two for now (and return NULL if not a power of two), we can always relax that when needed - and then think about a better search for !power of two)

--

Thanks,

David / dhildenb

Reply via email to