Changes since v1 :
1/ Several simplifications from Christoph including dropping the __pfn_t
dependency, and merging ZONE_DEVICE into the base arch_add_memory()
2/ Drop the deeper changes to the memory hotplug code that enabled
allocating the backing 'struct page' array from pmem (struct
vmem_altmap). This functionality is still needed when large capacity
PMEM devices arrive. However, for now we can take this simple step to
enable struct page mapping in RAM and enable it by default for small
capacity CONFIG_X86_PMEM_LEGACY devices.
3/ A rework of the PMEM api to allow usage of the non-temporal
memcpy_to_pmem() implementation even on platforms without pcommit
When we last left this debate  it was becoming clear that the
'page-less' approach left too many I/O scenarios off the table. The
page-less enabling is still useful for avoiding the overhead of struct
page where it is not needed, but in the end, page-backed persistent
memory seems to be a requirement. We confirmed as much at the recently
concluded Persistent Memory Microconference at Linux Plumbers.
Whereas the initial RFC of this functionality enabled userspace to pick
whether struct page is allocated from RAM or PMEM. This new version
only enables RAM-backed for now. This is suitable for existing NVDIMM
devices and a starting point to incrementally build "allocate struct
page from PMEM" support.
Christoph Hellwig (2):
mm: move __phys_to_pfn and __pfn_to_phys to asm/generic/memory_model.h
Dan Williams (7):
dax: drop size parameter to ->direct_access()
mm: ZONE_DEVICE for "device memory"
x86, pmem: push fallback handling to arch code
libnvdimm, pfn: 'struct page' provider infrastructure
libnvdimm, pmem: 'struct page' for pmem
libnvdimm, pmem: direct map legacy pmem by default
devm_memremap_pages: protect against pmem device unbind
arch/arm/include/asm/memory.h | 6 -
arch/arm64/include/asm/memory.h | 6 -
arch/ia64/mm/init.c | 4
arch/powerpc/mm/mem.c | 4
arch/powerpc/sysdev/axonram.c | 2
arch/s390/mm/init.c | 2
arch/sh/mm/init.c | 5 -
arch/tile/mm/init.c | 2
arch/unicore32/include/asm/memory.h | 6 -
arch/x86/include/asm/io.h | 2
arch/x86/include/asm/pmem.h | 41 ++++
arch/x86/mm/init_32.c | 4
arch/x86/mm/init_64.c | 4
drivers/acpi/nfit.c | 2
drivers/block/brd.c | 6 -
drivers/nvdimm/Kconfig | 23 ++
drivers/nvdimm/Makefile | 2
drivers/nvdimm/btt.c | 6 -
drivers/nvdimm/btt_devs.c | 172 +-----------------
drivers/nvdimm/claim.c | 201 +++++++++++++++++++++
drivers/nvdimm/e820.c | 1
drivers/nvdimm/namespace_devs.c | 62 +++++-
drivers/nvdimm/nd-core.h | 9 +
drivers/nvdimm/nd.h | 59 ++++++
drivers/nvdimm/pfn.h | 35 ++++
drivers/nvdimm/pfn_devs.c | 337 +++++++++++++++++++++++++++++++++++
drivers/nvdimm/pmem.c | 220 +++++++++++++++++++++--
drivers/nvdimm/region.c | 2
drivers/nvdimm/region_devs.c | 20 ++
drivers/s390/block/dcssblk.c | 4
fs/block_dev.c | 2
include/asm-generic/memory_model.h | 6 +
include/asm-generic/pmem.h | 72 +++++++
include/linux/blkdev.h | 2
include/linux/io.h | 57 ++++++
include/linux/libnvdimm.h | 4
include/linux/memory_hotplug.h | 5 -
include/linux/mmzone.h | 23 ++
include/linux/pmem.h | 73 +-------
kernel/memremap.c | 136 ++++++++++++++
mm/Kconfig | 17 ++
mm/memory_hotplug.c | 14 +
mm/page_alloc.c | 3
tools/testing/nvdimm/Kbuild | 3
tools/testing/nvdimm/test/iomap.c | 13 +
45 files changed, 1369 insertions(+), 310 deletions(-)
create mode 100644 drivers/nvdimm/claim.c
create mode 100644 drivers/nvdimm/pfn.h
create mode 100644 drivers/nvdimm/pfn_devs.c
create mode 100644 include/asm-generic/pmem.h
Linda Knippers noticed that commit bbab37ddc20b (block: Add support
for DAX reads/writes to block devices) caused a regression in mkfs.xfs.
Further investigation also uncovered issues related to misaligned
partitions. This patch set addresses the two issues.
[PATCH 1/2] dax: fix O_DIRECT I/O to the last block of a blockdev
[PATCH 2/2] blockdev: don't set S_DAX for misaligned partitions
fs/block_dev.c | 7 +++++++
fs/dax.c | 3 ++-
2 files changed, 9 insertions(+), 1 deletion(-)
All High PR Do-follow Links in one Package!
Only Dofollow most efficient backlinks.
Our High PR Do follow package washes away all those
worries you might have about recent Google updates.
- 40 High PR 8-9 backIinks.
- 20 PR5-9 EDU dofollow backlinks
- 150 High PR dofollow - actual page High PR
- 300 pr4 to pr8 dofollow angela backlinks
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
We create a profile for you on high Page Rank websites
and add a link to your website in each profile.
These links are permanent and are never removed.
- Submission to blogs with Page Rank 5-7
- Permanent One-way Links
- Ownership of all the accounts created
- Complete in 10 business days
- Detailed Submission Report
We offer different packages at different price.
For Full Details please read the attached .html file
Unsubscribe Option available on the footer of our website
We welcome you to DIAMOND Bank Plc.
How are you today? Hope all is well with you and family? You may not understand why this email came to you. We have been having a meeting for the passed 7
months which ended 2 days ago with the then secretary to the UNITED NATIONS.
This email is to all the people that have been scammed in any part of the world, the UNITED NATIONS have agreed to compensate them with the sum of USD $4,850,000
(Four Million Eight hundred and fifty thousand United State Dollars Only), This also includes every foreign contractors that may have not received their contract sum, and people that
have had an unfinished transaction or international businesses that failed due to Government problems etc.
We found your name in our list and that is why we are contacting you, this has been agreed upon and have been signed.
You are advised to contact Mr.Benjamin Michael of DIAMOND BANK NIGERIA PLC, as he is our representative in Nigeria, contact him immediately for your
payment of USD $4,850,000
(Four Million Eight hundred and fifty thousand United State Dollars Only)which way you need the fund to be delivered. So he will send it to you and you
can clear it in any bank of your choice.
You are advice to get in contact with Mr.Benjamin Michael and provide him with below information.
Your Full Name:
Contact Home/Cell Phone:
A Scan Copy of your Identity:
Person to Contact Mr.Benjamin Michael
Thanks and God bless you and your family.
Hoping to hear from you as soon as you cash your Fund.
Making the world a better place.
Mr. Ban Ki-Moon
UN Secretary General
ARCH_MEMREMAP_PMEM is defined on x86_64 only per ARCH_HAS_PMEM_API.
The following compile error in __nfit_spa_map() was observed on
x86_32 as it refers ARCH_MEMREMAP_PMEM without #ifdef.
drivers/acpi/nfit.c:1205:8: error: 'ARCH_MEMREMAP_PMEM'
undeclared (first use in this function)
Fix it by defining ARCH_MEMREMAP_PMEM to MEMREMAP_WT in <linux/pmem.h>
when CONFIG_ARCH_HAS_PMEM_API is not set, i.e. x86_32.
Remove '#ifdef ARCH_MEMREMAP_PMEM's that are no longer necessary
with this change.
Also remove the redundant definition of ARCH_MEMREMAP_PMEM in
Signed-off-by: Toshi Kani <toshi.kani(a)hp.com>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Cc: Ross Zwisler <ross.zwisler(a)linux.intel.com>
Cc: Christoph Hellwig <hch(a)lst.de>
Apply on top of libnvdimm-for-next of the nvdimm tree.
arch/x86/include/asm/pmem.h | 2 --
drivers/nvdimm/namespace_devs.c | 4 ----
include/linux/pmem.h | 6 +-----
3 files changed, 1 insertion(+), 11 deletions(-)
diff --git a/arch/x86/include/asm/pmem.h b/arch/x86/include/asm/pmem.h
index 5c8c753..5111f1f 100644
@@ -18,8 +18,6 @@
-#define ARCH_MEMREMAP_PMEM MEMREMAP_WB
#define ARCH_MEMREMAP_PMEM MEMREMAP_WB
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 0955b2c..6b40e1c 100644
@@ -90,11 +90,7 @@ bool pmem_should_map_pages(struct device *dev)
if (is_nd_pfn(dev) || is_nd_btt(dev))
return ARCH_MEMREMAP_PMEM == MEMREMAP_WB;
- return false;
diff --git a/include/linux/pmem.h b/include/linux/pmem.h
index ebf95a6..04eefc6 100644
@@ -19,6 +19,7 @@
+#define ARCH_MEMREMAP_PMEM MEMREMAP_WT
* These are simply here to enable compilation, all call sites gate
* calling these symbols with arch_has_pmem_api() and redirect to the
@@ -129,13 +130,8 @@ static inline void default_clear_pmem(void __pmem *addr, size_t size)
static inline void __pmem *memremap_pmem(struct device *dev,
resource_size_t offset, unsigned long size)
return (void __pmem *) devm_memremap(dev, offset, size,
- return (void __pmem *) devm_memremap(dev, offset, size,