Skip to content
  • Dan Williams's avatar
    libnvdimm, dax: fix 1GB-aligned namespaces vs physical misalignment · 41fce90f
    Dan Williams authored
    The following namespace configuration attempt:
    
        # ndctl create-namespace -e namespace0.0 -m devdax -a 1G -f
        libndctl: ndctl_dax_enable: dax0.1: failed to enable
          Error: namespace0.0: failed to enable
    
        failed to reconfigure namespace: No such device or address
    
    ...fails when the backing memory range is not physically aligned to 1G:
    
        # cat /proc/iomem | grep Persistent
        210000000-30fffffff : Persistent Memory (legacy)
    
    In the above example the 4G persistent memory range starts and ends on a
    256MB boundary.
    
    We handle this case correctly when needing to handle cases that violate
    section alignment (128MB) collisions against "System RAM", and we simply
    need to extend that padding/truncation for the 1GB alignment use case.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 315c5625
    
     ("libnvdimm, pfn: add 'align' attribute...")
    Reported-and-tested-by: default avatarJane Chu <jane.chu@oracle.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    41fce90f