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 E4673C3ABB2 for ; Wed, 28 May 2025 17:34:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6CBF86B0083; Wed, 28 May 2025 13:34:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A34F6B0088; Wed, 28 May 2025 13:34:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 593176B0089; Wed, 28 May 2025 13:34:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 393AF6B0083 for ; Wed, 28 May 2025 13:34:27 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C9483121088 for ; Wed, 28 May 2025 17:34:25 +0000 (UTC) X-FDA: 83493015690.16.25CF8C6 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2057.outbound.protection.outlook.com [40.107.92.57]) by imf05.hostedemail.com (Postfix) with ESMTP id 1CCC7100017 for ; Wed, 28 May 2025 17:34:22 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=jz25YO3P; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf05.hostedemail.com: domain of jgg@nvidia.com designates 40.107.92.57 as permitted sender) smtp.mailfrom=jgg@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1748453663; a=rsa-sha256; cv=pass; b=HCioDi89gvgmjhgerFCP9Kj07EagaiUVyXuYWhy4tXLyozSoJUobEds6cIVSmvPg4ADVMV iojh6BKcPHzQlk4UIgtGTzc4pzWe6nynyj89g3zGPos8/9F/som/XFWSaG47lRV6friMhN N7GYvvB5kbTdysPWIXrXsewDM34ynY4= ARC-Authentication-Results: i=2; imf05.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=jz25YO3P; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf05.hostedemail.com: domain of jgg@nvidia.com designates 40.107.92.57 as permitted sender) smtp.mailfrom=jgg@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748453663; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lUnVizANXckskvJWXYBfSy5JpamY21vxKY99kifSILg=; b=VJ/9MOXwNY1+2UYUKzNrsRLxyCaGomGxaJmQpgPpnsI2GzftjI7opsR/lMIvY69uQVaswR ufntMvT/5b3pQwgOACCRbaiiULOL889MolewJewC95/tN/P29cwtx17hFTA+F+TAeaoNBO JhBFpdOTFrnxYluYhNAAdaNHPlfKCSw= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x1DTmwzUuVdVF+/pvlEyuuqqzNCw5c7gB1KProJdE9FFxQEGuWaZjG8ArJhP2y6lzx+zh/zjTblPN7qmHlBuLD/sOWtQ3vZwP5oxJSMo3QP7eqF7d4vLnJPh2Z22/qnMO9DArYKHGJCeiP4jCI0Ydi7j6B5Y6301gjWxXnpwsOHewdYW1lB+F2oeMcHhsCB/Vq6gjPKEKS71u88t3HJhoghF8l6EbWF503hNrosU2ceB800T/FGcONwVUO6vX1hClJpW1fZ7B14hXPipA3jVfgSRKOOwFgW5qu6O9SHlqJpHVn/E3Trgf4kJYToWQOARfacE/AllWYwT66HOslYGdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=lUnVizANXckskvJWXYBfSy5JpamY21vxKY99kifSILg=; b=N035NDTnpCIORZusnlK+IkVjwXQRpTWV+XYUBOtT+KbR85fncJ8BHt2VRH/zkvNy+y9uADZbHQTisdvwfY8N1gWB6jTnnIsom7g+D44gJVl7Wswdo+EiJUVA8xQWYzgOMg0e+XObr1qDYk92byCQEiwWumLUZkEoV/ED3L98e8ZXVr6BwGy63NSUbrmpt8YpAQHKQwVlXL6jlI/vud0IyJiV8C4q87aKbl9r22/wjCdjhfCFlKaQQeFbRyJUQm4ZDLcIhxwGESxxDOf7ORVWVadkCo5J7DOQhZXO2ko5bEdfVwPm+a1kTKfm0iOybEW80UQdMR+fFdaqbfIHu7ih/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lUnVizANXckskvJWXYBfSy5JpamY21vxKY99kifSILg=; b=jz25YO3P9fXuqk92RBwzK19ZnU1EgNc5qc6+nGbRMfVhtnmSkXPtwMw7oqTy2ykpmb4QdzqD/U3Pn2fnRJYXAGUf7LhWdfhjU4Yz6PxK2Lng+XvhqkksJUcSWNHefQ8u4tkJznwgmOlDKwkgQh2ccXjf6PV2KUe0yFVzABfMCeTdy/JGdZwRG2QNLE+iKikWTxpZvZcsH/9vT67NL9tOCtpJD97w61ELMxly3zWpGsUAPmQUvs/DY1dxqQSovR22v8hNedxdAZMq5Xk2eYP6W17Os/Wj7OGqgCGo/yhUsIi8vU+FHYsKJ7NaNbN3JVI/MwXi0mJptabo7lhCfsgEbw== Received: from CH3PR12MB8659.namprd12.prod.outlook.com (2603:10b6:610:17c::13) by BL3PR12MB6569.namprd12.prod.outlook.com (2603:10b6:208:38c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Wed, 28 May 2025 17:34:19 +0000 Received: from CH3PR12MB8659.namprd12.prod.outlook.com ([fe80::6eb6:7d37:7b4b:1732]) by CH3PR12MB8659.namprd12.prod.outlook.com ([fe80::6eb6:7d37:7b4b:1732%6]) with mapi id 15.20.8769.022; Wed, 28 May 2025 17:34:18 +0000 Date: Wed, 28 May 2025 14:34:17 -0300 From: Jason Gunthorpe To: Peter Xu Cc: David Hildenbrand , Jinjiang Tu , akpm@linux-foundation.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, linux-mm@kvack.org, wangkefeng.wang@huawei.com Subject: Re: [PATCH] mm: fix COW mapping handing in generic_access_phys Message-ID: <20250528173417.GZ61950@nvidia.com> References: <20250528015617.302681-1-tujinjiang@huawei.com> <0d4f0180-52e6-47c9-b141-54e7e7c86880@redhat.com> <5b9f5952-9979-426f-857a-dffa9b7963af@redhat.com> <20250528162915.GR61950@nvidia.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: MN0P221CA0014.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:52a::34) To CH3PR12MB8659.namprd12.prod.outlook.com (2603:10b6:610:17c::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR12MB8659:EE_|BL3PR12MB6569:EE_ X-MS-Office365-Filtering-Correlation-Id: 4449a162-e472-42ba-a7de-08dd9e0de00c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AD3yg9+ok5JWQSGxX4MEp7td439VTLspjnO+Z+pzF1b4r8AuWpe4/gQVb8Sa?= =?us-ascii?Q?D5Tja0Lm2aOhFhgRb4jlNdBlhqo/4cjMXEVHuFrMaqwRnehPmspPwnGjevrD?= =?us-ascii?Q?mFZpdsKXpC7cqt3so7Hc5EHs74W5fjytU3anK221Ws3o6RntIhyfrqcaMPW6?= =?us-ascii?Q?YM+V9Jfdj7uoJxGPHsCNwaJnkT58JdesYkTXAjqg3Le7pTbhvkbYgrnpw/CB?= =?us-ascii?Q?nbmnswsWEep2TDR/1m+PXvKkHO6I9YStLI0r/jDHuLwwf+JPIDKq6crpvO0V?= =?us-ascii?Q?2TGdK5vHDPF5VUXLz7+L0z+xl7MQKjDf4bwRVVjQYdf2lt7VQD3mQF7YDHxG?= =?us-ascii?Q?kh0PB89MdwFUHRvYRMWpnASeH/WU0bYe8M35oSxeVtTlMIML6KIGGgvQX8xC?= =?us-ascii?Q?TKQABggCJw84KZ42pkkdXoyffiFEil5N4sWzL/sko2fNZFmREemyiH+6S6Ec?= =?us-ascii?Q?LwCRL9KibFUiu64KDZnxi5cjmmtgzaGZI9rQ9Ng/VdRljtBPjOXm0dtjMQpH?= =?us-ascii?Q?MRgsV6M5T1oue5bohsfozQxNLNGV7JL0LvQttJJEYYnzVvshow3SJHESIQpo?= =?us-ascii?Q?NWSVnTspsKg8b+gdXgClMlk+dTxmpUjb9eViw2J4kXkfnccZUyMKu6Bg2mFo?= =?us-ascii?Q?uCRsPxjzvCFPsA+pbkdDReHOjqVOwqd/N84k26YvaserZNMKV+oKMK7/RYE7?= =?us-ascii?Q?tDE3NfuyZH+/tSL2y8IXdPIgPIcaOeX+CasOxe+lKlc+EQ5N7FquCdPMGHLa?= =?us-ascii?Q?X+QEDMoTq7XaWVHacF00X+z1Pc8zvLoQk/pl3qyMdUZ2VQ6jz5B1ECIRAPSI?= =?us-ascii?Q?CIb+zx/zKe3fMBQss+fiyzTGzZEzevcsnEdOVGg6mrH8pZvnm5msLY3eNtN4?= =?us-ascii?Q?8zHtzyBl4cY81OjiKXGgQrCQeQF0w2ZWINVZVnXb0OqNWJOJy0lI7rjEQ0tX?= =?us-ascii?Q?q0oVHVG4NPhHJDpnzQkoHW9Ex7Apokv/p1SA/cHG4VMStX4Zuy2HMpEw+a1r?= =?us-ascii?Q?XsYgJcT3IuVuapM/FlI+pYKEOr52GPE0CpylCivbLZmcWqYR4avnHGnsKcOj?= =?us-ascii?Q?smZGUNHGsDqV/WDccgHdqvoEoLLiugAMFH7j4MTU+efJe7C0sUBC+nR/o3T6?= =?us-ascii?Q?VcT+Zr2sIHW5MDUbvgFNT9/OI2ABkijcQSnLLrrcsOUwPFc3uN/sT5eaoI/t?= =?us-ascii?Q?cpOqA3yv/PvhzJlj5Tj0ACKFXDPOLd+GC0BbVeuzH7Wyf5w8lv4NdUhzevsV?= =?us-ascii?Q?ZoouALTGceUPAXHY1h2libdLGAqczaRV7AZPOVQn/dy6vjNxpd+S8ItYmEBM?= =?us-ascii?Q?YJpMRzMa6qXpYWosoB5boc5TBl4C8sOWfUGemYee5y3+OHUsKsEA5qTYDoFA?= =?us-ascii?Q?B1CfFYxtbhcIEzTKRsAGtyieh7PP9QDxgTihIpD15FiP/eJvClFlsgEWBlrL?= =?us-ascii?Q?mgO8Emu/SJI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR12MB8659.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZxOX6ARIArqBSzAH9gV6YqM7T/0VY0GbGGRHzeOyP56oWz74m4soYKMCcn+9?= =?us-ascii?Q?ko2FtfIRh+4iD4ZQvkLWb0jYishIg1H3fNf7KzOl3pc+fCYGllbyV82dwTdM?= =?us-ascii?Q?41x3SSmUKXqdc/NxjDHkCsnbEt6Aj5e+Qv7roBbIiXQ38vhuDcmbVYqkSx3l?= =?us-ascii?Q?CfUStmOojjqWxKTZ+W8hIYbuTTOCeTQb+VcjA8jzbHelWVMDoHpm1RSMUwx2?= =?us-ascii?Q?ITVI0GzxZATWczimVVe6DlA6jdo2NCHlD7Y4Y18H8awrlGKECTDZ7t9SevjA?= =?us-ascii?Q?tTPgAxoQzbP3tuR9842Q0SAFx5b6+t5kvk8utTz8ldTItAu1R+NO1A6z98+G?= =?us-ascii?Q?8V/6DR6DDhBKj+/RGqQKEGG1K2gd5nSxHMLNewmPJo0mFZ00fp8mYUWQJqL4?= =?us-ascii?Q?xIUcBzUN2xAPJ+rs0hUDk2/dWGQp9oB9i07XyGN/ebvnjVAcvPqaclcivAcK?= =?us-ascii?Q?zVSUymrbUVI2543R3S0q1skYf/GVUJSkCEPbXUnKjfk9RqJVDXt8r7fDtf+3?= =?us-ascii?Q?Xvg6FB17CWYqfYiE0qqyGEDj/gnDRTW9EwnOUtswkLty8pcbVjcJgxJNYweE?= =?us-ascii?Q?xrADuRNpLInUJcgpnXdALHd5xV4AM4dDIUPTwHXVSnvZcQaS7y7iaja+2uCA?= =?us-ascii?Q?D3zry6Jr3tS3e5vqMhENkwdtHYDzCjvNy9cmpEceCfl31nNm/tKHMLlgkNxy?= =?us-ascii?Q?uxl4U9IqQjqUj0hHyNm9pAqoe0hWl20Ajum2UlRLczSnGTjvOo40XBvXE317?= =?us-ascii?Q?v5/8yhthCTGLfnnaVdGblOkqVOqlAL+SewwF1XSCKLlcmua4WuMgUKQKoEdO?= =?us-ascii?Q?VdeYkk4T9lMQxLtO7E2tLVnrqu0SjB0faGETrXRSzEaQ8F4XdsP9saTKYo5M?= =?us-ascii?Q?W0n10RYpz2g+bHnAOEjiuUFrxhn8N9ll4TD2yvCYTkeat1tO/6B2DbUmjsky?= =?us-ascii?Q?uDgiqZJN7X3O1HRlPX7zpwckmV3NDyX2dYd/FsORlRD+rcO35r4D//QfAFv5?= =?us-ascii?Q?1Q78G5W7N6WHsGJR9wF5VUr6GEeCskgn0lnPMkQ5Cj/8+Z7NZc0DUIKjA48/?= =?us-ascii?Q?DmX0xkUmwclIbsRWEr/s7VO2WlCyHtlLkaobH9QZgLqNMc7Fxn0RrWvuteeY?= =?us-ascii?Q?A8n6pc9ktP8Lphf5h72UYtt72ivnoeSl3+7Co+82d4yQk94siON0orWvJ/Jj?= =?us-ascii?Q?ZfT6SqimvjZY8iyZwyZTOELhEB1+mTVBkhI8M5Yc1tSr29jdEPSUnLKvo3OQ?= =?us-ascii?Q?7fLc2D3K4SbbkKYQ4Zm1CLytQ3DPSew0uq0zRw5c9jucpJ2HcLQjjBG87egW?= =?us-ascii?Q?LTt0de9C0lNaElc8w8XAL0ddfCvMKTxyjgXG+8ytfTM7+0A1yWzTcvZM0/IB?= =?us-ascii?Q?Q01Sr+qS3i2zNOG/SOG7zPV6g6fYTaWRDwoWXdiyc8e97Ae/2pP6dNZ5vE7M?= =?us-ascii?Q?jqLgtwEGvUrX+MZyk7hjdrHRtRwtCzWMAtWP6Az5FPVh3HfRiHWM1kW99jCl?= =?us-ascii?Q?/HcKX22hBF5Rb2gXCUA3rOQW758wutO6NCOZHsctehAEmxudlMMFxkxiNqu4?= =?us-ascii?Q?RMJ0yPIaOaFQIjB3wGAhJc8X7+UE+4vsHIUVbujb?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4449a162-e472-42ba-a7de-08dd9e0de00c X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8659.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2025 17:34:18.8800 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4tEV6fvvNvCckHBteSOurlr7Pn08a5Fxi2DNqorgz+kdJGD4Z8JyycscKZEBPRM1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6569 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 1CCC7100017 X-Stat-Signature: anbkhusdwxgeesy3utmza34pntpujtny X-Rspam-User: X-HE-Tag: 1748453662-314420 X-HE-Meta: U2FsdGVkX19sXn2E6hFWX0ye1Ay9BKjegNIz+yJ5ZR0xtOXr7bgW9GPHXPacT4xfmD64x6aGFq6mX7tsPvz+CBq2b2TdMKyUt/HjoOV7PwbjoPvWzfjA/viZMgyWPnm6ViIWrib0ZG9uwGimRtYeBobra2C8np1AqPHnHuel6nWUGFixVG0k4TuTQ9dKR2yJj8HDQjBKEXfv6yy+F0HyohuhtcoAVy23NTfN5XSE2VaLocwUHVaZDr6qODJmpdDjX8nbNXOjXs7H22nxn7ytEQkkOBRrICrTGjwWCDgAB6vJqxwfxlIqRZcvaiW0ocxE9R5wvO1xXxb9rSvus6enriZj4HzC5EiNtmf3M3tEhoe8KE5y6Rq0cIf5fGKbHbwpELr1ErRjnm/B51t+EPNOh1KN1KaF9pN5V67knBABNfXuccdR8QrWVCO3kvFn7vIeX6v/vPfMj0a+jgLsq4tLWPTsDQMUX3cmX4yqeBV6guJWmcAdmErBYansjd/CuX5JXBZakkhMqyNVpwE3S4k3m2sD+Gp66fZzcg1mK1f+VKF4TTQoLDewglCz2vj5Qd77vXuN0l2UBCPui/0eX3yQ9g7qj7h10VFTRCPdJSMZGiPVkA9HSVwuMCmbu8hUC2xg9DLRPHdbA5TGH7VCjVxIdc5JQj9BQsHgcK/vt7Yz9Umur6HQx3p9dIw0rTfNpf42rhhVYMpzsHCIXMhYZE7NISJ+Wk4d5DoFsahAXgJcbyZrrPi+8tby3N4NS9aA890MOdGVyN9hJm5Y4yizhbadC5jS1y1uy1j/7bM98x6sQDv32919F5NCRRukLBcVsbBndvLj7xOESqHSg29eyv9zRaWYzHPOaxv9y8lSmwBwDGcv7bVVOEzVDAW+HrUOvUSdAvi6P9YVOYm/NMPP9gbcmwAOcvGo7Kd4PGY7hqdq+5qn0pMlZjEBwn/OWhocwTcE51CkrIbaRQwtHasiXIL LSstv7/E Hekr9rXo+sNYC1r0seuPQNeyQ5ZZvb+mjDRYeV28hZQ+GISWxusqTZqpOni6c6ScQzrUos+n/2/lJUnKkxdScu914SF+L69mf4Q73lL6ghczMBoAJPJDG/SmSjYR/rvo0WL74cKmkkjKZE4X7TGHUHJgDvqIHsyiCQ/PplKNJMbTGOOUK/01E97FNxPeTpDFTxHujeGUVKvIpGP8KsT/l92ANUUJeDPtr+MVL2pHHfLaLwZRPEAS7PmKRySS1mkPxnbb5o9HpiT+fdbdZkLP0tf1JJv1qDMgbSkPmwJM/X2BTtena9U23KcJJTBbdXlN34r2VA3XpbN2lM6sG+oD7vtaDoMW8x1LWd30VPzkvFhYS03Sn2cEbr1iQ4B+ObIEfJV5TsawDfkB24q79v8aMMQS1DBHS5p5kC8nngoM7XAzmIDxF72FLaO8ekkoA9Nm4XIgb1i8DMwgk311z9vnqfxM2yFyzr1pkLjT8bQ25XVpLw1t/IiK4+XZNIeONQG3biToQ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, May 28, 2025 at 01:14:58PM -0400, Peter Xu wrote: > On Wed, May 28, 2025 at 01:29:15PM -0300, Jason Gunthorpe wrote: > > On Wed, May 28, 2025 at 12:06:07PM -0400, Peter Xu wrote: > > > #define VM_PFNMAP 0x00000400 /* Page-ranges managed without "struct page", just pure PFN */ > > > > > > I'm not confident to blame any driver yet to have those special cases for > > > VM_PFNMAP, because it only says "managed without struct page", it didn't > > > say "it must not contain struct page".. Hence it hints the core mm "please > > > do not manage these mappings with struct page at all". Still sounds fair > > > contract, even if not ideal. > > > > I think it is pretty clear, if a VMA has VM_PFNMAP then nothing must > > ever try to obtain a struct page from any PTEs in it, for any reason, > > even if things in it might have a struct page. In practice it means > > nothing can call vm_normal_page() on a VM_PFNMAP. > > > > It would be nice to update the comment to make it clearer. > > Yes that would help. Maybe the hard part is making sure how it is > documented will be how it is used.. > > > > > If the VMA owner wanted to permit access to the struct page then it > > should have used VM_MIXEDMAP. > > > > The fundamental difference between PFNMAP and MIXEDMAP is that > > vm_normal_page() is allowed on MIXEDMAP. That comes with some extra > > rules and restrictions to support arches without the special pte bit. > > If in the ideal world where VM_PFNMAP has a stricter semantics, it sounds > fair to disable vm_normal_page() on top of VM_PFNMAP, yes. > > > > > VM_IO | VM_PFNMAP further means that all the pfns in the VMA require > > the use of io accessors (writel/readl) to access them. > > Hmm.. I'm not 100% sure on this one. E.g., vDSO is VM_IO now but it's > definitely accessible that got mapped into userspace. That seems wrong... It says it in the comment clearly: #define VM_IO 0x00004000 /* Memory mapped I/O or similar */ "memory mapped i/o" is exactly __iomem. At least this VDSO is kind of weird: vma = _install_special_mapping(mm, VDSO_VCLOCK_PAGES_START(addr), VDSO_NR_VCLOCK_PAGES * PAGE_SIZE, VM_READ|VM_MAYREAD|VM_IO|VM_DONTDUMP| VM_PFNMAP|VM_SEALED_SYSMAP, &vvar_vclock_mapping); Because the things it puts into the VMA are not actually known to be MMIO, they are both special hypervisor clock pages: struct pvclock_vsyscall_time_info *pvti = pvclock_get_pvti_cpu0_va(); unsigned long pfn = hv_get_tsc_pfn(); And they are *probably* ddr, but also x86 doesn't care about VM_IO, so it doesn't matter if it is wrong. I wonder if the vdso_install_vvar_mapping() one was blidly copied from x86: pfn = __phys_to_pfn(__pa_symbol(vdso_k_time_data)); pfn = __phys_to_pfn(__pa_symbol(vdso_k_time_data)); pfn = __phys_to_pfn(__pa_symbol(vdso_k_rng_data)); pfn = __phys_to_pfn(__pa_symbol(vdso_k_arch_data)) + Because __pa_symbol is definately not MMIO and should not have VM_IO. > But I confess I at least don't know why VM_IO existed, considering there're > also VM_*MAP and VM_DONTDUMP. I've assumed it was for the various debugger/dump related paths to prevent access to the memory and system crash. Some environments cannot touch MMIO addresses without using readl/writel. > > No idea what VM_IO | VM_MIXEDMAP is supposed to mean. Only the special > > ptes need io accessors? > > > > In either case GUP doesn't really work on the VMA. PFNMAP is totally > > blocked, and for MIXEDMAP userspace has no way to discover which > > subset of the VMA is GUPable. I think that GUP is supported on > > MIXEDMAP at all is a bit of a weirdo thing. > > Does it imply that in the ideal case one should use follow_pfnmap_start() > for MIXEDMAP? No > I don't have a strong feeling yet on how GUP should treat MIXEDMAP, either > (1) fail MIXEDMAP like you said, falling back to follow_pfnmap_start(), or > (2) allow MIXEDMAP only on page-backed mappings, then fallback to > follow_pfnmap_start() on non-page-backed mappings only. GUP should follow the rules, it must use vm_normal_page() on each PTE and if and only if a struct page is returned then it can be refcounted and returned by GUP. GUP should never ignore the special bit and convert a special PTE to a struct page. The very definition of the special bit is that you cannot do this. Jason