21 May, 2019

1 commit


30 Mar, 2019

1 commit

  • With zero-key defined, we can remove previous detection of key id 0 or null
    key in order to deal with a zero-key situation. Syncing all security
    commands to use the zero-key. Helper functions are introduced to return the
    data that points to the actual key payload or the zero_key. This helps
    uniformly handle the key material even with zero_key.

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     

23 Mar, 2019

1 commit

  • The dynamic-debug statements for command payload output only get emitted
    when the command is not ND_CMD_CALL. Move the output payload dumping
    ahead of the early return path for ND_CMD_CALL.

    Fixes: 31eca76ba2fc9 ("...whitelisted dimm command marshaling mechanism")
    Reported-by: Vishal Verma
    Signed-off-by: Dan Williams

    Dan Williams
     

17 Mar, 2019

1 commit

  • Pull device-dax updates from Dan Williams:
    "New device-dax infrastructure to allow persistent memory and other
    "reserved" / performance differentiated memories, to be assigned to
    the core-mm as "System RAM".

    Some users want to use persistent memory as additional volatile
    memory. They are willing to cope with potential performance
    differences, for example between DRAM and 3D Xpoint, and want to use
    typical Linux memory management apis rather than a userspace memory
    allocator layered over an mmap() of a dax file. The administration
    model is to decide how much Persistent Memory (pmem) to use as System
    RAM, create a device-dax-mode namespace of that size, and then assign
    it to the core-mm. The rationale for device-dax is that it is a
    generic memory-mapping driver that can be layered over any "special
    purpose" memory, not just pmem. On subsequent boots udev rules can be
    used to restore the memory assignment.

    One implication of using pmem as RAM is that mlock() no longer keeps
    data off persistent media. For this reason it is recommended to enable
    NVDIMM Security (previously merged for 5.0) to encrypt pmem contents
    at rest. We considered making this recommendation an actively enforced
    requirement, but in the end decided to leave it as a distribution /
    administrator policy to allow for emulation and test environments that
    lack security capable NVDIMMs.

    Summary:

    - Replace the /sys/class/dax device model with /sys/bus/dax, and
    include a compat driver so distributions can opt-in to the new ABI.

    - Allow for an alternative driver for the device-dax address-range

    - Introduce the 'kmem' driver to hotplug / assign a device-dax
    address-range to the core-mm.

    - Arrange for the device-dax target-node to be onlined so that the
    newly added memory range can be uniquely referenced by numa apis"

    NOTE! I'm not entirely happy with the whole "PMEM as RAM" model because
    we currently have special - and very annoying rules in the kernel about
    accessing PMEM only with the "MC safe" accessors, because machine checks
    inside the regular repeat string copy functions can be fatal in some
    (not described) circumstances.

    And apparently the PMEM modules can cause that a lot more than regular
    RAM. The argument is that this happens because PMEM doesn't necessarily
    get scrubbed at boot like RAM does, but that is planned to be added for
    the user space tooling.

    Quoting Dan from another email:
    "The exposure can be reduced in the volatile-RAM case by scanning for
    and clearing errors before it is onlined as RAM. The userspace tooling
    for that can be in place before v5.1-final. There's also runtime
    notifications of errors via acpi_nfit_uc_error_notify() from
    background scrubbers on the DIMM devices. With that mechanism the
    kernel could proactively clear newly discovered poison in the volatile
    case, but that would be additional development more suitable for v5.2.

    I understand the concern, and the need to highlight this issue by
    tapping the brakes on feature development, but I don't see PMEM as RAM
    making the situation worse when the exposure is also there via DAX in
    the PMEM case. Volatile-RAM is arguably a safer use case since it's
    possible to repair pages where the persistent case needs active
    application coordination"

    * tag 'devdax-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    device-dax: "Hotplug" persistent memory for use like normal RAM
    mm/resource: Let walk_system_ram_range() search child resources
    mm/memory-hotplug: Allow memory resources to be children
    mm/resource: Move HMM pr_debug() deeper into resource code
    mm/resource: Return real error codes from walk failures
    device-dax: Add a 'modalias' attribute to DAX 'bus' devices
    device-dax: Add a 'target_node' attribute
    device-dax: Auto-bind device after successful new_id
    acpi/nfit, device-dax: Identify differentiated memory with a unique numa-node
    device-dax: Add /sys/class/dax backwards compatibility
    device-dax: Add support for a dax override driver
    device-dax: Move resource pinning+mapping into the common driver
    device-dax: Introduce bus + driver model
    device-dax: Start defining a dax bus model
    device-dax: Remove multi-resource infrastructure
    device-dax: Kill dax_region base
    device-dax: Kill dax_region ida

    Linus Torvalds
     

