• Dan Williams's avatar
    device-dax: Fix duplicate 'hmem' device registration · 472faf72
    Dan Williams authored
    So called "soft-reserved" memory is an EFI conventional memory range
    with the EFI_MEMORY_SP attribute set. That attribute indicates that the
    memory is not part of the platform general purpose memory pool and may
    want some consideration from the system administrator about whether to
    keep that memory set aside for dedicated access through device-dax (map
    a device file), or assigned to the page allocator as another general
    purpose memory node target.
    
    Absent an ACPI HMAT table the default device-dax registration creates
    coarse grained devices that are delineated by EFI Memory Map entries.
    With the HMAT the devices are delineated by the finer grained ranges
    associated with the proximity domain of the memory target. I.e. the HMAT
    describes the properties of performance differentiated memory and each
    unique performance description results in a unique target proximity
    domain where each memory proximity domain has an associated SRAT entry
    that delineates the address range.
    
    The intent was that SRAT-defined device-dax instances are registered
    first. Then any left-over address range with the EFI_MEMORY_SP
    attribute, but not covered by the SRAT, would have a coarse grained
    device-dax instance established. However, the scheme to detect what
    ranges are left to be assigned to a device was buggy and resulted in
    multiple overlapping device-dax instances. Fix this by using explicit
    tracking for which ranges have been handled.
    
    Now, this new approach may leave memory stranded in the presence of
    broken platform firmware that fails to fully describe all EFI_MEMORY_SP
    ranges in the HMAT. That requires a deeper fix if it becomes a problem
    in practice.
    Reported-by: default avatar"Tallam Mahendra Kumar" <tallam.mahendra.kumar@intel.com>
    Reported-by: default avatarMustafa Hajeer <mustafa.hajeer@intel.com>
    Debugged-by: default avatarVishal Verma <vishal.l.verma@intel.com>
    Tested-by: default avatarVishal Verma <vishal.l.verma@intel.com>
    Link: https://lore.kernel.org/r/166890823379.4183293.15333502171004313377.stgit@dwillia2-xfh.jf.intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    472faf72
device.c 2.47 KB