• Anshuman Khandual's avatar
    mm/sparsemem: enable vmem_altmap support in vmemmap_populate_basepages() · 1d9cfee7
    Anshuman Khandual authored
    Patch series "arm64: Enable vmemmap mapping from device memory", v4.
    
    This series enables vmemmap backing memory allocation from device memory
    ranges on arm64.  But before that, it enables vmemmap_populate_basepages()
    and vmemmap_alloc_block_buf() to accommodate struct vmem_altmap based
    alocation requests.
    
    This patch (of 3):
    
    vmemmap_populate_basepages() is used across platforms to allocate backing
    memory for vmemmap mapping.  This is used as a standard default choice or
    as a fallback when intended huge pages allocation fails.  This just
    creates entire vmemmap mapping with base pages (PAGE_SIZE).
    
    On arm64 platforms, vmemmap_populate_basepages() is called instead of the
    platform specific vmemmap_populate() when ARM64_SWAPPER_USES_SECTION_MAPS
    is not enabled as in case for ARM64_16K_PAGES and ARM64_64K_PAGES configs.
    
    At present vmemmap_populate_basepages() does not support allocating from
    driver defined struct vmem_altmap while trying to create vmemmap mapping
    for a device memory range.  It prevents ARM64_16K_PAGES and
    ARM64_64K_PAGES configs on arm64 from supporting device memory with
    vmemap_altmap request.
    
    This enables vmem_altmap support in vmemmap_populate_basepages() unlocking
    device memory allocation for vmemap mapping on arm64 platforms with 16K or
    64K base page configs.
    
    Each architecture should evaluate and decide on subscribing device memory
    based base page allocation through vmemmap_populate_basepages().  Hence
    lets keep it disabled on all archs in order to preserve the existing
    semantics.  A subsequent patch enables it on arm64.
    Signed-off-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Tested-by: default avatarJia He <justin.he@arm.com>
    Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Hsin-Yi Wang <hsinyi@chromium.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Steve Capper <steve.capper@arm.com>
    Cc: Yu Zhao <yuzhao@google.com>
    Link: http://lkml.kernel.org/r/1594004178-8861-1-git-send-email-anshuman.khandual@arm.com
    Link: http://lkml.kernel.org/r/1594004178-8861-2-git-send-email-anshuman.khandual@arm.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1d9cfee7
discontig.c 17.5 KB