[PATCH v3 00/11] evacuate struct page from the block layer, introduce __pfn_t
by Dan Williams
Changes since v2 [1]:
[1]: https://lwn.net/Articles/643437/
1/ Linus pointed out that comparing a __pfn_t value against PAGE_OFFSET
was both inefficient, when PAGE_OFFSET is a large constant, and
incorrect for archs that set PAGE_OFFSET to zero. Instead, take
advantage of the standard alignment of a 'struct page *' to store a set
of flags. In this patch set the only flag defined is PFN_DEV to
indicate "this pfn originated from device memory". A potential future
flag is PFN_DEV_MAPPED if the device has arranged for an associated
struct page for the __pfn_t.
2/ Fix DAX against pmem device disable/removal using
kmap_atomic_pfn_t(). We can later exploit these annotations to protect
against the "stray pointer problem" whereby a kernel bug in an unrelated
part of the system causes inadvertent scribbling over pmem.
3/ Made the series easier to merge as it no longer causes compile errors
by default for new usages of bv_page arriving in the next merge window.
4/ arch/x86/kernel/kmap.c => mm/pfn.c since it is generic functionality.
5/ Updated the kmap_atomic() helpers in bio.h to use kmap_atomic_pfn_t()
Incremental diffstat:
arch/powerpc/sysdev/axonram.c | 9 +++++--
arch/x86/Kconfig | 2 +-
arch/x86/kernel/Makefile | 1 -
block/bio.c | 4 +--
block/blk-core.c | 2 +-
drivers/block/brd.c | 3 +--
drivers/block/pmem.c | 9 ++++---
drivers/s390/block/dcssblk.c | 11 +++++---
fs/block_dev.c | 4 +--
fs/dax.c | 57 ++++++++++++++++++++++++++++++++--------
include/asm-generic/pfn.h | 73 ++++++++++++++++++++++++++++++++++------------------
include/linux/bio.h | 14 +++++-----
include/linux/blk_types.h | 2 +-
include/linux/blkdev.h | 7 +++--
init/Kconfig | 12 ++++-----
mm/Makefile | 1 +
arch/x86/kernel/kmap.c => mm/pfn.c | 0
17 files changed, 140 insertions(+), 71 deletions(-)
rename arch/x86/kernel/kmap.c => mm/pfn.c (100%)
While we wait for the debate [2] to settle about what to do about i/o
paths that ostensibly require struct page, these patches enable a
stacked/tiered storage driver to manage pmem fronting slower storage
media.
[2]: https://lists.01.org/pipermail/linux-nvdimm/2015-May/000727.html
---
Dan Williams (10):
arch: introduce __pfn_t for persistenti/device memory
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
block: convert kmap helpers to kmap_atomic_pfn_t()
dax: convert to __pfn_t
block: base support for pfn i/o
Matthew Wilcox (1):
scatterlist: support "page-less" (__pfn_t only) entries
Documentation/block/biodoc.txt | 4 +
arch/Kconfig | 6 ++
arch/arm/mm/dma-mapping.c | 2 -
arch/microblaze/kernel/dma.c | 2 -
arch/powerpc/sysdev/axonram.c | 13 ++-
arch/x86/Kconfig | 7 ++
arch/x86/kernel/amd_gart_64.c | 22 +++++-
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 | 7 +-
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 | 19 ++++-
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 | 15 +++-
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 | 4 +
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 | 62 +++++++++++++---
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 | 95 +++++++++++++++++++++++++
include/asm-generic/scatterlist.h | 10 +++
include/crypto/scatterwalk.h | 10 +++
include/linux/bio.h | 28 ++++---
include/linux/blk_types.h | 31 ++++++++
include/linux/blkdev.h | 9 +-
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/Makefile | 1
mm/page_io.c | 10 +--
mm/pfn.c | 98 ++++++++++++++++++++++++++
net/ceph/messenger.c | 2 -
117 files changed, 1003 insertions(+), 391 deletions(-)
create mode 100644 include/asm-generic/pfn.h
create mode 100644 mm/pfn.c
5 years, 8 months
30 PR9 backlinks to boost your ranks
by Manual SEO
We will create for you valuable Top Quality Profile Backlinks
from 30+ web 2.0 authority sites with PR9 domain.
- 30 PR 9 Backlinks from authority sites
- Permanent One-way Links
- Anchor Text + Ping
- All domains unique
- Completed in 7 business days
- Detailed Submission Report
For Full Details please read the attached .html file
Unsubscribe option available on the footer of our website
5 years, 8 months
[PATCH v9 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 5/10 add ioremap_wt()
- Patch 6/10 adds pgprot_writethrough()
- Patch 7/10 to 8/10 add set_memory_wt()
- Patch 9/10 refactors !pat_enable paths
- Patch 10/10 changes the pmem driver to call ioremap_wt()
All new/modified interfaces have been tested.
---
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 x86, mm, pat: Add pgprot_writethrough() for WT
7/10 x86, mm, asm: Add WT support to set_page_memtype()
8/10 x86, mm: Add set_memory_wt() for WT
9/10 x86, mm, pat: Refactor !pat_enable handling
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 | 7 ++
arch/m32r/include/asm/io.h | 1 +
arch/m68k/include/asm/io_mm.h | 7 ++
arch/m68k/include/asm/io_no.h | 6 ++
arch/metag/include/asm/io.h | 3 +
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/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/init.c | 6 +-
arch/x86/mm/iomap_32.c | 12 +--
arch/x86/mm/ioremap.c | 26 ++++-
arch/x86/mm/pageattr.c | 61 +++++++++--
arch/x86/mm/pat.c | 194 ++++++++++++++++++++++++-----------
arch/xtensa/include/asm/io.h | 1 +
drivers/block/pmem.c | 4 +-
include/asm-generic/io.h | 9 ++
include/asm-generic/iomap.h | 4 +
include/asm-generic/pgtable.h | 4 +
31 files changed, 296 insertions(+), 92 deletions(-)
5 years, 8 months
Cheap Instagram Followers
by Social Expert
Get social proof to your pages with our 100% satisfaction guaranteed
services; Buy Instagram Followers. Take a tour in our vast social services -
The Best Quality, The cheapest Prices!
- 100% Guaranteed followers.
- 100% safe method to get followers
- 24/7 customer support available
- Attaining followers using ethical ways
- We don't require your password
- Fast turnaround time
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 8 months
30 PR9 backlinks to boost your ranks
by Manual SEO
We will create for you valuable Top Quality Profile Backlinks
from 30+ web 2.0 authority sites with PR9 domain.
- 30 PR 9 Backlinks from authority sites
- Permanent One-way Links
- Anchor Text + Ping
- All domains unique
- Completed in 7 business days
- Detailed Submission Report
For Full Details please read the attached .html file
Unsubscribe option available on the footer of our website
5 years, 8 months
Increase exposure with 2 months of unlimited google traffic
by More Leads
Get 2 months of google traffic from our already established blogs
You can even target your own general keywords for this campaign
Increase exposure, get more leads with organic traffic
For Full Details please read the attached .html file
Unsubscribe option is available on the footer of our website
5 years, 8 months