• Dan Williams's avatar
    ACPI: NFIT: Fix support for virtual SPA ranges · b93dfa6b
    Dan Williams authored
    Fix the NFIT parsing code to treat a 0 index in a SPA Range Structure as
    a special case and not match Region Mapping Structures that use 0 to
    indicate that they are not mapped. Without this fix some platform BIOS
    descriptions of "virtual disk" ranges do not result in the pmem driver
    attaching to the range.
    
    Details:
    In addition to typical persistent memory ranges, the ACPI NFIT may also
    convey "virtual" ranges. These ranges are indicated by a UUID in the SPA
    Range Structure of UUID_VOLATILE_VIRTUAL_DISK, UUID_VOLATILE_VIRTUAL_CD,
    UUID_PERSISTENT_VIRTUAL_DISK, or UUID_PERSISTENT_VIRTUAL_CD. The
    critical difference between virtual ranges and UUID_PERSISTENT_MEMORY,
    is that virtual do not support associations with Region Mapping
    Structures.  For this reason the "index" value of virtual SPA Range
    Structures is allowed to be 0. If a platform BIOS decides to represent
    NVDIMMs with disconnected "Region Mapping Structures" (range-index ==
    0), the kernel may falsely associate them with standalone ranges where
    the "SPA Range Structure Index" is also zero. When this happens the
    driver may falsely require labels where "virtual disks" are expected to
    be label-less. I.e. "label-less" is where the namespace-range ==
    region-range and the pmem driver attaches with no user action to create
    a namespace.
    
    Cc: Jacek Zloch <jacek.zloch@intel.com>
    Cc: Lukasz Sobieraj <lukasz.sobieraj@intel.com>
    Cc: "Lee, Chun-Yi" <jlee@suse.com>
    Cc: <stable@vger.kernel.org>
    Fixes: c2f32acd ("acpi, nfit: treat virtual ramdisk SPA as pmem region")
    Reported-by: default avatarKrzysztof Rusocki <krzysztof.rusocki@intel.com>
    Reported-by: default avatarDamian Bassa <damian.bassa@intel.com>
    Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Link: https://lore.kernel.org/r/162870796589.2521182.1240403310175570220.stgit@dwillia2-desk3.amr.corp.intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    b93dfa6b
core.c 103 KB