12 Mar, 2019

2 commits

  • Merge several updates to the ARS implementation. Highlights include:

    * Support retrieval of short-ARS results if the ARS state is "requires
    continuation", and even if the "no_init_ars" module parameter is
    specified.
    * Allow busy-polling of the kernel ARS state by allowing root to reset
    the exponential back-off timer.
    * Filter potentially stale ARS results by tracking query-ARS relative to
    the previous start-ARS.

    Dan Williams
     
  • Merge miscellaneous libnvdimm sub-system updates for v5.1. Highlights
    include:

    * Support for the Hyper-V family of device-specific-methods (DSMs)
    * Several fixes and workarounds for Hyper-V compatibility.
    * Fix for the support to cache the dirty-shutdown-count at init.

    Dan Williams
     

02 Mar, 2019

1 commit

  • ACPI NFIT flags field reports major errors on NVDIMM, which need
    user's attention.

    Update the current log to a proper error message with dev_err().
    The current message string is kept for grep-compatibility.

    Signed-off-by: Toshi Kani
    Cc: Dan Williams
    Cc: "Rafael J. Wysocki"
    Cc: Robert Elliott
    Signed-off-by: Dan Williams

    Toshi Kani
     

21 Feb, 2019

5 commits

  • Gate ARS result consumption on whether the OS issued start-ARS since the
    previous consumption. The BIOS may only clear its result buffers after a
    successful start-ARS.

    Fixes: 0caeef63e6d2 ("libnvdimm: Add a poison list and export badblocks")
    Cc:
    Reported-by: Krzysztof Rusocki
    Reported-by: Vishal Verma
    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     
  • The ARS implementation implements exponential back-off on the poll
    interval to prevent high-frequency access to the DIMM / platform
    interface. Depending on when the ARS completes the poll interval may
    exceed the completion event by minutes. Allow root to reset the timeout
    each time it probes the status. A one-second timeout is still enforced,
    but root can otherwise can control the poll interval.

    Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify ARS...")
    Cc:
    Reported-by: Erwin Tsaur
    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     
  • In preparation for introducing new flags to gate whether ARS results are
    stale, or poll the completion state, convert the existing flags to an
    unsigned long with enumerated values. This conversion allows the flags
    to be atomically updated outside of ->init_mutex.

    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     
  • The ars_start_flags property of 'struct acpi_nfit_desc' is no longer
    used since ARS_REQ_SHORT and ARS_REQ_LONG were added.

    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     
  • The no_init_ars option is meant to prevent long-ARS, but short-ARS
    should be allowed to grab any immediate results.

    Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify ARS...")
    Cc:
    Reported-by: Erwin Tsaur
    Reviewed-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     

14 Feb, 2019

1 commit


13 Feb, 2019

1 commit

  • Recent fixes to command handling enabled Linux to read label
    configurations that it could not before. Unfortunately that means that
    configurations that were operating in label-less mode will be broken as
    the kernel ignores the existing namespace configuration and tries to
    honor the new found labels.

    Fortunately this seems limited to a case where Linux can quirk the
    behavior and maintain the existing label-less semantics by default.
    When the platform does not emit an _LSW method, disable all label access
    methods. Provide a 'force_labels' module parameter to allow read-only
    label operation.

    Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection")
    Reported-by: Dexuan Cui
    Reviewed-by: Dexuan Cui
    Signed-off-by: Dan Williams

    Dan Williams
     

