From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2171FC7619A for ; Tue, 11 Apr 2023 19:43:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A092F6B007D; Tue, 11 Apr 2023 15:43:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B9CA900005; Tue, 11 Apr 2023 15:43:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 85D2C900004; Tue, 11 Apr 2023 15:43:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 762DD6B007D for ; Tue, 11 Apr 2023 15:43:25 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 47EB3120C5A for ; Tue, 11 Apr 2023 19:43:25 +0000 (UTC) X-FDA: 80670134370.09.F022BFB Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by imf24.hostedemail.com (Postfix) with ESMTP id 3DB1D180004 for ; Tue, 11 Apr 2023 19:43:22 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b="4gT/NJvm"; spf=pass (imf24.hostedemail.com: domain of Ivan.Teterevkov@amd.com designates 40.107.236.41 as permitted sender) smtp.mailfrom=Ivan.Teterevkov@amd.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=quarantine) header.from=amd.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1681242202; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=ehUYmwMvgF5PtnCzYBvN8IVuC7qMM1p/VQtrjbmYCgg=; b=p3AuKQQKIYTdIuJ5R9KNIhLlpFJUd7gPfp7ZrkYjFV9bFP85mftmiklkORVBV2N1FhPtis TClYyhSVFouvudFAGGkq0kzaG+NlslA1DulzY8CyRHDFY86CZAII+CmIVPGBB3YUnvZGrQ /PASLpOljT0V5ZTHxD0Dc+VjDaZa1kI= ARC-Authentication-Results: i=2; imf24.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b="4gT/NJvm"; spf=pass (imf24.hostedemail.com: domain of Ivan.Teterevkov@amd.com designates 40.107.236.41 as permitted sender) smtp.mailfrom=Ivan.Teterevkov@amd.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=quarantine) header.from=amd.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1681242202; a=rsa-sha256; cv=pass; b=MDwVQfY/UtgKWZPZ2Bvo2zttOrVd+Z4HQZ5JnUQuLgdeSvWjqkKbw+oINyKg3jCWDD6Ffx 9SeOJlD27Y4ZW3C0pgYQQpeTPW/gTrpul49P4MIShgaQWvQFtgVckm2PsyVic2+7yZe3B0 QBR8J/3AjQljAs4CyZReJPq/8cuwLPY= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NdFopS78qykQt7R4EhZhzAog446JNRVe00aTRV2I/YZsteM39E7pk4unktwQXVoM054G+F3MUK/KnA74JS/V90FuHVIx7F45gSuCHwYBLOz+6NFQP1zV9jVr3tgrRV1w+YmOW7SpnYJITAEeRR7woEJ3qEkIaeykHUVaDN5h8COmR0frT2A3Sw6Esm8rr+G3sRxU5Ts90Q4j+P/P7GhhaSPrdvMPjS9nXsIsfFc+2Nsb7qFImDWlTZtsqKXolTAnDPxVFPs+SBRIwvxG0io5V1bg5BY7Zt2SmgVdQ2LwHrC+MsotQzCps2WQZ4jeoHAf5VXqaIJpibdL2zN+cCsrIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ehUYmwMvgF5PtnCzYBvN8IVuC7qMM1p/VQtrjbmYCgg=; b=YwHdFaA60kaUHdwJSwTAeTNXRUntJJWADmRlZjXGOHz0Bip4W0ZQlmQF4P3EvjZ1PNRLGZOeajsqBnfocoTIZIkw/0HrVYc2hWl/S8UpNY/cZjHQPn936XsuSJRTqoj1dU63M8MDOzXyk99LwUJ4MMD6o5Ui1woOIPN5P+YQ1fBoPBz+/uPXOhQil2NQHAlBow/CRXZwYOqTP2U2l+DJ019C7ARoLr6sDZ04SotUpCIibpR5K1dQY4iiAtLpP/3KDryu3g4wOt5aN6QCQo8yd9aARARvvGn5YhcSqtoZnPp3Hes9Zl0etdNLxBEEY4CBZNXPe9q1p4piPuZMiz92EQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ehUYmwMvgF5PtnCzYBvN8IVuC7qMM1p/VQtrjbmYCgg=; b=4gT/NJvmyt07mI56wf1InphyUT9Z1yjQImurxvOlhvCvJkH8OZ60+MlnGjFJLrQIH2AVyzHeOTT8kLJj64UqHroEz9wfY7obE+q9FnPn85mFlUSLNlBXczKTimL8W805f7DAfQ4h8kFOn4AEGh/nNJBDyLFpMWZznCaNZu3GPHQ= Received: from PH0PR12MB5606.namprd12.prod.outlook.com (2603:10b6:510:141::16) by MW6PR12MB8664.namprd12.prod.outlook.com (2603:10b6:303:23c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.38; Tue, 11 Apr 2023 19:43:17 +0000 Received: from PH0PR12MB5606.namprd12.prod.outlook.com ([fe80::2aa9:44d8:ff48:164a]) by PH0PR12MB5606.namprd12.prod.outlook.com ([fe80::2aa9:44d8:ff48:164a%4]) with mapi id 15.20.6277.038; Tue, 11 Apr 2023 19:43:16 +0000 From: "Teterevkov, Ivan" To: "linux-mm@kvack.org" , "jhubbard@nvidia.com" , "jack@suse.cz" , "rppt@linux.ibm.com" , "jglisse@redhat.com" , "ira.weiny@intel.com" , "linux-kernel@vger.kernel.org" Subject: find_get_page() VS pin_user_pages() Thread-Topic: find_get_page() VS pin_user_pages() Thread-Index: AdlsqyEC2Ib370amRP6esQRt2dSqSw== Date: Tue, 11 Apr 2023 19:43:16 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR12MB5606:EE_|MW6PR12MB8664:EE_ x-ms-office365-filtering-correlation-id: fcfd9e41-946f-49cd-adb8-08db3ac4fefc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tT+92W31jHXD57BLUehzfktZLHDaY4oNVfqzyZdb44Z8eAi+EpkOOCR7z0zDwzBhHcDNNn5uFYg7T64AKNfL6JjswDdw554iyVJ01Kdfn2mkX1djk7eOyY6qq0H5T5QXZZc5a75u/UaJhkQ76yr6iXUr8oBkA51Y/2VXnPTwUpMNL4uK2YjwQ2xm5k8Z1we1/n1ROC6Vs/7TMUeIVVH04YsTs7hxd7Eu2eMngZaHPCEa1wvxI1yH1g4tVtrOT49+3xiZIBbaQsrcAuKhxkhsOMAJqZ/NGUHRqgz8x47YXEtCnTcSYGKCqO8afzNu1DxuJ7RnBAk7rbAw7bfkRl56aN/sFKKnIN1qxMY7Q39qArG4HYnfACnLCAcfuSWhOX9dEaFEIbX/9u+MVTMJrm9fC8D4gTFvZFdXQ7XgsjBOibQau5uZlnNI6iKdAJUVEHT1b6yU04bMWEYgodAVrXiw3LvBT8yBVJKj5Em6x5sQWksSA0+WS6Sqn8cOxhkw+Rc4TJjyH64I3rOeJzUWb1TmtskOQFfVKPPTd0qxCUFe3ULL8bn6jDWxtT0HyyDIdSn5GGLwCL0j4tCWh0jStyOQj1KKvi3RFarW+XMww1eXOjU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR12MB5606.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(451199021)(478600001)(7696005)(71200400001)(6506007)(316002)(110136005)(26005)(9686003)(186003)(5660300002)(966005)(2906002)(66556008)(76116006)(66946007)(52536014)(64756008)(41300700001)(66446008)(8676002)(8936002)(66476007)(38100700002)(122000001)(55016003)(33656002)(38070700005)(86362001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?J2i+Jkgzbq0ITEcE+XxFSzeUwcEFewJl4Ieh67ys6vwlqw1GQH0Ck0fmOikk?= =?us-ascii?Q?OYstwTheix7bgG5koMn2ss3MuP5bSL3YESQRO6Zh5eU3GVy3Hpop4/glwrvw?= =?us-ascii?Q?eOQ3J82Ii0eO7sPJLMKpnFRBWq+0rgbgP6WgJlsaZDKtUFLgs8rExi5Zzf5R?= =?us-ascii?Q?mxGwxl6Q1wR3Jn/Kd2nFMxBlaIM1SMBTeeoDLjQohnv0ssQmHwPmHf267eJG?= =?us-ascii?Q?1FMoa8etFtNnmobETDcSptjWrzrXgf7gx3HYSYlzNjYleRC5eJ979p55weWo?= =?us-ascii?Q?V4NsE+67ES+qLVEdGf5ITZQT/HrwVxDp7gVGVRx2oAQDB3AYvZMY7UcsYBSw?= =?us-ascii?Q?VeiVUtHDRoFoYR5hFKadSF7+vUN9zE2c6NSoQiYQ5EgH/tatTIAKJvgJodwv?= =?us-ascii?Q?/ZiN1FYHVzg8rUbDJrhlvbdX392dFzEMTGTdX81TtcY6nvSgfDyWTDR0RTZi?= =?us-ascii?Q?x2otKAMV800E/8/ItGNN6gTldZXCLMkz3cmeXYaekYxMGSAePT0f8GslK6Xc?= =?us-ascii?Q?QGeaw2j+j71oZHWwSccriWwl/r005577PKNjwqNvkdYqEPIPIXSILuAEDkfI?= =?us-ascii?Q?gMpD5aTQisU8WIUURH9QRl+gB0Hdy7y9prFB7eEhBFbPKlhOQAGWGFdCW6ef?= =?us-ascii?Q?WEHurPEo6Uaab43alN6yqjYzWEi5BAEurSu1QYqrMgrvvtYibnI4QTJvkLuy?= =?us-ascii?Q?LiqB6zDM0gawlj0i7raR2p3pMWkn2iv2kRN33jytAOx0WvXLaWKoilQfkpZC?= =?us-ascii?Q?zv+B3XqliSInyKankWVyHvDsoEutj3UE4WlogTKwVrzZCK9Hsj4KUkQXVR8X?= =?us-ascii?Q?EQZZ0Dh4zBKM+m85n0VgJxxp8cbBzYPnE10Sdg43cDnafdDrTjqkpmJys6ok?= =?us-ascii?Q?r4kZkdu2EHuuHXrPQdwrbuPj7ZAOQhmPEROoYhrGzhtgMMFag7gYf6MfYVmD?= =?us-ascii?Q?gvaKG7zlBBbERWm9ejmTi+kevNwAWpLz3CM91PF5uDwfCIzgFLnLsBCPdKD4?= =?us-ascii?Q?ZJ91gjawiWSlZY/dYaAxKdOUGtvQKeKSlFev+AAb2aDB5mZNPXbKh6tPfu8+?= =?us-ascii?Q?/z6tRoRzNKu8/uXTdKitin6DWoz/PmAGtbLHVwp2U10oXNLYcAQJ7E15imNN?= =?us-ascii?Q?/C/8drRXKQDPYLxuU2yYqjlmKG8LxP8TiJ5XAIf5Rx8ONjcB6fC3NRt2nj+O?= =?us-ascii?Q?KTOPGXpryBmygUOCbnWU0/Tq70frAfNDSq/uM8ZofkJ5WPLkaQqC9bYcKZOj?= =?us-ascii?Q?yjus6WUiSVTvIL3+YThJPcBE9k0hR046fdHzAbFRAxyN6ly/22ac2VYJNJUY?= =?us-ascii?Q?IDsg1W2rV7Sp5l82fJAL2am7E1y4KHa6Vm2Am3TR7XR15qzemrNsUTJSnWxk?= =?us-ascii?Q?Jn6pjjQMKDWNhUKY1jrh3uEqd+p/HxvTwgjL6pg0l+V3DyNZ2E73wq87imXg?= =?us-ascii?Q?tdf77Vw72BTapLbQpGcUCREPaItT0AePzpf/7iNvX7xwuu8cknYP+JwmaKZx?= =?us-ascii?Q?O59+bHcyi3tqTLwobhfRfvm0/H4nG4MsfSkZi1qpHVCNJjGT5zTebp9rpkaS?= =?us-ascii?Q?xvqMBBEiKIN/aYUFs7U=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR12MB5606.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcfd9e41-946f-49cd-adb8-08db3ac4fefc X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2023 19:43:16.8807 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /kaWX3TK3QKBkKmBotMDHo679IsG6hg3sJ6/J6ebBqT2wkZwacJqoYaQhX4VwwGRk+Eyk2LhulUN7OYlBfeprw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8664 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 3DB1D180004 X-Stat-Signature: gb318ki183ox8xswaytus45tarc4xw6o X-HE-Tag: 1681242202-100614 X-HE-Meta: U2FsdGVkX19c6ORal++SlURD/daxd/VLXg4DfgABBXw0fhuDWMN/4zg/xTPqmoIYSor/4H6D0KuHOvvgCAUaXEhj0MYZhjkuEEXtfOSsWYldanOPmUXRDn2XYS0xUV/KM9CszKRfQOGaSo/8x/t5ITum9vuMoybtifEO7KLiEpFOaqd6jF2MLOM5qJhnn9qVO+2Iz9GOa87m8T+ReIYyBBrxj+SI7wzZUDFB/az4b7UaNmuTqSjBa6Mk+PIyPBwRAM3oj8sU/310DXaV1R4p4mCqj79ZHxcaO3cXxGXeLgSSXgWBxb/dgQyBIDF0GOsZlVUD7X2wOC73GGnLJgCIffge1X8GYRkGCqp3Usjg9BAvWEtOVR7FBOplBYLcPIGn8nCXQZXOA5qytBf/qDLCgf3VnAcaKsIMWgBf0cOuubVmnmlx3gYvkLVqWPNlQ9gampKIU936b9Uf98XReckj/K/0AJaNFofGC3zXmh5XytONSsIogBw76/yBUoNwSW0d1m6ovNVSDhuQVAiXKBZ0oGv2kVtUkHF0Q5uvmYBqJ8jObqYz6vrmQdVl9QyuvDh6lcsJIXGaiIpvj9krIx/4QiygoaOy2QQZfoUxxf32ZoUpHFJ61ZB2274ncIglzK8Xpx13NwQIv/P1KOviUFgEwGktiyA3PiDKfi3rHEdXJ9IxdtJ2h3ZlaxQmoCn9D0ijWj5r40uqwmXJ92wRMNfWnFt3C2Vxn4YDSwUbStKGQ+hBy8h4QJqsoma9Mm1u+c0jwf5Ri7e/YOU63bZ0TOUrfCueC2NrDs/5HWgUopQEkbEpOjmuRz/tE3GHJmWK8bWcDlbP9dxTRsnaLiCAkBajM/l5oju9aeKRWxTfQyWXkXVJv09fNcuxMqd53pGGFgAMupOh3JOBRQXigARGXiXfd8fXzoRHnyGuI+xnFxNQZkfc8r955fZEVcWTHkB2xzAl2+DKeEDkWu9Maf/0tHg 9mMUe1oq 7UM3Prc2VBuWf51VV2HKfTzUapvAUfPsB9Um/YFThXwMhEzWsacxDVs/Ej3EFJqL7FywPpW5IjqQDVc/y2dYFYNIy2QO4y5V2ueBxDSrFdxjezup6mKLfnNi03ylehkD+7fRJq+r9E3HQrrwg9hoMlhv5fYEYYxNuyrp4Gt8WcqyP+LPs/i+5JOaePT9hgqmafe3mRKeQrK3g/9+CP0tZh03X3ZCbWVsEowZkuNA/B8Exy2pdu++6Veyt49yT3EpURApFt8tnEZyPMBPN0YHk+tBStfIEJBlmHCuFnGoGRnQJeuUmAE9WcnHSCiE1E2KzCz4quuF6AqsZrZROFGEhto8NZjoGUC7iC9cseT1CIM/hs2nAH3nar2kcIw32kXuIgYOpwdf5tvGGrKUk8HAd2ugSyfxAeqOgru6n X-Bogosity: Ham, tests=bogofilter, spamicity=0.000032, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hello folks, I work with an application which aims to share memory in the userspace and interact with the NIC DMA. The memory allocation workflow begins in the userspace, which creates a new file backed by 2MiB hugepages with memfd_create(MFD_HUGETLB, MFD_HUGE_2MB) and fallocate(). Then the userspace makes an IOCTL to the kernel module with the file descriptor and size so th= at the kernel module can get the struct page with find_get_page(). Then the ke= rnel module calls dma_map_single(page_address(page)) for NIC, which concludes th= e datapath. The allocated memory may (significantly) outlive the originating userspace application. The hugepages stay mapped with NIC, and the kernel module wants to continue using them and map to other applications that come= and go with vm_mmap(). I am studying the pin_user_pages*() family of functions, and I wonder if th= e outlined workflow requires it. The hugepages do not page out, but they can = move as they may be allocated with GFP_HIGHUSER_MOVABLE. However, find_get_page(= ) must increment the page reference counter without mapping and prevent it fr= om moving. In particular, https://docs.kernel.org/mm/page_migration.html: > How migrate_pages() works > ... > Steps: > ... > 4. All the page table references to the page are converted to migration > entries. This decreases the mapcount of a page. If the resulting mapco= unt > is not zero then we do not migrate the page. Does find_get_page() achieve that condition or does the outlined workflow still requires pin_user_pages*() for safe DMA? Thanks in advance, Ivan