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 AEB7EC433EF for ; Fri, 24 Dec 2021 02:53:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0CF746B0072; Thu, 23 Dec 2021 21:53:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0803D6B0073; Thu, 23 Dec 2021 21:53:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E13616B0074; Thu, 23 Dec 2021 21:53:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0119.hostedemail.com [216.40.44.119]) by kanga.kvack.org (Postfix) with ESMTP id CEE246B0072 for ; Thu, 23 Dec 2021 21:53:13 -0500 (EST) Received: from smtpin13.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 82D518A9CF for ; Fri, 24 Dec 2021 02:53:13 +0000 (UTC) X-FDA: 78951166266.13.AF2C2A0 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2068.outbound.protection.outlook.com [40.107.212.68]) by imf28.hostedemail.com (Postfix) with ESMTP id E0713C001E for ; Fri, 24 Dec 2021 02:53:12 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ak3VBsdF0MKZFCUcbnqPONAPBbgxgYWaSA497DogHi/rGW6iLbJNMtIcdRIVFLmJljuuIpKGL5EyKuPG5M/oTdSRC/zNgBRjyUq5aed0HDqdHUScBa+zBa0bfp+wMLUnlRmk++kg7YWBEugPj7oF0w4Jp0TyMK3xj22WKwkTzjnUuktiHlx6mFL8VoE7VoiRYRtEDuDVtxClH8xDrOcHtD0jTZkgdc6RFNqKay14MBeAxr0YUrJy562W2P4+o2te5KtB6fd6rJgV9uNuDD2CtJQ6oYHoByA5+SS1uyLWfSbDqbuiekIOXloodBgursb12RMfvpCuFRK+W64cDn8UrQ== 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=fdwDZg1OhQE6G7jYa+z0WpxpblpG57nS9h5ObE3/uKU=; b=VVbxG0TyuX5pPmPqvlPoPz97SjYVMhNctwxzEgW6VN0r9k+4kDRTLxBgWp9vyHTzHmaKGnNzQXmWGzNY3vdOQ1qSg8g7fV9NmtGx816X9QixubUrEkfqHFNua45vzvyVDYaZbDABOMcm4XkKE48y/DXGBFzp+IiHRE3R8dGkPmGIlxdmSpGptFHKqMOZAbb0JNBTKbX67AL3I2KZC2feZ3iKFs+qdPWPJKlJI3zVca3U8hsC/t5AQTVNsG88RiMtW/GVxhG3+PWwGzvtwtimxrxq/ffB/iSwzC5xL9nCnzaUECkYKoKoN4ZBaAPXV/WpAZgn16HZF9rCK8qbw6ZxpA== 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=fdwDZg1OhQE6G7jYa+z0WpxpblpG57nS9h5ObE3/uKU=; b=ujWmdVKR49jCXpl9C6gsBXI0ob0dsj1S9wrtyF0T8xPUQbEjsUir5JLWrR4q5t+XiLl6YfHVjrIcT8dFrkLckX70RLexPLleAq4Nf1kCrRd0kR9hu8DgJn9ujlZBdKQv3unX273c6TIpb8SqO2jxDbUq/h3ooveaPP/sNA+l20PntNSZ0KU5scSbDuTm+b8NZzSPy3WAdF7CcMWofGHs9JBuXfRSwA133Jdl+cPuR/rrH2ZCK/6tYHojp7N6+nmTHRtD7WyeeHHyqKojx37vRp0H+Mgp9G0z6jwOFfkvKX+m9BxholTwYjucmtMf4qvITAIhfAeZ3/DeEaxi2sFXZA== Received: from BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) by BL1PR12MB5336.namprd12.prod.outlook.com (2603:10b6:208:314::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.19; Fri, 24 Dec 2021 02:53:11 +0000 Received: from BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::d8be:e4e4:ce53:6d11]) by BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::d8be:e4e4:ce53:6d11%7]) with mapi id 15.20.4823.019; Fri, 24 Dec 2021 02:53:11 +0000 Date: Thu, 23 Dec 2021 22:53:09 -0400 From: Jason Gunthorpe To: Matthew Wilcox Cc: David Hildenbrand , Jan Kara , Linus Torvalds , Nadav Amit , Linux Kernel Mailing List , Andrew Morton , Hugh Dickins , David Rientjes , Shakeel Butt , John Hubbard , Mike Kravetz , Mike Rapoport , Yang Shi , "Kirill A . Shutemov" , Vlastimil Babka , Jann Horn , Michal Hocko , Rik van Riel , Roman Gushchin , Andrea Arcangeli , Peter Xu , Donald Dutile , Christoph Hellwig , Oleg Nesterov , Linux-MM , "open list:KERNEL SELFTEST FRAMEWORK" , "open list:DOCUMENTATION" Subject: Re: [PATCH v1 06/11] mm: support GUP-triggered unsharing via FAULT_FLAG_UNSHARE (!hugetlb) Message-ID: <20211224025309.GF1779224@nvidia.com> References: <20211221010312.GC1432915@nvidia.com> <900b7d4a-a5dc-5c7b-a374-c4a8cc149232@redhat.com> <20211221190706.GG1432915@nvidia.com> <3e0868e6-c714-1bf8-163f-389989bf5189@redhat.com> <20211222124141.GA685@quack2.suse.cz> <4a28e8a0-2efa-8b5e-10b5-38f1fc143a98@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: BL0PR05CA0015.namprd05.prod.outlook.com (2603:10b6:208:91::25) To BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 30cc9cc4-0480-48e4-e109-08d9c68885bf X-MS-TrafficTypeDiagnostic: BL1PR12MB5336:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tmFHhragQu+5ONrVnySpdVWhWz5Dbu/RD8meC8ke1YR7iRB12OjcPuX5CYK+QIi+KXaPQe9VJf+TC1++JDP+H0Er0esQLABHUjKQAZBUq/zolc3ovmZ/P9znE5IFYdYrQlBeCAJ3m5yC3IY/ESlB1cF+zojTM8NrWfOB3nat/m1ylQHADxn5ZSbjLu12f1HLflZBmQFx8EDjPxpvt12HJh3rHQUCcViaOSBnBv9gl7O3FRiE8+piN3pHgz8RnJ1NhSaJMXj2J6AUOYVE+/EI0Lg4ZaTQQEq0KHH3udEJqpDOBP37wMaDBertzhBqLf/+ZuhAwQ4VAk43rS5H1XIrnmzB+FcB9uN7ih7igM/XIC2K/y3Ncuhxt2zF6ejrejbbPpSmZypNO+sZxs7oMwvPBSLGax53X+zwvB5xSVyx3741hBo/fS8f28cfTI6IQYCCUeJxVgQMjKTbK9zsK5TTVIuDikN0JkvDScn8lL2SjwoK0EMyftDd6ywz5jNePqtpEgZweZLb0obNVKw62+QeltGrIN2s8bq2h1AqWA++a6T/Yn9b1ThsBqEHj5/e1Z0kyKHmzztcIm48gbZl32D7Q+3jaTmL4DZkNFT/rFmMoKoKKXqf6/RapPd3cSnud4A7GPXy4tgGAexXi+bYaIPR+g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB5506.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(36756003)(8676002)(186003)(2616005)(26005)(508600001)(5660300002)(6512007)(6486002)(33656002)(8936002)(66476007)(38100700002)(7416002)(6916009)(66946007)(2906002)(6506007)(54906003)(316002)(4326008)(66556008)(1076003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iiryEynWNRGh53dUX7gmKuFGPdi0UAJu5f0/zaLVoB81GUsgnPpb+7+f4Br6?= =?us-ascii?Q?VyJBYg/KzdGSt5iQALpVFMU1eLah8tprXheGvXyruFDviONNjx+XvGk0svJ5?= =?us-ascii?Q?6GvI5G/wa8gEJqLDfWlQ9yAfr4xy6NRhQMkl0w42DND+ehNvY10X4gKrjfj9?= =?us-ascii?Q?yxsR/7gwVtG/6RtxxW7clmKBE7xpd5oofpQfyNkpcHknc2PoIaPn4vmY65xC?= =?us-ascii?Q?9Ka/aMRpyy7bYlBkBS3Ld513N0kl1KkCbWw/32FIVHbKaEk9eAMu9YAb9SSN?= =?us-ascii?Q?hjdT1juq4OLJDNs+qT9NSxTX0RNjIPr50w83NtLQtdQE+qKEAskUGqCDfkHY?= =?us-ascii?Q?eYQ3nt3NLpBpf8NoKRl3jVfHFg3jGAnSw69gv+Qmrh94hwGpFocenvqLp/7N?= =?us-ascii?Q?c7YxRycjIudZTZPh4+hAR9VEqRstXreIjJV8QVA80/R+/6GxGIplnwnVcJqT?= =?us-ascii?Q?kALymyrg5nKek+PcIkj93jXOsxyMZx2EPXu6vDu1jr88lOlDZ9izLtg7wPyN?= =?us-ascii?Q?nYVzgidxJGjr1rkb+CzENSD58g6xqhepcWzV0NV+8H7s2kfddhvFy8c6ob0O?= =?us-ascii?Q?xUmX3IWRLL7KnPv+HEZg1qycNsHD24/VBQN67tWHTdFJwou+qqarKxCau4oI?= =?us-ascii?Q?VIZ5u2YFdUv/6PEg/8vHdLwyy5mSe7PHhmO37w3DsnZRSHsaoinYkBYonwpx?= =?us-ascii?Q?bfQMPQnKi1Q12dQ3b0kKwO+WyW3adrQwqJ69JTjNUX45zKeLI/HpE7P/8//0?= =?us-ascii?Q?4zyZLSBe6mW7BY0Xzg8/rGDaGyQApXV35D0hfTBylxulE5ijIOg90ovbNhQP?= =?us-ascii?Q?DNzRWigbUduAv5wL09s8/xmuovhETkMdyq1o+WCAcrKFxCcWeriD75Y2bPeH?= =?us-ascii?Q?Oe7Oxvet1gDigq+c0yfrJdzKmY/Iuzvzfdif0OcC2WN02yZD+4Snt643cuff?= =?us-ascii?Q?q8SOMF2H+tcdiOcSexLcU+4oGXHWd2gPp4JEEY0/Cpc5TS1Oca5h2/92Kmq7?= =?us-ascii?Q?55cyhkHRYJA+HeiN8yodY5lY8zBRiEis1Rkq4FucHl9HcVhqmZNLA77I+c91?= =?us-ascii?Q?ifyoMlRengjrGv+m7jMcjK9H0ZTpxyKjxS6WhO8Jv8XEUJAwOa3NhgIxXcM8?= =?us-ascii?Q?Uxj5SQyUymcoo7gK7r/+Ssj7vfG3QvoEwtwEzkAXUSXhPlLHDH+efzUiYSf5?= =?us-ascii?Q?4Yufc3Bu0AA7UOaO/D2Y0tN6OdwpzeV4Pgaxfvx5OYZm2Azl7/7SMwPGj/Yr?= =?us-ascii?Q?6ttG1A+skW0CrpkeAqj9vJ9urAl3RQaqpglJnzX9OKP01A9vutP9kvqxczmB?= =?us-ascii?Q?kH727aGlhYr9yVXTBEr5pAJ7JKE5m/8m1HaCNpZd/aWc50KI1W8uAwO5icpk?= =?us-ascii?Q?o9GNtpM1ZmSQjeONTzevc3pCQBaQdromK3j0NIzOa7kZD80fd5vG6j/4eq6w?= =?us-ascii?Q?fvslGu75wYf1rADsG1sR0+qwznrNKigP0DZOoCt49SMMouggSGEykShpEOvE?= =?us-ascii?Q?MOhyXB2h7gFjdeZhM+Tqz0KgUHua2uNWDCcEKEHLQ4r46j8MYoVY6jT8Hn/5?= =?us-ascii?Q?yZGznm8e89w8EK7WvFo=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30cc9cc4-0480-48e4-e109-08d9c68885bf X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB5506.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2021 02:53:11.3151 (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: f7gG7kcACLTISje4DDTaIgl5qagVsL8VHLN7Ws+bf/dsWqfeCmb9FiavwlgBah0A X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5336 Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ujWmdVKR; spf=none (imf28.hostedemail.com: domain of jgg@nvidia.com has no SPF policy when checking 40.107.212.68) smtp.mailfrom=jgg@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E0713C001E X-Stat-Signature: d7ubfa83udkxp5i3bzwdgautp3h13yqr X-HE-Tag: 1640314392-422169 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: On Thu, Dec 23, 2021 at 12:21:06AM +0000, Matthew Wilcox wrote: > On Wed, Dec 22, 2021 at 02:09:41PM +0100, David Hildenbrand wrote: > > Right, from an API perspective we really want people to use FOLL_PIN. > > > > To optimize this case in particular it would help if we would have the > > FOLL flags on the unpin path. Then we could just decide internally > > "well, short-term R/O FOLL_PIN can be really lightweight, we can treat > > this like a FOLL_GET instead". And we would need that as well if we were > > to keep different counters for R/O vs. R/W pinned. > > FYI, in my current tree, there's a gup_put_folio() which replaces > put_compound_head: > > static void gup_put_folio(struct folio *folio, int refs, unsigned int flags) > { > if (flags & FOLL_PIN) { > node_stat_mod_folio(folio, NR_FOLL_PIN_RELEASED, refs); > if (hpage_pincount_available(&folio->page)) > hpage_pincount_sub(&folio->page, refs); > else > refs *= GUP_PIN_COUNTING_BIAS; > } > > folio_put_refs(folio, refs); > } > > That can become non-static if it's needed. I'm still working on that > series, because I'd like to get it to a point where we return one > folio pointer instead of N page pointers. Not quite there yet. I'm keen to see what that looks like, every driver I'm working on that calls PUP goes through gyrations to recover contiguous pages, so this is most welcomed! Jason