08 Feb, 2019

1 commit

  • Commit 11189c1089da "acpi/nfit: Fix command-supported detection" broke
    ND_CMD_CALL for bus-level commands. The "func = cmd" assumption is only
    valid for:

    ND_CMD_ARS_CAP
    ND_CMD_ARS_START
    ND_CMD_ARS_STATUS
    ND_CMD_CLEAR_ERROR

    The function number otherwise needs to be pulled from the command
    payload for:

    NFIT_CMD_TRANSLATE_SPA
    NFIT_CMD_ARS_INJECT_SET
    NFIT_CMD_ARS_INJECT_CLEAR
    NFIT_CMD_ARS_INJECT_GET

    Update cmd_to_func() for the bus case and call it in the common path.

    Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection")
    Cc:
    Reviewed-by: Vishal Verma
    Reported-by: Grzegorz Burzynski
    Tested-by: Jeff Moyer
    Signed-off-by: Dan Williams

    Dan Williams
     

03 Feb, 2019

1 commit

  • As Dexuan reports the NVDIMM_FAMILY_HYPERV platform is incompatible with
    the existing Linux namespace implementation because it uses
    NSLABEL_FLAG_LOCAL for x1-width PMEM interleave sets. Quirk it as an
    platform / DIMM that does not provide BLK-aperture access. Allow the
    libnvdimm core to assume no potential for aliasing. In case other
    implementations make the same mistake, provide a "noblk" module
    parameter to force-enable the quirk.

    Link: https://lkml.kernel.org/r/PU1P153MB0169977604493B82B662A01CBF920@PU1P153MB0169.APCP153.PROD.OUTLOOK.COM
    Reported-by: Dexuan Cui
    Tested-by: Dexuan Cui
    Signed-off-by: Dan Williams

    Dan Williams
     

30 Jan, 2019

3 commits

  • Add the Hyper-V _DSM command set to the white list of NVDIMM command
    sets.

    This command set is documented at http://www.uefi.org/RFIC_LIST
    (see "Virtual NVDIMM 0x1901").

    Signed-off-by: Dexuan Cui
    Reviewed-by: Michael Kelley
    Signed-off-by: Dan Williams

    Dexuan Cui
     
  • In the case of ND_CMD_CALL, we should also check out_obj->type.

    The patch uses out_obj->type, which is a short alias to
    out_obj->package.type.

    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command marshaling mechanism")
    Cc:
    Signed-off-by: Dexuan Cui
    Signed-off-by: Dan Williams

    Dexuan Cui
     
  • The implementation is broken in all the ways the unit test did not touch:

    1/ The local definition of in_buf and in_obj violated C99 initializer
    expectations for zeroing. By only initializing 2 out of the three
    struct members the compiler was free to zero-initialize the remaining
    entry even though the aliased location in the union was initialized.

    2/ The implementation made assumptions about the state of the 'smart'
    payload after command execution that are satisfied by
    acpi_nfit_ctl(), but not acpi_evaluate_dsm().

    3/ populate_shutdown_status() is skipped on Intel NVDIMMs due to the early
    return for skipping the common _LS{I,R,W} enabling.

    4/ The input length should be zero.

    This breakage was missed due to the unit test implementation only
    testing the case where nfit_intel_shutdown_status() returns a valid
    payload.

    Much of this complexity would be saved if acpi_nfit_ctl() could be used, but
    that currently requires a 'struct nvdimm *' argument and one is not created
    until later in the init process. The health result is needed before the device
    is created because the payload gates whether the nmemX/nfit/dirty_shutdown
    property is visible in sysfs.

    Cc:
    Fixes: 0ead11181fe0 ("acpi, nfit: Collect shutdown status")
    Reported-by: Dexuan Cui
    Reviewed-by: Dexuan Cui
    Signed-off-by: Dan Williams

    Dan Williams
     

22 Jan, 2019

