[PATCH 0/3] Add NUMA support for NVDIMM devices
by Toshi Kani
Since NVDIMMs are installed on memory slots, they expose the NUMA
topology of a platform. This patchset adds support of sysfs
'numa_node' to the NVDIMM devices under /sys/bus/nd/devices.
With this change, numactl(8) accepts 'block:' and 'file:' paths of
pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
Here is a result of fio benchmark to ext4/dax on pmem0 using numactl
on an HP DL380 with 2 sockets; pmem0 on node 0, and pmem1 on node 1.
Local [1] : 4098.3MB/s
Remote [2]: 3718.4MB/s
[1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio <fs-on-pmem0>
[2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio <fs-on-pmem0>
Patch 1/3-2/3 apply on top of the acpica branch of the pm tree.
Patch 3/3 applies on top of Dan Williams's v5 patch series of
"libnvdimm: non-volatile memory devices".
---
Toshi Kani (3):
1/3 acpi: Fix acpi_map_pxm_to_node() to handle numa_off
2/3 acpi: Add export to acpi_map_pxm_to_node()
3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices
---
drivers/acpi/nfit.c | 2 ++
drivers/acpi/numa.c | 13 ++++++++++---
drivers/nvdimm/btt.c | 2 ++
drivers/nvdimm/bus.c | 12 ++++++++++++
drivers/nvdimm/nd.h | 1 +
drivers/nvdimm/region.c | 1 +
drivers/nvdimm/region_devs.c | 1 +
include/linux/acpi.h | 5 +++++
include/linux/libnvdimm.h | 1 +
9 files changed, 35 insertions(+), 3 deletions(-)
5 years, 7 months
A l e x a - R a n k - B o o s t e r
by SEO Tools
If the goal is to monetize your website, then improve
your Alexa Ranking could probably be the way to go.
The lower your Alexa ranking the better for your website.
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 7 months
[Linux-nvdimm] [PATCH v2 00/10] evacuate struct page from the block layer, introduce __pfn_t
by Dan Williams
Changes since v1 [1]:
1/ added include/asm-generic/pfn.h for the __pfn_t definition and helpers.
2/ added kmap_atomic_pfn_t()
3/ rebased on v4.1-rc2
[1]: http://marc.info/?l=linux-kernel&m=142653770511970&w=2
---
A lead in note, this looks scarier than it is. Most of the code thrash
is automated via Coccinelle. Also the subtle differences behind an
'unsigned long pfn' and a '__pfn_t' are mitigated by type-safety and a
Kconfig option (default disabled CONFIG_PMEM_IO) that globally controls
whether a pfn and a __pfn_t are equivalent.
The motivation for this change is persistent memory and the desire to
use it not only via the pmem driver, but also as a memory target for I/O
(DAX, O_DIRECT, DMA, RDMA, etc) in other parts of the kernel. Aside
from the pmem driver and DAX, persistent memory is not able to be used
in these I/O scenarios due to the lack of a backing struct page, i.e.
persistent memory is not part of the memmap. This patchset takes the
position that the solution is to teach I/O paths that want to operate on
persistent memory to do so by referencing a __pfn_t. The alternatives
are discussed in the changelog for "[PATCH v2 01/10] arch: introduce
__pfn_t for persistent memory i/o", copied here:
Alternatives:
1/ Provide struct page coverage for persistent memory in
DRAM. The expectation is that persistent memory capacities make
this untenable in the long term.
2/ Provide struct page coverage for persistent memory with
persistent memory. While persistent memory may have near DRAM
performance characteristics it may not have the same
write-endurance of DRAM. Given the update frequency of struct
page objects it may not be suitable for persistent memory.
3/ Dynamically allocate struct page. This appears to be on
the order of the complexity of converting code paths to use
__pfn_t references instead of struct page, and the amount of
setup required to establish a valid struct page reference is
mostly wasted when the only usage in the block stack is to
perform a page_to_pfn() conversion for dma-mapping. Instances
of kmap() / kmap_atomic() usage appear to be the only occasions
in the block stack where struct page is non-trivially used. A
new kmap_atomic_pfn_t() is proposed to handle those cases.
---
Dan Williams (9):
arch: introduce __pfn_t for persistent memory i/o
block: add helpers for accessing a bio_vec page
block: convert .bv_page to .bv_pfn bio_vec
dma-mapping: allow archs to optionally specify a ->map_pfn() operation
scatterlist: use sg_phys()
x86: support dma_map_pfn()
x86: support kmap_atomic_pfn_t() for persistent memory
dax: convert to __pfn_t
block: base support for pfn i/o
Matthew Wilcox (1):
scatterlist: support "page-less" (__pfn_t only) entries
arch/Kconfig | 6 ++
arch/arm/mm/dma-mapping.c | 2 -
arch/microblaze/kernel/dma.c | 2 -
arch/powerpc/sysdev/axonram.c | 6 +-
arch/x86/Kconfig | 7 ++
arch/x86/kernel/Makefile | 1
arch/x86/kernel/amd_gart_64.c | 22 +++++-
arch/x86/kernel/kmap.c | 95 ++++++++++++++++++++++++++
arch/x86/kernel/pci-nommu.c | 22 +++++-
arch/x86/kernel/pci-swiotlb.c | 4 +
arch/x86/pci/sta2x11-fixup.c | 4 +
arch/x86/xen/pci-swiotlb-xen.c | 4 +
block/bio-integrity.c | 8 +-
block/bio.c | 82 ++++++++++++++++------
block/blk-core.c | 13 +++-
block/blk-integrity.c | 7 +-
block/blk-lib.c | 2 -
block/blk-merge.c | 15 ++--
block/bounce.c | 26 ++++---
drivers/block/aoe/aoecmd.c | 8 +-
drivers/block/brd.c | 6 +-
drivers/block/drbd/drbd_bitmap.c | 5 +
drivers/block/drbd/drbd_main.c | 6 +-
drivers/block/drbd/drbd_receiver.c | 4 +
drivers/block/drbd/drbd_worker.c | 3 +
drivers/block/floppy.c | 6 +-
drivers/block/loop.c | 13 ++--
drivers/block/nbd.c | 8 +-
drivers/block/nvme-core.c | 2 -
drivers/block/pktcdvd.c | 11 ++-
drivers/block/pmem.c | 16 +++-
drivers/block/ps3disk.c | 2 -
drivers/block/ps3vram.c | 2 -
drivers/block/rbd.c | 2 -
drivers/block/rsxx/dma.c | 2 -
drivers/block/umem.c | 2 -
drivers/block/zram/zram_drv.c | 10 +--
drivers/dma/ste_dma40.c | 5 -
drivers/iommu/amd_iommu.c | 21 ++++--
drivers/iommu/intel-iommu.c | 26 +++++--
drivers/iommu/iommu.c | 2 -
drivers/md/bcache/btree.c | 4 +
drivers/md/bcache/debug.c | 6 +-
drivers/md/bcache/movinggc.c | 2 -
drivers/md/bcache/request.c | 6 +-
drivers/md/bcache/super.c | 10 +--
drivers/md/bcache/util.c | 5 +
drivers/md/bcache/writeback.c | 2 -
drivers/md/dm-crypt.c | 12 ++-
drivers/md/dm-io.c | 2 -
drivers/md/dm-log-writes.c | 14 ++--
drivers/md/dm-verity.c | 2 -
drivers/md/raid1.c | 50 +++++++-------
drivers/md/raid10.c | 38 +++++-----
drivers/md/raid5.c | 6 +-
drivers/mmc/card/queue.c | 4 +
drivers/s390/block/dasd_diag.c | 2 -
drivers/s390/block/dasd_eckd.c | 14 ++--
drivers/s390/block/dasd_fba.c | 6 +-
drivers/s390/block/dcssblk.c | 8 +-
drivers/s390/block/scm_blk.c | 2 -
drivers/s390/block/scm_blk_cluster.c | 2 -
drivers/s390/block/xpram.c | 2 -
drivers/scsi/mpt2sas/mpt2sas_transport.c | 6 +-
drivers/scsi/mpt3sas/mpt3sas_transport.c | 6 +-
drivers/scsi/sd_dif.c | 4 +
drivers/staging/android/ion/ion_chunk_heap.c | 4 +
drivers/staging/lustre/lustre/llite/lloop.c | 2 -
drivers/target/target_core_file.c | 4 +
drivers/xen/biomerge.c | 4 +
drivers/xen/swiotlb-xen.c | 29 +++++---
fs/9p/vfs_addr.c | 2 -
fs/block_dev.c | 2 -
fs/btrfs/check-integrity.c | 6 +-
fs/btrfs/compression.c | 12 ++-
fs/btrfs/disk-io.c | 5 +
fs/btrfs/extent_io.c | 8 +-
fs/btrfs/file-item.c | 8 +-
fs/btrfs/inode.c | 19 +++--
fs/btrfs/raid56.c | 4 +
fs/btrfs/volumes.c | 2 -
fs/buffer.c | 4 +
fs/dax.c | 9 +-
fs/direct-io.c | 2 -
fs/exofs/ore.c | 4 +
fs/exofs/ore_raid.c | 2 -
fs/ext4/page-io.c | 2 -
fs/ext4/readpage.c | 4 +
fs/f2fs/data.c | 4 +
fs/f2fs/segment.c | 2 -
fs/gfs2/lops.c | 4 +
fs/jfs/jfs_logmgr.c | 4 +
fs/logfs/dev_bdev.c | 10 +--
fs/mpage.c | 2 -
fs/splice.c | 2 -
include/asm-generic/dma-mapping-common.h | 30 ++++++++
include/asm-generic/memory_model.h | 1
include/asm-generic/pfn.h | 67 ++++++++++++++++++
include/asm-generic/scatterlist.h | 10 +++
include/crypto/scatterwalk.h | 10 +++
include/linux/bio.h | 24 ++++---
include/linux/blk_types.h | 20 +++++
include/linux/blkdev.h | 6 +-
include/linux/dma-debug.h | 23 +++++-
include/linux/dma-mapping.h | 8 ++
include/linux/highmem.h | 23 ++++++
include/linux/mm.h | 1
include/linux/scatterlist.h | 91 ++++++++++++++++++++++---
include/linux/swiotlb.h | 4 +
init/Kconfig | 13 ++++
kernel/power/block_io.c | 2 -
lib/dma-debug.c | 10 ++-
lib/iov_iter.c | 22 +++---
lib/swiotlb.c | 20 ++++-
mm/page_io.c | 10 +--
net/ceph/messenger.c | 2 -
116 files changed, 896 insertions(+), 372 deletions(-)
create mode 100644 arch/x86/kernel/kmap.c
create mode 100644 include/asm-generic/pfn.h
5 years, 7 months
Highly Targeted Facebook Traffic - 50% prices OFF
by FB Targeted Traffic
Facebook Traffic for your website.
Start your campaign today and gain the desired
exposure with highly targeted quality Traffic.
We`ll post your website link and description in
thousands of groups that will generate a total reach
of millions of people. As a result you`ll get around
25.000+ targeted Facebook traffic.
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 7 months
Highly Targeted Facebook Traffic - 50% prices OFF
by FB Targeted Traffic
Facebook Traffic for your website.
Start your campaign today and gain the desired
exposure with highly targeted quality Traffic.
We`ll post your website link and description in
thousands of groups that will generate a total reach
of millions of people. As a result you`ll get around
25.000+ targeted Facebook traffic.
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 7 months
[GIT PULL v4 00/21] libnd: non-volatile memory device support
by Dan Williams
Jens, please pull from...
git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm tags/libnd-for-jens
...to receive the libnd sub-system for the next merge window. This has
been through 3 rounds of review. Incremental diffstats and links to
previous postings:
v1: 39 files changed, 13102 insertions(+), 36 deletions(-)
https://lists.01.org/pipermail/linux-nvdimm/2015-April/000484.html
v2: 30 files changed, 3166 insertions(+), 3935 deletions(-)
https://lists.01.org/pipermail/linux-nvdimm/2015-April/000574.html
v3: 33 files changed, 2202 insertions(+), 1233 deletions(-)
https://lists.01.org/pipermail/linux-nvdimm/2015-May/000804.html
v4: Full diffstat since v3
Documentation/blockdev/libnd.txt | 2 +-
arch/x86/Kconfig | 4 ++
arch/x86/kernel/pmem.c | 92 +++++++++++++++++++++++------------
drivers/acpi/nfit.c | 20 ++++----
drivers/acpi/nfit.h | 4 +-
drivers/block/Kconfig | 8 ---
drivers/block/Makefile | 1 -
drivers/block/e820_pmem.c | 100 --------------------------------------
drivers/block/nd/Kconfig | 10 ++++
drivers/block/nd/btt.h | 2 +-
drivers/block/nd/namespace_devs.c | 5 +-
drivers/block/nd/pmem.c | 2 +-
drivers/block/nd/test/nfit.c | 10 ++--
include/acpi/acuuid.h | 16 +++---
14 files changed, 105 insertions(+), 171 deletions(-)
delete mode 100644 drivers/block/e820_pmem.c
1/ Kill drivers/block/e820_pmem.c, we can just register pmem
regions directly from arch/x86/kernel/pmem.c without need for an
intermediary driver (Christoph).
2/ Update to latest NFIT UUID definitions (Toshi). This
merges cleanly with, and is identical to the include/acpi/
NFIT enabling in Rafael's linux-pm.git/bleeding-edge branch.
3/ Fix up some miscellaneous checkpatch issues (Robert).
This branch has passed a full run through Fengguang's 0-day-kbuild-robot
with no outstanding reports, and it passes* our unit tests defined in
the ndctl repo (https://github.com/pmem/ndctl). As you can see the
magnitude of the review feedback has dropped off precipitously so I feel
confident in recommending this branch as a merge candidate. Some
general notes and credits appear in the tag-message below.
Thanks Jens!
* We have a handful of minor features pending behind this release that
are exercised in the latest unit tests. However, these patches have
been held back to save the libnd review effort from chasing a moving
target.
===
The following changes since commit 4c1eaa2344fb26bb5e936fb4d8ee307343ea0089:
drivers/block/pmem: Fix 32-bit build warning in pmem_alloc() (2015-04-01 17:03:57 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm tags/libnd-for-jens
for you to fetch changes up to dbcc765a7830454abb78e5352147324605455116:
libnd: Non-Volatile Devices (2015-05-27 02:48:52 -0400)
----------------------------------------------------------------
Initial LIBND submission
The LIBND sub-system provides generic support for non-volatile memory
devices. It extends the kernel's existing X86_PMEM_LEGACY support to also
enable devices that conform to the NVDIMM Firmware Interface Table (NFIT)
specification published with ACPI 6 (http://www.uefi.org/specifications).
NFIT describes devices that may include both a BLK (mmio aperture I/O)
mode of operation as well as PMEM (direct cpu load/store to a persistent
memory range). In addition to the generic LIBND bus driver implementation
and the I/O drivers (BLK and PMEM), a driver for layering atomic sector
update semantics on top of byte-addressable-memory, BTT, is also included.
See Documentation/blockdev/libnd.txt and Documentation/blockdev/btt.txt
for more details.
Thanks to: Ross Zwisler, Jeff Moyer, Vishal Verma, Christoph Hellwig,
Ingo Molnar, Neil Brown, Boaz Harrosh, Robert Elliott, Matthew Wilcox,
Andy Rudoff, Linda Knippers, Toshi Kani, Nicholas Moulin, Rafael
Wysocki, and Bob Moore.
----------------------------------------------------------------
Dan Williams (18):
e820, efi: add ACPI 6.0 persistent memory types
libnd, nfit: initial libnd infrastructure and NFIT support
libnd: control character device and libnd bus sysfs attributes
libnd, nfit: dimm/memory-devices
libnd: control (ioctl) messages for libnd bus and dimm devices
libnd, nd_dimm: dimm driver and base libnd device-driver infrastructure
libnd, nfit: regions (block-data-window, persistent memory, volatile memory)
libnd: support for legacy (non-aliasing) nvdimms
libnd, nd_pmem: add libnd support to the pmem driver
libnd, nfit: add interleave-set state-tracking infrastructure
libnd: namespace indices: read and validate
libnd: pmem label sets and namespace instantiation.
libnd: blk labels and namespace instantiation
libnd: write pmem label set
libnd: write blk label set
libnd: infrastructure for btt devices
nfit-test: manufactured NFITs for interface development
libnd: Non-Volatile Devices
Ross Zwisler (2):
pmem: Dynamically allocate partition numbers
libnd, nfit, nd_blk: driver for BLK-mode access persistent memory
Vishal Verma (1):
nd_btt: atomic sector updates
Documentation/blockdev/btt.txt | 273 ++++++
Documentation/blockdev/libnd.txt | 804 ++++++++++++++++++
MAINTAINERS | 39 +-
arch/arm64/kernel/efi.c | 1 +
arch/ia64/kernel/efi.c | 4 +
arch/x86/Kconfig | 4 +
arch/x86/boot/compressed/eboot.c | 4 +
arch/x86/include/uapi/asm/e820.h | 1 +
arch/x86/kernel/e820.c | 28 +-
arch/x86/kernel/pmem.c | 92 +-
arch/x86/platform/efi/efi.c | 3 +
drivers/acpi/Kconfig | 27 +
drivers/acpi/Makefile | 1 +
drivers/acpi/nfit.c | 1474 ++++++++++++++++++++++++++++++++
drivers/acpi/nfit.h | 160 ++++
drivers/block/Kconfig | 13 +-
drivers/block/Makefile | 2 +-
drivers/block/nd/Kconfig | 101 +++
drivers/block/nd/Makefile | 29 +
drivers/block/nd/blk.c | 252 ++++++
drivers/block/nd/btt.c | 1438 +++++++++++++++++++++++++++++++
drivers/block/nd/btt.h | 186 ++++
drivers/block/nd/btt_devs.c | 443 ++++++++++
drivers/block/nd/bus.c | 770 +++++++++++++++++
drivers/block/nd/core.c | 472 ++++++++++
drivers/block/nd/dimm.c | 115 +++
drivers/block/nd/dimm_devs.c | 516 +++++++++++
drivers/block/nd/label.c | 922 ++++++++++++++++++++
drivers/block/nd/label.h | 143 ++++
drivers/block/nd/namespace_devs.c | 1702 +++++++++++++++++++++++++++++++++++++
drivers/block/nd/nd-private.h | 111 +++
drivers/block/nd/nd.h | 257 ++++++
drivers/block/{ => nd}/pmem.c | 107 ++-
drivers/block/nd/region.c | 189 ++++
drivers/block/nd/region_devs.c | 667 +++++++++++++++
drivers/block/nd/test/Makefile | 5 +
drivers/block/nd/test/iomap.c | 151 ++++
drivers/block/nd/test/nfit.c | 1171 +++++++++++++++++++++++++
drivers/block/nd/test/nfit_test.h | 28 +
include/acpi/actbl1.h | 154 ++++
include/acpi/acuuid.h | 89 ++
include/linux/efi.h | 3 +-
include/linux/libnd.h | 129 +++
include/linux/nd.h | 98 +++
include/uapi/linux/Kbuild | 1 +
include/uapi/linux/ndctl.h | 199 +++++
46 files changed, 13289 insertions(+), 89 deletions(-)
create mode 100644 Documentation/blockdev/btt.txt
create mode 100644 Documentation/blockdev/libnd.txt
create mode 100644 drivers/acpi/nfit.c
create mode 100644 drivers/acpi/nfit.h
create mode 100644 drivers/block/nd/Kconfig
create mode 100644 drivers/block/nd/Makefile
create mode 100644 drivers/block/nd/blk.c
create mode 100644 drivers/block/nd/btt.c
create mode 100644 drivers/block/nd/btt.h
create mode 100644 drivers/block/nd/btt_devs.c
create mode 100644 drivers/block/nd/bus.c
create mode 100644 drivers/block/nd/core.c
create mode 100644 drivers/block/nd/dimm.c
create mode 100644 drivers/block/nd/dimm_devs.c
create mode 100644 drivers/block/nd/label.c
create mode 100644 drivers/block/nd/label.h
create mode 100644 drivers/block/nd/namespace_devs.c
create mode 100644 drivers/block/nd/nd-private.h
create mode 100644 drivers/block/nd/nd.h
rename drivers/block/{ => nd}/pmem.c (70%)
create mode 100644 drivers/block/nd/region.c
create mode 100644 drivers/block/nd/region_devs.c
create mode 100644 drivers/block/nd/test/Makefile
create mode 100644 drivers/block/nd/test/iomap.c
create mode 100644 drivers/block/nd/test/nfit.c
create mode 100644 drivers/block/nd/test/nfit_test.h
create mode 100644 include/acpi/acuuid.h
create mode 100644 include/linux/libnd.h
create mode 100644 include/linux/nd.h
create mode 100644 include/uapi/linux/ndctl.h
5 years, 7 months
A l e x a - R a n k - B o o s t e r
by SEO Tools
If the goal is to monetize your website, then improve
your Alexa Ranking could probably be the way to go.
The lower your Alexa ranking the better for your website.
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 7 months
[PATCH v12 0/10] Support Write-Through mapping on x86
by Toshi Kani
This patchset adds support of Write-Through (WT) mapping on x86.
The study below shows that using WT mapping may be useful for
non-volatile memory.
http://www.hpl.hp.com/techreports/2012/HPL-2012-236.pdf
The patchset consists of the following changes.
- Patch 1/10 to 6/10 add ioremap_wt()
- Patch 7/10 adds pgprot_writethrough()
- Patch 8/10 to 9/10 add set_memory_wt()
- Patch 10/10 changes the pmem driver to call ioremap_wt()
All new/modified interfaces have been tested.
The patchset is based on:
git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git#tip-mm-2
---
v12:
- Rebased to bp/bp.git#tip-mm-2 and resolved minor conflicts.
- Dropped cleanup patches 1-2 as redone by Boris.
v11:
- Reordered the refactor changes from patch 10-11 to 1-2.
(Borislav Petkov)
- Changed BUG() to panic(). (Borislav Petkov)
- Rebased to tip/master and resolved conflicts.
v10:
- Removed ioremap_writethrough(). (Thomas Gleixner)
- Clarified and cleaned up multiple comments and functions.
(Thomas Gleixner)
- Changed ioremap_change_attr() to accept the WT type.
v9:
- Changed to export the set_xxx_wt() interfaces with GPL.
(Ingo Molnar)
- Changed is_new_memtype_allowed() to handle WT cases.
- Changed arch-specific io.h to define ioremap_wt().
- Changed the pmem driver to use ioremap_wt().
- Rebased to 4.1-rc3 and resolved minor conflicts.
v8:
- Rebased to 4.0-rc1 and resolved conflicts with 9d34cfdf4 in
patch 5/7.
v7:
- Rebased to 3.19-rc3 as Juergen's patchset for the PAT management
has been accepted.
v6:
- Dropped the patch moving [set|get]_page_memtype() to pat.c
since the tip branch already has this change.
- Fixed an issue when CONFIG_X86_PAT is not defined.
v5:
- Clarified comment of why using slot 7. (Andy Lutomirski,
Thomas Gleixner)
- Moved [set|get]_page_memtype() to pat.c. (Thomas Gleixner)
- Removed BUG() from set_page_memtype(). (Thomas Gleixner)
v4:
- Added set_memory_wt() by adding WT support of regular memory.
v3:
- Dropped the set_memory_wt() patch. (Andy Lutomirski)
- Refactored the !pat_enabled handling. (H. Peter Anvin,
Andy Lutomirski)
- Added the picture of PTE encoding. (Konrad Rzeszutek Wilk)
v2:
- Changed WT to use slot 7 of the PAT MSR. (H. Peter Anvin,
Andy Lutomirski)
- Changed to have conservative checks to exclude all Pentium 2, 3,
M, and 4 families. (Ingo Molnar, Henrique de Moraes Holschuh,
Andy Lutomirski)
- Updated documentation to cover WT interfaces and usages.
(Andy Lutomirski, Yigal Korman)
---
Toshi Kani (10):
1/10 x86, mm, pat: Set WT to PA7 slot of PAT MSR
2/10 x86, mm, pat: Change reserve_memtype() for WT
3/10 x86, asm: Change is_new_memtype_allowed() for WT
4/10 x86, mm, asm-gen: Add ioremap_wt() for WT
5/10 arch/*/asm/io.h: Add ioremap_wt() to all architectures
6/10 video/fbdev, asm/io.h: Remove ioremap_writethrough()
7/10 x86, mm, pat: Add pgprot_writethrough() for WT
8/10 x86, mm, asm: Add WT support to set_page_memtype()
9/10 x86, mm: Add set_memory_wt() for WT
10/10 drivers/block/pmem: Map NVDIMM with ioremap_wt()
---
Documentation/x86/pat.txt | 13 ++--
arch/arc/include/asm/io.h | 1 +
arch/arm/include/asm/io.h | 1 +
arch/arm64/include/asm/io.h | 1 +
arch/avr32/include/asm/io.h | 1 +
arch/frv/include/asm/io.h | 4 +-
arch/m32r/include/asm/io.h | 1 +
arch/m68k/include/asm/io_mm.h | 4 +-
arch/m68k/include/asm/io_no.h | 4 +-
arch/metag/include/asm/io.h | 3 +
arch/microblaze/include/asm/io.h | 2 +-
arch/mn10300/include/asm/io.h | 1 +
arch/nios2/include/asm/io.h | 1 +
arch/s390/include/asm/io.h | 1 +
arch/sparc/include/asm/io_32.h | 1 +
arch/sparc/include/asm/io_64.h | 1 +
arch/tile/include/asm/io.h | 2 +-
arch/x86/include/asm/cacheflush.h | 6 +-
arch/x86/include/asm/io.h | 2 +
arch/x86/include/asm/pgtable.h | 8 ++-
arch/x86/include/asm/pgtable_types.h | 3 +
arch/x86/mm/ioremap.c | 24 +++++++
arch/x86/mm/pageattr.c | 62 +++++++++++++----
arch/x86/mm/pat.c | 126 +++++++++++++++++++++++++----------
arch/xtensa/include/asm/io.h | 1 +
drivers/block/pmem.c | 4 +-
drivers/video/fbdev/amifb.c | 4 +-
drivers/video/fbdev/atafb.c | 3 +-
drivers/video/fbdev/hpfb.c | 4 +-
include/asm-generic/io.h | 9 +++
include/asm-generic/iomap.h | 4 ++
include/asm-generic/pgtable.h | 4 ++
32 files changed, 240 insertions(+), 66 deletions(-)
5 years, 7 months
[PATCH v2 0/4] pmem api, generic ioremap_cache, and memremap
by Dan Williams
The pmem api is responsible for shepherding data out to persistent
media. The pmem driver uses this api, when available, to assert that
data is durable by the time bio_endio() is invoked. When an
architecture or cpu can not make persistence guarantees the driver warns
and falls back to "best effort" implementation.
Changes since v1 [1]:
1/ Rebase on tip/master + Toshi's ioremap_wt() patches and enable
ioremap_cache() to be used generically in drivers. Fix
devm_ioremap_resource() in the process.
2/ Rather than add yet another instance of "force cast away __iomem for
non-io-memory" take the opportunity to introduce memremap() for this use
case and fix up the current users that botch their handling of the
__iomem annotation.
3/ Mandate that consumers of the pmem api handle the case when archs, or
cpus within an arch are not able to make durability guarantees for
writes to persistent memory. See pmem_ops in drivers/block/pmem.c
4/ Drop the persistent_flush() api as there are no users until the BLK
driver is introduced, and even then it is not a "flush to persistence"
it is an invalidation of a previous mmio aperture setting
(io_flush_cache_range()).
5/ Add persistent_remap() to the pmem api for the arch to pick its
desired memory type that corresponds to the assumptions of
persistent_copy() and persistent_sync().
[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-May/000929.html
This boots and processes pmem writes on x86, cross-compile 0day results
are still pending.
---
Dan Williams (3):
arch/*/asm/io.h: add ioremap_cache() to all architectures
devm: fix ioremap_cache() usage
arch: introduce memremap()
Ross Zwisler (1):
arch, x86: cache management apis for persistent memory
arch/arc/include/asm/io.h | 1
arch/arm/include/asm/io.h | 2 +
arch/arm64/include/asm/io.h | 2 +
arch/arm64/kernel/efi.c | 4 +
arch/arm64/kernel/smp_spin_table.c | 10 ++--
arch/avr32/include/asm/io.h | 1
arch/frv/include/asm/io.h | 6 ++
arch/m32r/include/asm/io.h | 1
arch/m68k/include/asm/io_mm.h | 7 +++
arch/m68k/include/asm/io_no.h | 5 ++
arch/metag/include/asm/io.h | 5 ++
arch/microblaze/include/asm/io.h | 1
arch/mn10300/include/asm/io.h | 1
arch/nios2/include/asm/io.h | 1
arch/s390/include/asm/io.h | 1
arch/sparc/include/asm/io_32.h | 1
arch/sparc/include/asm/io_64.h | 1
arch/tile/include/asm/io.h | 1
arch/x86/Kconfig | 1
arch/x86/include/asm/cacheflush.h | 24 +++++++++
arch/x86/include/asm/io.h | 7 +++
arch/x86/kernel/crash_dump_64.c | 6 +-
arch/x86/kernel/kdebugfs.c | 8 +--
arch/x86/kernel/ksysfs.c | 28 +++++-----
arch/x86/mm/ioremap.c | 10 +---
arch/xtensa/include/asm/io.h | 3 +
drivers/acpi/apei/einj.c | 8 +--
drivers/acpi/apei/erst.c | 14 +++--
drivers/block/pmem.c | 62 +++++++++++++++++++++--
drivers/firmware/google/memconsole.c | 4 +
include/asm-generic/io.h | 8 +++
include/asm-generic/iomap.h | 4 +
include/linux/device.h | 5 ++
include/linux/io.h | 38 ++++++++++++++
include/linux/pmem.h | 93 ++++++++++++++++++++++++++++++++++
lib/Kconfig | 3 +
lib/devres.c | 48 ++++++++----------
37 files changed, 347 insertions(+), 78 deletions(-)
create mode 100644 include/linux/pmem.h
5 years, 7 months