linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/17] kmap: Create mem*_page interfaces
@ 2020-11-24  6:07 ira.weiny
  2020-11-24  6:07 ` [PATCH 01/17] mm/highmem: Lift memcpy_[to|from]_page and memset_page to core ira.weiny
                   ` (17 more replies)
  0 siblings, 18 replies; 32+ messages in thread
From: ira.weiny @ 2020-11-24  6:07 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ira Weiny, Thomas Gleixner, Dave Hansen, Matthew Wilcox,
	Christoph Hellwig, Dan Williams, Al Viro, Eric Biggers,
	Luis Chamberlain, Patrik Jakobsson, Jani Nikula, Joonas Lahtinen,
	Rodrigo Vivi, David Howells, Chris Mason, Josef Bacik,
	David Sterba, Steve French, Jaegeuk Kim, Chao Yu, Nicolas Pitre,
	Martin K. Petersen, Brian King, Greg Kroah-Hartman,
	Alexei Starovoitov, Daniel Borkmann, Jérôme Glisse,
	Kirti Wankhede, linux-kernel, linux-fsdevel

From: Ira Weiny <ira.weiny@intel.com>

The following pattern is used often:

	kmap()
	memcpy(), memmove(), or memset()
	kunmap()

The problem with this is 2 fold: 1) This is best done with k[un]map_atomic().
2) kmap() is expanding and evolving beyond the use of highmem.

To the second point we have new functionality being placed behind kmap, such as
PKS, which has nothing to do with highmem.  Also we have new kmap interfaces,
kmap_local() which allow for a more fined grained mapping of pages and would be
very appropriate for the above pattern.

iov_iter.c already defined 3 functions which do most of what we want.

	memcpy_from_page()
	memcpy_to_page()
	memzero_page()

Lift these to the core and enhance with memcpy_page(), memmove_page(), and
memset_page().  Then replace the patterns throughout the kernel as appropriate.

Once the kmap_local() implementation is finalized the kmap_atomic() can be
replaced with kmap_local().  For the moment use kmap_atomic().


Ira Weiny (17):
  mm/highmem: Lift memcpy_[to|from]_page and memset_page to core
  drivers/firmware_loader: Use new memcpy_[to|from]_page()
  drivers/gpu: Convert to mem*_page()
  fs/afs: Convert to memzero_page()
  fs/btrfs: Convert to memzero_page()
  fs/hfs: Convert to mem*_page() interface
  fs/cifs: Convert to memcpy_page()
  fs/hfsplus: Convert to mem*_page()
  fs/f2fs: Remove f2fs_copy_page()
  fs/freevxfs: Use memcpy_to_page()
  fs/reiserfs: Use memcpy_from_page()
  fs/cramfs: Use memcpy_from_page()
  drivers/target: Convert to mem*_page()
  drivers/scsi: Use memcpy_to_page()
  drivers/staging: Use memcpy_to/from_page()
  lib: Use mempcy_to/from_page()
  samples: Use memcpy_to/from_page()

 drivers/base/firmware_loader/fallback.c   | 11 +++--
 drivers/gpu/drm/gma500/gma_display.c      |  7 ++-
 drivers/gpu/drm/gma500/mmu.c              |  4 +-
 drivers/gpu/drm/i915/gem/i915_gem_shmem.c |  6 +--
 drivers/gpu/drm/i915/gt/intel_gtt.c       |  9 +---
 drivers/gpu/drm/i915/gt/shmem_utils.c     |  8 ++--
 drivers/scsi/ipr.c                        | 11 +----
 drivers/staging/rts5208/rtsx_transport.c  |  8 ++--
 drivers/target/target_core_rd.c           |  6 +--
 drivers/target/target_core_transport.c    | 10 ++---
 fs/afs/write.c                            |  5 +--
 fs/btrfs/inode.c                          | 21 +++------
 fs/cifs/smb2ops.c                         | 10 ++---
 fs/cramfs/inode.c                         |  3 +-
 fs/f2fs/f2fs.h                            | 10 -----
 fs/f2fs/file.c                            |  3 +-
 fs/freevxfs/vxfs_immed.c                  |  6 +--
 fs/hfs/bnode.c                            | 13 ++----
 fs/hfsplus/bnode.c                        | 53 +++++++----------------
 fs/reiserfs/journal.c                     |  9 ++--
 include/linux/pagemap.h                   | 49 +++++++++++++++++++++
 lib/iov_iter.c                            | 21 ---------
 lib/test_bpf.c                            | 11 +----
 lib/test_hmm.c                            | 10 +----
 samples/vfio-mdev/mbochs.c                |  8 ++--
 25 files changed, 119 insertions(+), 193 deletions(-)