3 commits

  • The _DSM function number validation only happens to succeed when the
    generic Linux command number translation corresponds with a
    DSM-family-specific function number. This breaks NVDIMM-N
    implementations that correctly implement _LSR, _LSW, and _LSI, but do
    not happen to publish support for DSM function numbers 4, 5, and 6.

    Recall that the support for _LS{I,R,W} family of methods results in the
    DIMM being marked as supporting those command numbers at
    acpi_nfit_register_dimms() time. The DSM function mask is only used for
    ND_CMD_CALL support of non-NVDIMM_FAMILY_INTEL devices.

    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command...")
    Cc:
    Link: https://github.com/pmem/ndctl/issues/78
    Reported-by: Sujith Pandel
    Tested-by: Sujith Pandel
    Reviewed-by: Vishal Verma
    Reviewed-by: Jeff Moyer
    Signed-off-by: Dan Williams

    Dan Williams
     
  • In preparation for using function number 0 as an error value, prevent it
    from being considered a valid function value by acpi_nfit_ctl().

    Cc:
    Cc: stuart hayes
    Fixes: e02fb7264d8a ("nfit: add Microsoft NVDIMM DSM command set...")
    Reported-by: Jeff Moyer
    Reviewed-by: Jeff Moyer
    Signed-off-by: Dan Williams

    Dan Williams
     
  • The following warning:

    ACPI0012:00: security event setup failed: -19

    ...is meant to capture exceptional failures of sysfs_get_dirent(),
    however it will also fail in the common case when security support is
    disabled. A few issues:

    1/ A dev_warn() report for a common case is too chatty
    2/ The setup of this notifier is generic, no need for it to be driven
    from the nfit driver, it can exist completely in the core.
    3/ If it fails for any reason besides security support being disabled,
    that's fatal and should abort DIMM activation. Userspace may hang if
    it never gets overwrite notifications.
    4/ The dirent needs to be released.

    Move the call to the core 'dimm' driver, make it conditional on security
    support being active, make it fatal for the exceptional case, add the
    missing sysfs_put() at device disable time.

    Fixes: 7d988097c546 ("...Add security DSM overwrite support")
    Reviewed-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dan Williams
     

15 Jan, 2019

1 commit


12 Jan, 2019

1 commit

  • Possible race accessing memdev structures after dropping the
    mutex. Dan Williams says this could race against another thread
    that is doing:

    # echo "ACPI0012:00" > /sys/bus/acpi/drivers/nfit/unbind

    Reported-by: Jane Chu
    Fixes: 23222f8f8dce ("acpi, nfit: Add function to look up nvdimm...")
    Signed-off-by: Tony Luck
    Signed-off-by: Dan Williams

    Tony Luck
     

09 Jan, 2019

