mbox series

[GIT,PULL] libnvdimm for v5.7

Message ID CAPcyv4gKr57qNnMEupjcjQmH9Vy_iZuLPE1VA36QAkKhzEbzSA@mail.gmail.com (mailing list archive)
State Mainlined
Commit 9b06860d7c1f1f4cb7d70f92e47dfa4a91bd5007
Headers show
Series [GIT,PULL] libnvdimm for v5.7 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-5.7

Message

Dan Williams April 7, 2020, 8:12 p.m. UTC
Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-for-5.7

...to receive the libnvdimm and dax update for this cycle. There were
multiple touches outside of drivers/nvdimm/ this round to add cross
arch compatibility to the devm_memremap_pages() interface, enhance
numa information for persistent memory ranges, and add a
zero_page_range() dax operation. This cycle I switched from the
patchwork api to Konstantin's b4 script for collecting tags (from x86,
PowerPC, filesystem, and device-mapper folks), and everything looks to
have gone ok there. This has all appeared in -next with no reported
issues.

Given the current environment where one might need to step away on
short notice I thought it would be a good idea to highlight to you and
others a backup maintainer for libnvdimm. Vishal, has agreed to step
in if circumstances make me non-responsive for multiple days. Not
expecting anything, just being proactive.

---

The following changes since commit 11a48a5a18c63fd7621bb050228cebf13566e4d8:

  Linux 5.6-rc2 (2020-02-16 13:16:59 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-for-5.7

for you to fetch changes up to f6d2b802f80d0ca89ee1f51c1781b3f79cdb25d5:

  Merge branch 'for-5.7/libnvdimm' into libnvdimm-for-next (2020-04-02
19:55:17 -0700)

----------------------------------------------------------------
libnvdimm for 5.7

- Add support for region alignment configuration and enforcement to
  fix compatibility across architectures and PowerPC page size
  configurations.

- Introduce 'zero_page_range' as a dax operation. This facilitates
  filesystem-dax operation without a block-device.

- Introduce phys_to_target_node() to facilitate drivers that want to
  know resulting numa node if a given reserved address range was
  onlined.

- Advertise a persistence-domain for of_pmem and papr_scm. The
  persistence domain indicates where cpu-store cycles need to reach in
  the platform-memory subsystem before the platform will consider them
  power-fail protected.

- Promote numa_map_to_online_node() to a cross-kernel generic facility.

- Save x86 numa information to allow for node-id lookups for reserved
  memory ranges, deploy that capability for the e820-pmem driver.

- Pick up some miscellaneous minor fixes, that missed v5.6-final,
  including a some smatch reports in the ioctl path and some unit test
  compilation fixups.

- Fixup some flexible-array declarations.

----------------------------------------------------------------
Aneesh Kumar K.V (1):
      libnvdimm: Update persistence domain value for of_pmem and papr_scm device

Dan Carpenter (2):
      acpi/nfit: improve bounds checking for 'func'
      libnvdimm: Out of bounds read in __nd_ioctl()

Dan Williams (15):
      ACPI: NUMA: Up-level "map to online node" functionality
      mm/numa: Skip NUMA_NO_NODE and online nodes in numa_map_to_online_node()
      powerpc/papr_scm: Switch to numa_map_to_online_node()
      x86/mm: Introduce CONFIG_NUMA_KEEP_MEMINFO
      x86/NUMA: Provide a range-to-target_node lookup facility
      libnvdimm/e820: Retrieve and populate correct 'target_node' info
      mm/memremap_pages: Kill unused __devm_memremap_pages()
      mm/memremap_pages: Introduce memremap_compat_align()
      libnvdimm/pfn: Prevent raw mode fallback if pfn-infoblock valid
      libnvdimm/namespace: Enforce memremap_compat_align()
      libnvdimm/region: Introduce NDD_LABELING
      libnvdimm/region: Introduce an 'align' attribute
      Merge branch 'for-5.6/libnvdimm-fixes' into libnvdimm-for-next
      Merge branch 'for-5.7/numa' into libnvdimm-for-next
      Merge branch 'for-5.7/libnvdimm' into libnvdimm-for-next

Gustavo A. R. Silva (3):
      ACPI: NFIT: Replace zero-length array with flexible-array member
      libnvdimm/label: Replace zero-length array with flexible-array member
      libnvdimm/region: Replace zero-length array with flexible-array member

Jan Kara (1):
      tools/testing/nvdimm: Fix compilation failure without
CONFIG_DEV_DAX_PMEM_COMPAT

Lukas Bulwahn (1):
      MAINTAINERS: clarify maintenance of nvdimm testing tool

Santosh Sivaraj (1):
      tools/test/nvdimm: Fix out of tree build

Vivek Goyal (7):
      pmem: Add functions for reading/writing page to/from pmem
      dax, pmem: Add a dax operation zero_page_range
      s390,dcssblk,dax: Add dax zero_page_range operation to dcssblk driver
      dm,dax: Add dax zero_page_range operation
      dax: Use new dax zero page method for zeroing a page
      dax,iomap: Add helper dax_iomap_zero() to zero a range
      dax: Move mandatory ->zero_page_range() check in alloc_dax()

YueHaibing (1):
      libnvdimm/region: Fix build error

 MAINTAINERS                               |   1 +
 arch/powerpc/Kconfig                      |   1 +
 arch/powerpc/mm/ioremap.c                 |  21 +++++
 arch/powerpc/platforms/pseries/papr_scm.c |  27 ++-----
 arch/x86/Kconfig                          |   1 +
 arch/x86/mm/numa.c                        |  67 +++++++++++----
 drivers/acpi/nfit/core.c                  |  14 ++--
 drivers/acpi/nfit/nfit.h                  |  13 +--
 drivers/acpi/numa/srat.c                  |  41 ----------
 drivers/dax/bus.c                         |   4 +-
 drivers/dax/super.c                       |  28 ++++++-
 drivers/md/dm-linear.c                    |  18 +++++
 drivers/md/dm-log-writes.c                |  17 ++++
 drivers/md/dm-stripe.c                    |  23 ++++++
 drivers/md/dm.c                           |  32 +++++++-
 drivers/nvdimm/bus.c                      |   6 +-
 drivers/nvdimm/dimm.c                     |   2 +-
 drivers/nvdimm/dimm_devs.c                |  95 +++++++++++++++++-----
 drivers/nvdimm/e820.c                     |  18 +----
 drivers/nvdimm/label.h                    |   2 +-
 drivers/nvdimm/namespace_devs.c           |  28 ++++++-
 drivers/nvdimm/nd.h                       |   7 +-
 drivers/nvdimm/of_pmem.c                  |   4 +-
 drivers/nvdimm/pfn.h                      |  12 +++
 drivers/nvdimm/pfn_devs.c                 |  40 +++++++--
 drivers/nvdimm/pmem.c                     | 101 ++++++++++++++---------
 drivers/nvdimm/region_devs.c              | 130 ++++++++++++++++++++++++++----
 drivers/s390/block/dcssblk.c              |  20 ++++-
 fs/dax.c                                  |  59 ++++++--------
 fs/iomap/buffered-io.c                    |   9 +--
 include/linux/acpi.h                      |  23 +++++-
 include/linux/dax.h                       |  21 ++---
 include/linux/device-mapper.h             |   3 +
 include/linux/io.h                        |   2 -
 include/linux/libnvdimm.h                 |   2 +
 include/linux/memremap.h                  |   8 ++
 include/linux/mmzone.h                    |   1 +
 include/linux/numa.h                      |  30 ++++++-
 lib/Kconfig                               |   3 +
 mm/Kconfig                                |   5 ++
 mm/mempolicy.c                            |  26 ++++++
 mm/memremap.c                             |  23 ++++++
 tools/testing/nvdimm/Kbuild               |   4 +-
 tools/testing/nvdimm/test/Kbuild          |   4 +-
 tools/testing/nvdimm/test/nfit.c          |   2 +
 45 files changed, 737 insertions(+), 261 deletions(-)

Comments

Linus Torvalds April 9, 2020, 4:11 a.m. UTC | #1
On Tue, Apr 7, 2020 at 1:12 PM Dan Williams <dan.j.williams@intel.com> wrote:
>
>       mm/memremap_pages: Introduce memremap_compat_align()

Why is this an exported function that just returns a constant?

Why isn't it just a #define (or inline) in a header file?

Yes, yes, it would need to be conditional on not having that
CONFIG_ARCH_HAS_MEMREMAP_COMPAT_ALIGN, but it does look strange.

I've pulled it, since it doesn't matter that much, but I find it silly
to have full-fledged functions - and exported them GPL-only - to
return a constant. Crazy.

             Linus
pr-tracker-bot@kernel.org April 9, 2020, 4:55 a.m. UTC | #2
The pull request you sent on Tue, 7 Apr 2020 13:12:41 -0700:

> git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/libnvdimm-for-5.7

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/9b06860d7c1f1f4cb7d70f92e47dfa4a91bd5007

Thank you!
Dan Williams April 9, 2020, 5:14 a.m. UTC | #3
On Wed, Apr 8, 2020 at 9:11 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Tue, Apr 7, 2020 at 1:12 PM Dan Williams <dan.j.williams@intel.com> wrote:
> >
> >       mm/memremap_pages: Introduce memremap_compat_align()
>
> Why is this an exported function that just returns a constant?
>
> Why isn't it just a #define (or inline) in a header file?
>
> Yes, yes, it would need to be conditional on not having that
> CONFIG_ARCH_HAS_MEMREMAP_COMPAT_ALIGN, but it does look strange.
>
> I've pulled it, since it doesn't matter that much, but I find it silly
> to have full-fledged functions - and exported them GPL-only - to
> return a constant. Crazy.

Yes. tl;dr I gave up after failing to unwind a header dependency chain [1].

The source of the trouble was trying to find an existing top-level
header file that included an asm local version, but also needed to
include mmzone.h for the definition of SUBSECTION_SIZE.
include/linux/io.h fit that requirement, pulling in mmzone.h there
proved more difficult than my header unwinding skills could
accomplish.

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm.git/commit/?id=c990ae9376c15f40aff2f61f42a71be5b81f9ee1