Skip to content
  • Dan Williams's avatar
    x86, pmem: clarify that ARCH_HAS_PMEM_API implies PMEM mapped WB · 96601adb
    Dan Williams authored
    
    
    Given that a write-back (WB) mapping plus non-temporal stores is
    expected to be the most efficient way to access PMEM, update the
    definition of ARCH_HAS_PMEM_API to imply arch support for
    WB-mapped-PMEM.  This is needed as a pre-requisite for adding PMEM to
    the direct map and mapping it with struct page.
    
    The above clarification for X86_64 means that memcpy_to_pmem() is
    permitted to use the non-temporal arch_memcpy_to_pmem() rather than
    needlessly fall back to default_memcpy_to_pmem() when the pcommit
    instruction is not available.  When arch_memcpy_to_pmem() is not
    guaranteed to flush writes out of cache, i.e. on older X86_32
    implementations where non-temporal stores may just dirty cache,
    ARCH_HAS_PMEM_API is simply disabled.
    
    The default fall back for persistent memory handling remains.  Namely,
    map it with the WT (write-through) cache-type and hope for the best.
    
    arch_has_pmem_api() is updated to only indicate whether the arch
    provides the proper helpers to meet the minimum "writes are visible
    outside the cache hierarchy after memcpy_to_pmem() + wmb_pmem()".  Code
    that cares whether wmb_pmem() actually flushes writes to pmem must now
    call arch_has_wmb_pmem() directly.
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Reviewed-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
    [hch: set ARCH_HAS_PMEM_API=n on x86_32]
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    [toshi: x86_32 compile fixes]
    Signed-off-by: default avatarToshi Kani <toshi.kani@hp.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    96601adb