• Dan Williams's avatar
    nfit, libnvdimm: limited/whitelisted dimm command marshaling mechanism · 31eca76b
    Dan Williams authored
    There are currently 4 known similar but incompatible definitions of the
    command sets that can be sent to an NVDIMM through ACPI.  It is also
    clear that future platform generations (ACPI or not) will continue to
    revise and extend the DIMM command set as new devices and use cases
    arrive.
    
    It is obviously untenable to continue to proliferate divergence
    of these command definitions, and to that end a standardization process
    has begun to provide for a unified specification.  However, that leaves a
    problem about what to do with this first generation where vendors are
    already shipping divergence.
    
    The Linux kernel can support these initial diverged platforms without
    giving platform-firmware free reign to continue to diverge and compound
    kernel maintenance overhead.  The kernel implementation can encourage
    standardization in two ways:
    
    1/ Require that any function code that userspace wants to send be
       explicitly white-listed in the implementation.  For ACPI this means
       function codes marked as supported by acpi_check_dsm() may
       only be invoked if they appear in the white-list.  A function must be
       publicly documented before it is added to the white-list.
    
    2/ The above restrictions can be trivially bypassed by using the
       "vendor-specific" payload command.  However, since vendor-specific
       commands are by definition not publicly documented and have the
       potential to corrupt the kernel's view of the dimm state, we provide a
       toggle to disable vendor-specific operations.  Enabling undefined
       behavior is a policy decision that can be made by the platform owner
       and encourages firmware implementations to choose public over
       private command implementations.
    
    Based on an initial patch from Jerry Hoemann
    Cc: Jerry Hoemann <jerry.hoemann@hpe.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    31eca76b
nfit.c 67.9 KB