linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] "Device DAX" for persistent memory
@ 2016-05-08 22:35 Dan Williams
  2016-05-08 22:35 ` [PATCH 1/7] libnvdimm: cleanup nvdimm_namespace_common_probe(), kill 'host' Dan Williams
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Dan Williams @ 2016-05-08 22:35 UTC (permalink / raw)
  To: linux-nvdimm
  Cc: Dave Hansen, Dave Chinner, linux-kernel, Christoph Hellwig,
	linux-block, Jeff Moyer, Jan Kara, Andrew Morton, Ross Zwisler

Device DAX is the device-centric analogue of Filesystem DAX
(CONFIG_FS_DAX).  It allows memory ranges to be allocated and mapped
without need of an intervening file system or being bound to block
device semantics.  Device DAX is strict and predictable.  Specifically
this interface:

1/ Guarantees fault granularity with respect to a given page size (pte,
pmd, or pud) set at configuration time.

2/ Enforces deterministic behavior by being strict about what fault
scenarios are supported.

This first implementation, for persistent memory, is targeted at
applications like hypervisors and some databases that only need an
allocate + map mechanism from the kernel.  Later this mechanism can be
used to enable direct access to other performance/feature differentiated
memory ranges.

This series is built on "[PATCH 00/13] prep for device-dax, untangle
pfn-device setup" [1], posted at the end of March.

A libnvdimm pmem namespace can be switched from its default /dev/pmemX
(block device) interface to /dev/daxX.Y with the ndctl utility:

    ndctl create-namespace -m dax -e namespace0.0 -f

This implementation passes a basic setup, map, fault, and shutdown
sequence.

[1]: https://lists.01.org/pipermail/linux-nvdimm/2016-March/005086.html

---

Dan Williams (7):
      libnvdimm: cleanup nvdimm_namespace_common_probe(), kill 'host'
      libnvdimm, dax: introduce device-dax infrastructure
      libnvdimm, dax: reserve space to store labels for device-dax
      libnvdimm, dax: record the specified alignment of a dax-device instance
      /dev/dax, pmem: direct access to persistent memory
      /dev/dax, core: file operations and dax-mmap
      Revert "block: enable dax for raw block devices"


 block/ioctl.c                       |   32 --
 drivers/Kconfig                     |    2 
 drivers/Makefile                    |    1 
 drivers/dax/Kconfig                 |   25 ++
 drivers/dax/Makefile                |    4 
 drivers/dax/dax.c                   |  543 +++++++++++++++++++++++++++++++++++
 drivers/dax/dax.h                   |   24 ++
 drivers/dax/pmem.c                  |  168 +++++++++++
 drivers/nvdimm/Kconfig              |   13 +
 drivers/nvdimm/Makefile             |    1 
 drivers/nvdimm/bus.c                |    4 
 drivers/nvdimm/claim.c              |    2 
 drivers/nvdimm/dax_devs.c           |   99 ++++++
 drivers/nvdimm/namespace_devs.c     |   38 ++
 drivers/nvdimm/nd-core.h            |    1 
 drivers/nvdimm/nd.h                 |   25 ++
 drivers/nvdimm/pfn.h                |    4 
 drivers/nvdimm/pfn_devs.c           |  116 +++++--
 drivers/nvdimm/region.c             |    2 
 drivers/nvdimm/region_devs.c        |   29 ++
 fs/block_dev.c                      |   96 ++----
 include/linux/fs.h                  |    8 -
 include/uapi/linux/fs.h             |    1 
 include/uapi/linux/ndctl.h          |    2 
 mm/huge_memory.c                    |    1 
 mm/hugetlb.c                        |    1 
 tools/testing/nvdimm/Kbuild         |   10 +
 tools/testing/nvdimm/config_check.c |    2 
 28 files changed, 1094 insertions(+), 160 deletions(-)
 create mode 100644 drivers/dax/Kconfig
 create mode 100644 drivers/dax/Makefile
 create mode 100644 drivers/dax/dax.c
 create mode 100644 drivers/dax/dax.h
 create mode 100644 drivers/dax/pmem.c
 create mode 100644 drivers/nvdimm/dax_devs.c

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-05-09 20:40 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-08 22:35 [PATCH 0/7] "Device DAX" for persistent memory Dan Williams
2016-05-08 22:35 ` [PATCH 1/7] libnvdimm: cleanup nvdimm_namespace_common_probe(), kill 'host' Dan Williams
2016-05-09  7:55   ` Johannes Thumshirn
2016-05-08 22:35 ` [PATCH 2/7] libnvdimm, dax: introduce device-dax infrastructure Dan Williams
2016-05-08 22:35 ` [PATCH 3/7] libnvdimm, dax: reserve space to store labels for device-dax Dan Williams
2016-05-08 22:35 ` [PATCH 4/7] libnvdimm, dax: record the specified alignment of a dax-device instance Dan Williams
2016-05-08 22:35 ` [PATCH 5/7] /dev/dax, pmem: direct access to persistent memory Dan Williams
2016-05-08 22:35 ` [PATCH 6/7] /dev/dax, core: file operations and dax-mmap Dan Williams
2016-05-08 22:35 ` [PATCH 7/7] Revert "block: enable dax for raw block devices" Dan Williams
2016-05-09 12:57 ` [PATCH 0/7] "Device DAX" for persistent memory Christoph Hellwig
2016-05-09 20:40   ` Dan Williams

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).