-- 
2.28.0.rc0.12.gb6a658bd00c9


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2020-12-07 16:20 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-24  6:07 [PATCH 00/17] kmap: Create mem*_page interfaces ira.weiny
2020-11-24  6:07 ` [PATCH 01/17] mm/highmem: Lift memcpy_[to|from]_page and memset_page to core ira.weiny
2020-11-24 14:19   ` Matthew Wilcox
2020-11-24 19:21     ` Ira Weiny
2020-11-24 20:20       ` Matthew Wilcox
     [not found]   ` <160648238432.10416.12405581766428273347@jlahtine-mobl.ger.corp.intel.com>
2020-11-27 13:20     ` Matthew Wilcox
     [not found]       ` <160672815223.3453.2374529656870007787@jlahtine-mobl.ger.corp.intel.com>
2020-12-03 18:25         ` Ira Weiny
2020-11-24  6:07 ` [PATCH 02/17] drivers/firmware_loader: Use new memcpy_[to|from]_page() ira.weiny
2020-11-24  6:07 ` [PATCH 03/17] drivers/gpu: Convert to mem*_page() ira.weiny
     [not found]   ` <160648211578.10416.3269409785516897908@jlahtine-mobl.ger.corp.intel.com>
2020-12-04 16:05     ` Ira Weiny
2020-12-04 22:33       ` Thomas Gleixner
2020-12-07  6:46         ` Ira Weiny
2020-12-07 16:19           ` Thomas Gleixner
2020-11-24  6:07 ` [PATCH 04/17] fs/afs: Convert to memzero_page() ira.weiny
2020-11-24  6:07 ` [PATCH 05/17] fs/btrfs: " ira.weiny
2020-11-24 14:12   ` David Sterba
2020-11-24 19:25     ` Ira Weiny
2020-11-24  6:07 ` [PATCH 06/17] fs/hfs: Convert to mem*_page() interface ira.weiny
2020-11-24  6:07 ` [PATCH 07/17] fs/cifs: Convert to memcpy_page() ira.weiny
2020-11-24  6:07 ` [PATCH 08/17] fs/hfsplus: Convert to mem*_page() ira.weiny
2020-11-24  6:07 ` [PATCH 09/17] fs/f2fs: Remove f2fs_copy_page() ira.weiny
2020-11-25  3:27   ` Chao Yu
2020-11-24  6:07 ` [PATCH 10/17] fs/freevxfs: Use memcpy_to_page() ira.weiny
2020-11-24  6:07 ` [PATCH 11/17] fs/reiserfs: Use memcpy_from_page() ira.weiny
2020-11-24  6:07 ` [PATCH 12/17] fs/cramfs: " ira.weiny
2020-11-24 15:20   ` Nicolas Pitre
2020-11-24  6:07 ` [PATCH 13/17] drivers/target: Convert to mem*_page() ira.weiny
2020-11-24  6:07 ` [PATCH 14/17] drivers/scsi: Use memcpy_to_page() ira.weiny
2020-11-24  6:07 ` [PATCH 15/17] drivers/staging: Use memcpy_to/from_page() ira.weiny
2020-11-24  6:07 ` [PATCH 16/17] lib: Use mempcy_to/from_page() ira.weiny
2020-11-24  6:07 ` [PATCH 17/17] samples: Use memcpy_to/from_page() ira.weiny
2020-12-04 10:18 ` [PATCH 04/17] fs/afs: Convert to memzero_page() David Howells

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).