3 commits

  • On arm64 little endian allyesconfig:

    drivers/acpi/nfit/intel.c:149:12: warning: unused function 'intel_security_unlock' [-Wunused-function]
    static int intel_security_unlock(struct nvdimm *nvdimm,
    ^
    drivers/acpi/nfit/intel.c:230:12: warning: unused function 'intel_security_erase' [-Wunused-function]
    static int intel_security_erase(struct nvdimm *nvdimm,
    ^
    drivers/acpi/nfit/intel.c:279:12: warning: unused function 'intel_security_query_overwrite' [-Wunused-function]
    static int intel_security_query_overwrite(struct nvdimm *nvdimm)
    ^
    drivers/acpi/nfit/intel.c:316:12: warning: unused function 'intel_security_overwrite' [-Wunused-function]
    static int intel_security_overwrite(struct nvdimm *nvdimm,
    ^
    4 warnings generated.

    Mark these functions as __maybe_unused because they are only used when
    CONFIG_X86 is set.

    Fixes: 4c6926a23b76 ("acpi/nfit, libnvdimm: Add unlock of nvdimm support for Intel DIMMs")
    Suggested-by: Dan Williams
    Signed-off-by: Nathan Chancellor
    Signed-off-by: Dan Williams

    Nathan Chancellor
     
  • The function to_acpi_nfit_desc and function to_acpi_desc
    do the same things,delete the function to_acpi_nfit_desc,
    and keep the inline function to_acpi_desc.

    Signed-off-by: Xiaochun Lee
    Signed-off-by: Dan Williams

    Xiaochun Lee
     
  • The header file "intel.h" is repeated here, So delete one.

    Signed-off-by: Xiaochun Lee
    Signed-off-by: Dan Williams

    Xiaochun Lee
     

07 Jan, 2019

1 commit

  • Persistent memory, as described by the ACPI NFIT (NVDIMM Firmware
    Interface Table), is the first known instance of a memory range
    described by a unique "target" proximity domain. Where "initiator" and
    "target" proximity domains is an approach that the ACPI HMAT
    (Heterogeneous Memory Attributes Table) uses to described the unique
    performance properties of a memory range relative to a given initiator
    (e.g. CPU or DMA device).

    Currently the numa-node for a /dev/pmemX block-device or /dev/daxX.Y
    char-device follows the traditional notion of 'numa-node' where the
    attribute conveys the closest online numa-node. That numa-node attribute
    is useful for cpu-binding and memory-binding processes *near* the
    device. However, when the memory range backing a 'pmem', or 'dax' device
    is onlined (memory hot-add) the memory-only-numa-node representing that
    address needs to be differentiated from the set of online nodes. In
    other words, the numa-node association of the device depends on whether
    you can bind processes *near* the cpu-numa-node in the offline
    device-case, or bind process *on* the memory-range directly after the
    backing address range is onlined.

    Allow for the case that platform firmware describes persistent memory
    with a unique proximity domain, i.e. when it is distinct from the
    proximity of DRAM and CPUs that are on the same socket. Plumb the Linux
    numa-node translation of that proximity through the libnvdimm region
    device to namespaces that are in device-dax mode. With this in place the
    proposed kmem driver [1] can optionally discover a unique numa-node
    number for the address range as it transitions the memory from an
    offline state managed by a device-driver to an online memory range
    managed by the core-mm.

    [1]: https://lore.kernel.org/lkml/20181022201317.8558C1D8@viggo.jf.intel.com

    Reported-by: Fan Du
    Cc: Michael Ellerman
    Cc: "Oliver O'Halloran"
    Cc: Dave Hansen
    Cc: Jérôme Glisse
    Reviewed-by: Yang Shi
    Signed-off-by: Dan Williams

    Dan Williams
     

28 Dec, 2018

1 commit


22 Dec, 2018

4 commits

  • With Intel DSM 1.8 [1] two new security DSMs are introduced. Enable/update
    master passphrase and master secure erase. The master passphrase allows
    a secure erase to be performed without the user passphrase that is set on
    the NVDIMM. The commands of master_update and master_erase are added to
    the sysfs knob in order to initiate the DSMs. They are similar in opeartion
    mechanism compare to update and erase.

    [1]: http://pmem.io/documents/NVDIMM_DSM_Interface-V1.8.pdf

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • Add support for the NVDIMM_FAMILY_INTEL "ovewrite" capability as
    described by the Intel DSM spec v1.7. This will allow triggering of
    overwrite on Intel NVDIMMs. The overwrite operation can take tens of
    minutes. When the overwrite DSM is issued successfully, the NVDIMMs will
    be unaccessible. The kernel will do backoff polling to detect when the
    overwrite process is completed. According to the DSM spec v1.7, the 128G
    NVDIMMs can take up to 15mins to perform overwrite and larger DIMMs will
    take longer.

    Given that overwrite puts the DIMM in an indeterminate state until it
    completes introduce the NDD_SECURITY_OVERWRITE flag to prevent other
    operations from executing when overwrite is happening. The
    NDD_WORK_PENDING flag is added to denote that there is a device reference
    on the nvdimm device for an async workqueue thread context.

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • Add support to issue a secure erase DSM to the Intel nvdimm. The
    required passphrase is acquired from an encrypted key in the kernel user
    keyring. To trigger the action, "erase " is written to the
    "security" sysfs attribute.

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • Add support to disable passphrase (security) for the Intel nvdimm. The
    passphrase used for disabling is pulled from an encrypted-key in the kernel
    user keyring. The action is triggered by writing "disable " to the
    sysfs attribute "security".

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     

14 Dec, 2018

4 commits

  • Add support to unlock the dimm via the kernel key management APIs. The
    passphrase is expected to be pulled from userspace through keyutils.
    The key management and sysfs attributes are libnvdimm generic.

    Encrypted keys are used to protect the nvdimm passphrase at rest. The
    master key can be a trusted-key sealed in a TPM, preferred, or an
    encrypted-key, more flexible, but more exposure to a potential attacker.

    Signed-off-by: Dave Jiang
    Co-developed-by: Dan Williams
    Reported-by: Randy Dunlap
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • Add support for freeze security on Intel nvdimm. This locks out any
    changes to security for the DIMM until a hard reset of the DIMM is
    performed. This is triggered by writing "freeze" to the generic
    nvdimm/nmemX "security" sysfs attribute.

    Signed-off-by: Dave Jiang
    Co-developed-by: Dan Williams
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • Some NVDIMMs, like the ones defined by the NVDIMM_FAMILY_INTEL command
    set, expose a security capability to lock the DIMMs at poweroff and
    require a passphrase to unlock them. The security model is derived from
    ATA security. In anticipation of other DIMMs implementing a similar
    scheme, and to abstract the core security implementation away from the
    device-specific details, introduce nvdimm_security_ops.

    Initially only a status retrieval operation, ->state(), is defined,
    along with the base infrastructure and definitions for future
    operations.

    Signed-off-by: Dave Jiang
    Co-developed-by: Dan Williams
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • The generated dimm id is needed for the sysfs attribute as well as being
    used as the identifier/description for the security key. Since it's
    constant and should never change, store it as a member of struct nvdimm.

    As nvdimm_create() continues to grow parameters relative to NFIT driver
    requirements, do not require other implementations to keep pace.
    Introduce __nvdimm_create() to carry the new parameters and keep
    nvdimm_create() with the long standing default api.

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     

11 Dec, 2018

1 commit


06 Dec, 2018

1 commit

  • A "short" ARS (address range scrub) instructs the platform firmware to
    return known errors. In contrast, a "long" ARS instructs platform
    firmware to arrange every data address on the DIMM to be read / checked
    for poisoned data.

    The conversion of the flags in commit d3abaf43bab8 "acpi, nfit: Fix
    Address Range Scrub completion tracking", changed the meaning of passing
    '0' to acpi_nfit_ars_rescan(). Previously '0' meant "not short", now '0'
    is ARS_REQ_SHORT. Pass ARS_REQ_LONG to restore the expected scrub-type
    behavior of user-initiated ARS sessions.

    Fixes: d3abaf43bab8 ("acpi, nfit: Fix Address Range Scrub completion tracking")
    Reported-by: Jacek Zloch
    Cc: Vishal Verma
    Reviewed-by: Dave Jiang
    Reviewed-by: Vishal Verma
    Signed-off-by: Dan Williams

    Dan Williams
     

05 Dec, 2018

1 commit

  • Add command definition for security commands defined in Intel DSM
    specification v1.8 [1]. This includes "get security state", "set
    passphrase", "unlock unit", "freeze lock", "secure erase", "overwrite",
    "overwrite query", "master passphrase enable/disable", and "master
    erase", . Since this adds several Intel definitions, move the relevant
    bits to their own header.

    These commands mutate physical data, but that manipulation is not cache
    coherent. The requirement to flush and invalidate caches makes these
    commands unsuitable to be called from userspace, so extra logic is added
    to detect and block these commands from being submitted via the ioctl
    command submission path.

    Lastly, the commands may contain sensitive key material that should not
    be dumped in a standard debug session. Update the nvdimm-command
    payload-dump facility to move security command payloads behind a
    default-off compile time switch.

    [1]: http://pmem.io/documents/NVDIMM_DSM_Interface-V1.8.pdf

    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang