Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp234260pxf; Wed, 17 Mar 2021 04:08:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyIxwyrKUAr9/C/e9aPAr/5djRWSsHU2i0M8yDQn6z5iuWWg1DJBQhR4iy2DdTM2Z2qy3Zb X-Received: by 2002:a17:906:26c9:: with SMTP id u9mr13471722ejc.520.1615979333542; Wed, 17 Mar 2021 04:08:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615979333; cv=none; d=google.com; s=arc-20160816; b=EEHfns7xflDjLIzauG7dy+Vw0cKOBwpn6w+vmQ3yYGDbN5LR1Ccp7SeIHgANuRy4Yk t4R5vcafXSKEMajq1X+g2jTvqwWPfx23+LGZZSOxcx+6f6e8WQ82jdmhnID6jw1l/dPe QsglUQmFgz/dROPt+uKBtKVdVINh2vgVLKjYpgHw7WCHdm+gL6nTP/+dBwyNAvFoKQGQ WuJY7CX3JoBcDSpZD1+gidV2D4WxowSNPK651YiF4inIxxe53uuHIg5zUuiMr0y3K84j F456uH3llDpB53tkIAokgjlASkvxoeD/+rpuPnqi042P9SGsIYF1xfQy7qaHCiO+G3sw q7nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=IwjEMMT3RPtm6JyY0ASCQIpX+lhDqbTUqfP/62uVVEY=; b=V1hGSODnAs747OWLX4C8AncAwRCBK30aXcVVxedG/zHpu7woGbsO3O4NaZOyK3lt4k +lPYIXiSk2dMxB7w44e2S9T6g0VpvM03psj2yJsjxInMoKzR51lG2ehgga4lct0pntJ1 wmBhEa+AwsuELR7v/ibgh/aCif3mBbG8OGNfxCPV0V6AfosQiYhk5vD//1/5818msi7d QOXPO93xVgEwrkBBCKli1CgI2pFhonoqf+TbWX/35CPsccVBTi8kgQ9QhlVtz/XbCztr t1PCxeJDqmjqMA5jf1QzluzbNWh5qC0G9XObxg9Vq+8PUhgNdav83YrJxc5OMNG/+Aoo jBWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VrFPGLWL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a21si16170012ejd.654.2021.03.17.04.08.30; Wed, 17 Mar 2021 04:08:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VrFPGLWL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231237AbhCQLHb (ORCPT + 99 others); Wed, 17 Mar 2021 07:07:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:31795 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231218AbhCQLHM (ORCPT ); Wed, 17 Mar 2021 07:07:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1615979232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=IwjEMMT3RPtm6JyY0ASCQIpX+lhDqbTUqfP/62uVVEY=; b=VrFPGLWL1r44ylhFjvVU+PMnOnRjnMuK9PrbX5UEEs4sOWn/SGb/u4Ntp6hzKEPxFIjiFX X0kLtPHIjpxAq0dcbvb2ra1tWfomo8Q7FxbBCjO+j2a2qd7bklInY8aN3reRu69B5rL5hs SjbxLzkxx0kcOO28E0rc8l1EEVv3e4E= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-441-BjG_LOKEN1mdN0p7ad2jYg-1; Wed, 17 Mar 2021 07:07:08 -0400 X-MC-Unique: BjG_LOKEN1mdN0p7ad2jYg-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 637B61009446; Wed, 17 Mar 2021 11:07:04 +0000 (UTC) Received: from t480s.redhat.com (ovpn-112-124.ams2.redhat.com [10.36.112.124]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3888B50FAF; Wed, 17 Mar 2021 11:06:45 +0000 (UTC) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, David Hildenbrand , Andrea Arcangeli , Andrew Morton , Arnd Bergmann , Chris Zankel , Dave Hansen , Helge Deller , Hugh Dickins , Ivan Kokshaysky , "James E.J. Bottomley" , Jann Horn , Jason Gunthorpe , "Kirill A. Shutemov" , Linux API , "Matthew Wilcox (Oracle)" , Matt Turner , Max Filippov , "Michael S. Tsirkin" , Michal Hocko , Mike Kravetz , Minchan Kim , Oscar Salvador , Peter Xu , Ram Pai , Richard Henderson , Rik van Riel , Rolf Eike Beer , Shuah Khan , Thomas Bogendoerfer , Vlastimil Babka 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> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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