linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/17] replace pcommit with ADR or directed flushing
@ 2016-07-10  3:24 Dan Williams
  2016-07-10  3:24 ` [PATCH v2 01/17] nfit: always associate flush hints Dan Williams
                   ` (16 more replies)
  0 siblings, 17 replies; 32+ messages in thread
From: Dan Williams @ 2016-07-10  3:24 UTC (permalink / raw)
  To: linux-nvdimm
  Cc: Xiao Guangrong, linux-acpi, Peter Zijlstra, linux-kernel, x86,
	Adrian Hunter, Arnaldo Carvalho de Melo, hch, Alexander Shishkin,
	Ingo Molnar, Andy Lutomirski, Josh Poimboeuf, linux-fsdevel,
	Paolo Bonzini, Thomas Gleixner, Borislav Petkov, H. Peter Anvin,
	Ross Zwisler

Changes since v1 [1]:

1/ Move flush address data from nvdimm_drvdata to nd_region_data (Greg,
   Toshi)

2/ Add more detail to cover letter and patch descriptions (Linda, Jeff)

3/ Account for s/REQ_FLUSH/REQ_PREFLUSH/ rename pending in -next.

4/ Add a directed flush at pmem ->remove() and ->shutdown() time.

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

---

The pcommit instruction, which has not shipped on any product, is
deprecated. Instead, the expectation is that platforms implement either
ADR, or provide one or more flush addresses per nvdimm. ADR
(Asynchronous DRAM Refresh) flushes data in posted write buffers to the
memory controller on a power-fail event. Flush addresses are defined in
ACPI 6.x as an NVDIMM Firmware Interface Table (NFIT) sub-structure:
"Flush Hint Address Structure". A flush hint is an mmio address that
when written and fenced assures that all previous posted writes
targeting a given dimm have been flushed to media.

Code paths that previously called wmb_pmem() instead must arrange for a
flush request to be sent to the pmem driver. Towards this end, the pmem
driver is converted to advertise itself as having a write cache to
indicate to a filesystem that a flush request must occur before writes
are guaranteed to be on media.  See "[PATCH v2 08/17] libnvdimm:
introduce nvdimm_flush() and nvdimm_has_flush()" for details.

---

Dan Williams (17):
      nfit: always associate flush hints
      nfit: don't override return value of nfit_mem_init
      libnvdimm: introduce devm_nvdimm_memremap(), convert nfit_spa_map() users
      libnvdimm, nfit: remove nfit_spa_map() infrastructure
      libnvdimm, nfit: move flush hint mapping to region-device driver-data
      tools/testing/nvdimm: simulate multiple flush hints per-dimm
      libnvdimm: keep region data alive over namespace removal
      libnvdimm: introduce nvdimm_flush() and nvdimm_has_flush()
      libnvdimm: cycle flush hints
      libnvdimm, pmem: use REQ_FUA, REQ_FLUSH for nvdimm_flush()
      libnvdimm, pmem: flush posted-write queues on shutdown
      fs/dax: remove wmb_pmem()
      libnvdimm, pmem: use nvdimm_flush() for namespace I/O writes
      pmem: kill wmb_pmem()
      Revert "KVM: x86: add pcommit support"
      x86/insn: remove pcommit
      pmem: kill __pmem address space


 Documentation/filesystems/Locking                  |    2 
 arch/powerpc/sysdev/axonram.c                      |    4 
 arch/x86/include/asm/cpufeatures.h                 |    1 
 arch/x86/include/asm/pmem.h                        |   77 ++-----
 arch/x86/include/asm/special_insns.h               |   46 ----
 arch/x86/include/asm/vmx.h                         |    1 
 arch/x86/include/uapi/asm/vmx.h                    |    4 
 arch/x86/kvm/cpuid.c                               |    2 
 arch/x86/kvm/cpuid.h                               |    8 -
 arch/x86/kvm/vmx.c                                 |   32 ---
 arch/x86/lib/x86-opcode-map.txt                    |    2 
 drivers/acpi/nfit.c                                |  230 +++-----------------
 drivers/acpi/nfit.h                                |   25 --
 drivers/block/brd.c                                |    4 
 drivers/nvdimm/bus.c                               |   16 +
 drivers/nvdimm/claim.c                             |    2 
 drivers/nvdimm/core.c                              |  122 +++++++++++
 drivers/nvdimm/dimm_devs.c                         |    5 
 drivers/nvdimm/nd-core.h                           |    4 
 drivers/nvdimm/nd.h                                |   10 +
 drivers/nvdimm/pmem.c                              |   59 ++++-
 drivers/nvdimm/pmem.h                              |    4 
 drivers/nvdimm/region.c                            |   19 +-
 drivers/nvdimm/region_devs.c                       |  148 ++++++++++++-
 drivers/s390/block/dcssblk.c                       |    6 -
 fs/dax.c                                           |   13 -
 include/linux/blkdev.h                             |    6 -
 include/linux/compiler.h                           |    2 
 include/linux/libnvdimm.h                          |   16 +
 include/linux/nd.h                                 |    3 
 include/linux/pmem.h                               |  117 ++--------
 scripts/checkpatch.pl                              |    1 
 tools/objtool/arch/x86/insn/x86-opcode-map.txt     |    2 
 tools/perf/arch/x86/tests/insn-x86-dat-32.c        |    2 
 tools/perf/arch/x86/tests/insn-x86-dat-64.c        |    2 
 tools/perf/arch/x86/tests/insn-x86-dat-src.c       |    4 
 .../perf/util/intel-pt-decoder/x86-opcode-map.txt  |    2 
 tools/testing/nvdimm/pmem-dax.c                    |    2 
 tools/testing/nvdimm/test/nfit.c                   |   55 +++--
 39 files changed, 505 insertions(+), 555 deletions(-)

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

end of thread, other threads:[~2016-07-23  7:49 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-10  3:24 [PATCH v2 00/17] replace pcommit with ADR or directed flushing Dan Williams
2016-07-10  3:24 ` [PATCH v2 01/17] nfit: always associate flush hints Dan Williams
2016-07-10  3:24 ` [PATCH v2 02/17] nfit: don't override return value of nfit_mem_init Dan Williams
2016-07-10  3:24 ` [PATCH v2 03/17] libnvdimm: introduce devm_nvdimm_memremap(), convert nfit_spa_map() users Dan Williams
2016-07-10  5:30   ` kbuild test robot
2016-07-12 22:22   ` [PATCH v3] " Dan Williams
2016-07-10  3:24 ` [PATCH v2 04/17] libnvdimm, nfit: remove nfit_spa_map() infrastructure Dan Williams
2016-07-10  3:24 ` [PATCH v2 05/17] libnvdimm, nfit: move flush hint mapping to region-device driver-data Dan Williams
2016-07-10  3:25 ` [PATCH v2 06/17] tools/testing/nvdimm: simulate multiple flush hints per-dimm Dan Williams
2016-07-10  3:25 ` [PATCH v2 07/17] libnvdimm: keep region data alive over namespace removal Dan Williams
2016-07-10  3:25 ` [PATCH v2 08/17] libnvdimm: introduce nvdimm_flush() and nvdimm_has_flush() Dan Williams
2016-07-10  4:47   ` kbuild test robot
2016-07-10  5:01     ` Dan Williams
2016-07-11  3:48       ` Li, Philip
2016-07-12 22:25   ` [PATCH v3] " Dan Williams
2016-07-10  3:25 ` [PATCH v2 09/17] libnvdimm: cycle flush hints Dan Williams
2016-07-10  3:25 ` [PATCH v2 10/17] libnvdimm, pmem: use REQ_FUA, REQ_FLUSH for nvdimm_flush() Dan Williams
2016-07-12 22:26   ` [PATCH v3] " Dan Williams
2016-07-13 19:46     ` Kani, Toshimitsu
2016-07-10  3:25 ` [PATCH v2 11/17] libnvdimm, pmem: flush posted-write queues on shutdown Dan Williams
2016-07-10  3:25 ` [PATCH v2 12/17] fs/dax: remove wmb_pmem() Dan Williams
2016-07-10  3:25 ` [PATCH v2 13/17] libnvdimm, pmem: use nvdimm_flush() for namespace I/O writes Dan Williams
2016-07-10  3:25 ` [PATCH v2 14/17] pmem: kill wmb_pmem() Dan Williams
2016-07-10  3:25 ` [PATCH v2 15/17] Revert "KVM: x86: add pcommit support" Dan Williams
2016-07-10  3:25 ` [PATCH v2 16/17] x86/insn: remove pcommit Dan Williams
2016-07-12 14:57   ` Peter Zijlstra
2016-07-12 22:12     ` Dan Williams
2016-07-22 15:55       ` Dan Williams
2016-07-22 16:52         ` Ingo Molnar
2016-07-23  0:54           ` Dan Williams
2016-07-23  7:49             ` Ingo Molnar
2016-07-10  3:25 ` [PATCH v2 17/17] pmem: kill __pmem address space 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).