Re: [PATCH v9 4/5] mm/sparse-vmemmap: improve memory savings for compound devmaps

2022-04-20 Thread Andrew Morton
On Wed, 20 Apr 2022 16:53:09 +0100 Joao Martins wrote: > A compound devmap is a dev_pagemap with @vmemmap_shift > 0 and it > means that pages are mapped at a given huge page alignment and utilize > uses compound pages as opposed to order-0 pages. > > Take advantage of the fact that most tail pa

[PATCH v9 5/5] mm/page_alloc: reuse tail struct pages for compound devmaps

2022-04-20 Thread Joao Martins
Currently memmap_init_zone_device() ends up initializing 32768 pages when it only needs to initialize 128 given tail page reuse. That number is worse with 1GB compound pages, 262144 instead of 128. Update memmap_init_zone_device() to skip redundant initialization, detailed below. When a pgmap @vme

[PATCH v9 4/5] mm/sparse-vmemmap: improve memory savings for compound devmaps

2022-04-20 Thread Joao Martins
A compound devmap is a dev_pagemap with @vmemmap_shift > 0 and it means that pages are mapped at a given huge page alignment and utilize uses compound pages as opposed to order-0 pages. Take advantage of the fact that most tail pages look the same (except the first two) to minimize struct page ove

[PATCH v9 3/5] mm/hugetlb_vmemmap: move comment block to Documentation/vm

2022-04-20 Thread Joao Martins
In preparation for device-dax for using hugetlbfs compound page tail deduplication technique, move the comment block explanation into a common place in Documentation/vm. Cc: Muchun Song Cc: Mike Kravetz Suggested-by: Dan Williams Signed-off-by: Joao Martins Reviewed-by: Muchun Song Reviewed-b

[PATCH v9 2/5] mm/sparse-vmemmap: refactor core of vmemmap_populate_basepages() to helper

2022-04-20 Thread Joao Martins
In preparation for describing a memmap with compound pages, move the actual pte population logic into a separate function vmemmap_populate_address() and have a new helper vmemmap_populate_range() walk through all base pages it needs to populate. While doing that, change the helper to use a pte_t*

[PATCH v9 0/5] sparse-vmemmap: memory savings for compound devmaps (device-dax)

2022-04-20 Thread Joao Martins
Changes since v8[9]: * Rebased to next-20220420 / v5.18-rc3 * Rested Full changelog at the bottom of cover letter. --- This series, minimizes 'struct page' overhead by pursuing a similar approach as Muchun Song series "Free some vmemmap pages of hugetlb page" (now merg

[PATCH v9 1/5] mm/sparse-vmemmap: add a pgmap argument to section activation

2022-04-20 Thread Joao Martins
In support of using compound pages for devmap mappings, plumb the pgmap down to the vmemmap_populate implementation. Note that while altmap is retrievable from pgmap the memory hotplug code passes altmap without pgmap[*], so both need to be independently plumbed. So in addition to @altmap, pass @p