|
|
Log in / Subscribe / Register

mm/madvise: introduce MADV_POPULATE_(READ|WRITE) to prefault/prealloc memory

From:  David Hildenbrand <david-AT-redhat.com>
To:  linux-kernel-AT-vger.kernel.org
Subject:  [PATCH v1 0/5] mm/madvise: introduce MADV_POPULATE_(READ|WRITE) to prefault/prealloc memory
Date:  Wed, 17 Mar 2021 12:06:39 +0100
Message-ID:  <20210317110644.25343-1-david@redhat.com>
Cc:  linux-mm-AT-kvack.org, David Hildenbrand <david-AT-redhat.com>, Andrea Arcangeli <aarcange-AT-redhat.com>, Andrew Morton <akpm-AT-linux-foundation.org>, Arnd Bergmann <arnd-AT-arndb.de>, Chris Zankel <chris-AT-zankel.net>, Dave Hansen <dave.hansen-AT-intel.com>, Helge Deller <deller-AT-gmx.de>, Hugh Dickins <hughd-AT-google.com>, Ivan Kokshaysky <ink-AT-jurassic.park.msu.ru>, "James E.J. Bottomley" <James.Bottomley-AT-HansenPartnership.com>, Jann Horn <jannh-AT-google.com>, Jason Gunthorpe <jgg-AT-ziepe.ca>, "Kirill A. Shutemov" <kirill.shutemov-AT-linux.intel.com>, Linux API <linux-api-AT-vger.kernel.org>, "Matthew Wilcox (Oracle)" <willy-AT-infradead.org>, Matt Turner <mattst88-AT-gmail.com>, Max Filippov <jcmvbkbc-AT-gmail.com>, "Michael S. Tsirkin" <mst-AT-redhat.com>, Michal Hocko <mhocko-AT-suse.com>, Mike Kravetz <mike.kravetz-AT-oracle.com>, Minchan Kim <minchan-AT-kernel.org>, Oscar Salvador <osalvador-AT-suse.de>, Peter Xu <peterx-AT-redhat.com>, Ram Pai <linuxram-AT-us.ibm.com>, Richard Henderson <rth-AT-twiddle.net>, Rik van Riel <riel-AT-surriel.com>, Rolf Eike Beer <eike-kernel-AT-sf-tec.de>, Shuah Khan <shuah-AT-kernel.org>, Thomas Bogendoerfer <tsbogend-AT-alpha.franken.de>, Vlastimil Babka <vbabka-AT-suse.cz>
Archive-link:  Article

Excessive details on MADV_POPULATE_(READ|WRITE) can be found in patch #2.

Now accompanied by minor adjustments and selftests/vm tests.

RFCv2 -> v1
- "mm: fix variable name in declaration of populate_vma_page_range()"
-- Added
- "mm/madvise: introduce MADV_POPULATE_(READ|WRITE) to prefault ..."
-- Fix detection of memory holes when we have to re-lookup the VMA
-- Return -EHWPOISON to user space when we hit HW poisoned pages
-- Make variable names in definition and declaration consistent
- "MAINTAINERS: add tools/testing/selftests/vm/ to MEMORY MANAGEMENT"
-- Added
- "selftests/vm: add protection_keys_32 / protection_keys_64 to gitignore"
-- Added
- "selftests/vm: add test for MADV_POPULATE_(READ|WRITE)"
-- Added

RFC -> RFCv2:
- Fix re-locking (-> set "locked = 1;")
- Don't mimic MAP_POPULATE semantics:
--> Explicit READ/WRITE request instead of selecting it automatically,
    which makes it more generic and better suited for some use cases (e.g., we
    usually want to prefault shmem writable)
--> Require proper access permissions
- Introduce and use faultin_vma_page_range()
--> Properly handle HWPOISON pages (FOLL_HWPOISON)
--> Require proper access permissions (!FOLL_FORCE)
- Let faultin_vma_page_range() check for compatible mappings/permissions
- Extend patch description and add some performance numbers

David Hildenbrand (5):
  mm: make variable names for populate_vma_page_range() consistent
  mm/madvise: introduce MADV_POPULATE_(READ|WRITE) to prefault/prealloc
    memory
  MAINTAINERS: add tools/testing/selftests/vm/ to MEMORY MANAGEMENT
  selftests/vm: add protection_keys_32 / protection_keys_64 to gitignore
  selftests/vm: add test for MADV_POPULATE_(READ|WRITE)

 MAINTAINERS                                |   1 +
 arch/alpha/include/uapi/asm/mman.h         |   3 +
 arch/mips/include/uapi/asm/mman.h          |   3 +
 arch/parisc/include/uapi/asm/mman.h        |   3 +
 arch/xtensa/include/uapi/asm/mman.h        |   3 +
 include/uapi/asm-generic/mman-common.h     |   3 +
 mm/gup.c                                   |  54 ++++
 mm/internal.h                              |   5 +-
 mm/madvise.c                               |  69 +++++
 tools/testing/selftests/vm/.gitignore      |   3 +
 tools/testing/selftests/vm/Makefile        |   1 +
 tools/testing/selftests/vm/madv_populate.c | 342 +++++++++++++++++++++
 tools/testing/selftests/vm/run_vmtests.sh  |  16 +
 13 files changed, 505 insertions(+), 1 deletion(-)
 create mode 100644 tools/testing/selftests/vm/madv_populate.c

-- 
2.29.2



Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds