• Dan Williams's avatar
    mm: fix cache mode of dax pmd mappings · 0fd86d80
    Dan Williams authored
    commit 9049771f upstream.
    
    track_pfn_insert() in vmf_insert_pfn_pmd() is marking dax mappings as
    uncacheable rendering them impractical for application usage.  DAX-pte
    mappings are cached and the goal of establishing DAX-pmd mappings is to
    attain more performance, not dramatically less (3 orders of magnitude).
    
    track_pfn_insert() relies on a previous call to reserve_memtype() to
    establish the expected page_cache_mode for the range.  While memremap()
    arranges for reserve_memtype() to be called, devm_memremap_pages() does
    not.  So, teach track_pfn_insert() and untrack_pfn() how to handle
    tracking without a vma, and arrange for devm_memremap_pages() to
    establish the write-back-cache reservation in the memtype tree.
    
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Nilesh Choudhury <nilesh.choudhury@oracle.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: default avatarToshi Kani <toshi.kani@hpe.com>
    Reported-by: default avatarKai Zhang <kai.ka.zhang@oracle.com>
    Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0fd86d80
memremap.c 12.3 KB