On Mon, Mar 21, 2016 at 12:37 PM, Jerry Hoemann <jerry.hoemann(a)hpe.com> wrote:
The NVDIMM code in the kernel supports an IOCTL interface to user
space based upon the Intel Example DSM:
http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
This interface cannot be used by other NVDIMM DSMs that support
incompatible functions.
An alternative DSM specification for Type N DSM being developed
by Hewlett Packard Enterprise can be found at:
https://github.com/HewlettPackard/hpe-nvm/tree/master/Documentation
These links should appear in the patch changelog that uses details
from the given specification. Otherwise useful information like this
is simply thrown away since the cover letter of a patch series is not
stored in the git history.
To accommodate multiple and conflicting DSM specifications, this
patch
set adds a generic "pass-thru" IOCTL interface which is not tied to
a particular DSM.
A new _IOC_NR ND_CMD_CALL == "10" is added for the pass thru call.
The new data structure nd_cmd_pkg serves as a wrapper for the
pass-thru calls. This wrapper supplies the data that the kernel
needs to make the _DSM call.
Unlike the definitions of the _DSM functions themselves, the nd_cmd_pkg
provides the calling information (input/output sizes) in an uniform
manner making the kernel marshaling of the arguments straight
forward.
This shifts the marshaling burden from the kernel to the user
space application while still permitting the kernel to internally
call _DSM functions.
The kernel functions __nd_ioctl and acpi_nfit_ctl were modified
to accommodate ND_CMD_CALL.
I have applied the first 4 patches with some fixups to the change log
and squashing the patch4 into patch2. Please base the next revision
of this series on top of the for-4.7/dsm branch:
https://git.kernel.org/cgit/linux/kernel/git/djbw/nvdimm.git/log/?h=for-4...