mm, dax, pmem: introduce pfn_t
authorDan Williams <dan.j.williams@intel.com>
Sat, 16 Jan 2016 00:56:14 +0000 (16:56 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 16 Jan 2016 01:56:32 +0000 (17:56 -0800)
commit34c0fd540e79fb49ef9ce864dae1058cca265780
tree7f404f3a644322d0eca02b54daa228261ed24f39
parentba049e93aef7e8c571567088b1b73f4f5b99272a
mm, dax, pmem: introduce pfn_t

For the purpose of communicating the optional presence of a 'struct
page' for the pfn returned from ->direct_access(), introduce a type that
encapsulates a page-frame-number plus flags.  These flags contain the
historical "page_link" encoding for a scatterlist entry, but can also
denote "device memory".  Where "device memory" is a set of pfns that are
not part of the kernel's linear mapping by default, but are accessed via
the same memory controller as ram.

The motivation for this new type is large capacity persistent memory
that needs struct page entries in the 'memmap' to support 3rd party DMA
(i.e.  O_DIRECT I/O with a persistent memory source/target).  However,
we also need it in support of maintaining a list of mapped inodes which
need to be unmapped at driver teardown or freeze_bdev() time.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Dave Hansen <dave@sr71.net>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/powerpc/sysdev/axonram.c
drivers/block/brd.c
drivers/nvdimm/pmem.c
drivers/s390/block/dcssblk.c
fs/dax.c
include/linux/blkdev.h
include/linux/pfn.h
include/linux/pfn_t.h [new file with mode: 0644]
kernel/memremap.c