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 10A3BC433F5 for ; Sat, 8 Jan 2022 02:36:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 39B9C6B0072; Fri, 7 Jan 2022 21:36:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 323C96B0073; Fri, 7 Jan 2022 21:36:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 150486B0074; Fri, 7 Jan 2022 21:36:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0196.hostedemail.com [216.40.44.196]) by kanga.kvack.org (Postfix) with ESMTP id F3DB66B0072 for ; Fri, 7 Jan 2022 21:36:44 -0500 (EST) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id B4598181ECAE6 for ; Sat, 8 Jan 2022 02:36:44 +0000 (UTC) X-FDA: 79005556728.02.10734C1 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2068.outbound.protection.outlook.com [40.107.223.68]) by imf19.hostedemail.com (Postfix) with ESMTP id 08FEB1A0005 for ; Sat, 8 Jan 2022 02:36:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bNL63Aj1l7ZKP3PGNz4KgWJLlVtaz8lFNeod1tYo2gAkc8bLB4WBIlRW+eeLD1wPynue6LT9+9mhN/PL1xrDeN1hyjTx4hkVHgtzWLCheTQ9BSZ5nsXS7VYFBZI9HLZ2uzc6KbtT5sBmHg79m3OtxEh1QhbYLmg4Ys/m6gYpD9nHhtlP6ZuK0drUUFllCCnJDO24gZ3YFyHp+OttYSuUTgf36TFDNqvyQOUaE54t6PQG7NI5IngTg/sbzXxiY0iKxnJnXonAJKBjXKfuNWV9WnSvF4F1jTbRYuyRjduNAavt9n29IH7EdvClQqZt09adq2y48U9DmEnHmWe3cyJIpA== 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=pypmFQh49ZGONsZtpu+ystDG1eHDkeb5+D9qeYxzvSo=; b=Udkp5A/3vMuniR39kcQHxK3DwDmv4YpGlUt47q2+mnNrFBcbtGoV5u9BR692dE974Wq59b9zWEXzUICCfIIY+0GWePag2rkxXiW0xEle17NN/fKPPu0ykmXcLYjz8LHBmDF/AhDZSQ32aI7fuZQ2jbtVmvKjxE5r5rQRmmZ9yjezNPtjI4oS5gPSFzJWb5we4ZmJlJThReYwG6KP4PK0cnGyOyrIAPTbIt/9rj2DHmNvhKcRPGEijzJ1Fs1dQndnrsoHRu6SLfIcC96CmQOtNgzxjM9r1CRPN7pFiU7QWvk0HYLlt83DNNPWyNcYeuWgZ+cz7Yfr30t+NIFNV89Meg== 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=pypmFQh49ZGONsZtpu+ystDG1eHDkeb5+D9qeYxzvSo=; b=Dj9S67Kpj34O4Y/OlMin+7r39hgNWxLw1Jv8VVeIl4me0JtR/sfC2ldIz7Jmda0t7MD1Z3x0yXs17xUuWGicRlQ49MtxOaEmJFPFi6Gv0DylO/Yech9luFRcmAo1gQJmOEqRmPADrpFfLVM2jpbWQUgaWCj87RbONoJNe03K5tfWUGHieYfMpu6L+uKXppHy3yDy8g/MIcdbAs+UyTdJUDrBA3zjxDsg4UwltUpuCxyCNR+Ui9boDXoqSVM732NK4dFbUNwh5UVYAMBUurqhl7OsgYvzolM5T2kuLNgrtkWHfpuJdlTBRuWc57/o54vSjZEIQYmRkGwfFtInJg2CGw== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BY5PR12MB4292.namprd12.prod.outlook.com (2603:10b6:a03:212::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Sat, 8 Jan 2022 02:36:42 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7%4]) with mapi id 15.20.4844.019; Sat, 8 Jan 2022 02:36:41 +0000 Message-ID: <0663df83-d708-60f9-03e0-c413f70d026b@nvidia.com> Date: Fri, 7 Jan 2022 18:36:39 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 05/17] gup: Add try_get_folio() Content-Language: en-US To: Matthew Wilcox Cc: linux-mm@kvack.org, Andrew Morton References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-6-willy@infradead.org> <3ac8af50-dff6-4a0f-dba6-8b8fe5f611d4@nvidia.com> From: John Hubbard In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0PR13CA0199.namprd13.prod.outlook.com (2603:10b6:a03:2c3::24) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 362e41a5-50be-4bfe-ba85-08d9d24fb414 X-MS-TrafficTypeDiagnostic: BY5PR12MB4292:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LqxQZyBar8ee3LS2j2IiYhSYzOoqSFvyksE1yzXffQAuPh1y9BBDS0Pzg5t3y1rGN9tw+bMUkiJjmtxEO7L9HIHbiRCaRv8sqcTGhB1TF1EhycvGdoLvQDYgssPudnIg4bWztZTNOpcAko7xi59/r+/1naZhuhW5nf7ToRdEHyV6/rBIzC73kARZO2zwSwb7lEq52XM4ALk68w2Rwhhg3yFZJcV/29IvIOtkdC9HVVLNXNTV0dkpKXSk7OSOECltuGInDbv1dg0pceb+efe2dWsnyHDJr1fHYiuvcRrDEKB+vNEhHFC0Acy5LDjapTpVJmoSFP8d9MAbenA3hfW43EnAPJrFQQzKibL9pCnqnk/En2CIm7h87tMA2NuMka1jRAXFeByu68IP3XpY3Q2an7t0tS9rnVYj4i91IWbNUBGUKfh0A88rk5ODRmOspLj4GrD3gbGULpTa20mr3+NjnO6zhePiiRe3IcYX0weCd6PhDMJ+6X7vOeFtk6YWbHI48S65+CISbI2NEHdN1DrDpeNkJcvQa/JPNWmx2rlJb3KPPzSjmfNT58mYI3s9hl9F2+Krer8utv0V4N5cprOlYZI8fn8YUUU0d6x6ELazhC3qdo576vgeNTAGiNI5jJ4FpnXIgYr3Xjkb4GFms77f8NrSmSpdA4C5aijuGWwhJQB3eWxLUtVre3DT1aG4GTEJFggzpRO7pC6xeSotZ6dseUuY3doFQXzz4ky0XvNTphlE8FuS0m+5RzBPK+/T4kXs X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4130.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(8936002)(86362001)(31686004)(83380400001)(36756003)(6486002)(53546011)(6916009)(31696002)(316002)(2616005)(8676002)(2906002)(6512007)(186003)(26005)(508600001)(5660300002)(38100700002)(4326008)(66556008)(6506007)(66946007)(66476007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WlpTRVpDdk1FNEFpMFA4bTlOT1VBcFpiK3JoN1d2UXBTK1h2bzJ4Q2owSEZ1?= =?utf-8?B?WjF4Q3RhY0lGaTgwK2FlZ3R5MGpXR3pPNnhLaW93K3I2WTNhRFFpa2lnVGlr?= =?utf-8?B?WWJ5c1gxUGZveXloenhERWZYTk5BUHpHcEd4ZEZGcnk1azl5SW90TFpTR0Fz?= =?utf-8?B?K1JtWDFrMUJhUk9WQ09uS1VydktRNVRsYlJjSmFKWmRHMUZ2U2ZZdWNtNFV2?= =?utf-8?B?SzhzeHFuNUt1T0xSZ1BYR0J2MXRnYS9jNHVBdTE4L2RoV0x3SkZ0Wkp4ajV6?= =?utf-8?B?WEZmaHFTd0g4MklocjBwV0tvVVphaXRWUExPNDIrQjdzdFRTZWRSYVp3UE90?= =?utf-8?B?c0lzaldYc0phNjZjYkVxbjhUY1VXYnRNQ1hLSzJZcGRpYnRydzdtV1M1Q1Fz?= =?utf-8?B?Ymc3WU9RQ21EOHlEWDdkbjIrYXA2ZTdGOWpHTE8vZEFwMFpVRjNwMmVjMS9S?= =?utf-8?B?UktuUlpaWExYbEFpcFNnaUxLK3FrcTVBQkx1bm5mSzZWYk9Ga1pELzZud3Ft?= =?utf-8?B?OW1rbnorNC9Pb3k4T2crSGxXUE1Nay9OK2I4SnJtdlBEUkJycFZkVXY3bm54?= =?utf-8?B?UlpHUHVsdHlqTGFnMUdaQzdPSTdKVWIvTUFxRzQzTVE2cE5ia0RlVjl3UlFr?= =?utf-8?B?NnU2MkdGK3dmcEJpL1lGd251bUtYZTZvZVZCeFljYWNKUGE4VDNDVXl3ckVk?= =?utf-8?B?cjl0TkxXbXhzaE9zenlwWTFha281Z2xpYW43aUxLNzhUWmNvbVlmRngyRGhU?= =?utf-8?B?VitKbkV3bmFMeTR3NXd3b01FRnRnTFI2bmw0T2hVd2k0N0drVy9PYlk3S3kz?= =?utf-8?B?RDBKY1hnS2JudUlCZTN6V3NYRll6REpMZG1saU9waXF2bWY0aWZKNmNvcU9o?= =?utf-8?B?WlFXZzlIQ3czbGR0SmF2ZEl0cngwdVhrdlpPVjFkb0NDVy9yclJDYVhWT25H?= =?utf-8?B?d0QreG82Y2ZnVysyQUU4a0JVc1FyUVQvU3dVSndGWEI5NFNmQ1JVM2NydVQv?= =?utf-8?B?cFp1emxOZGJmWC8yT1hTSnZWcXVHYWRaNFFkM1BVcCtBazB0SEdZcGdKdHVm?= =?utf-8?B?dHd3YjNOWEZrZFJUZU9ZNHptb1Y5U1F5c1NVYTJuUmdPNllSQ2VXVFA0RSs5?= =?utf-8?B?VEZHMUtSdFZ4d2RFRmhsOHk3V0VIclE1SjFDVXVHdGM4WEFqODRsc3ZNeDJ6?= =?utf-8?B?OW9HbXBHd29ENEFBa1JNN2hqRnQvMERZenRBM1NYaEEyUWpTNGtyeFRZT1VC?= =?utf-8?B?STFVWTUvWWU3MnFwQVBQazl2TVNGVFJaVXEwR2RZNGMxYmpVQVBjeGdrblZW?= =?utf-8?B?amNzeHVnaWRyUDdCMERBMDg4RXErdTBCdGdMU2RZeUlsTDVlQmdISzZxbU5p?= =?utf-8?B?cFcvZklDVWw3S3VHMmxVZXFQc3ZRTnFRQTVFT1d3VTc1bDVwZlJDUC9zMTVD?= =?utf-8?B?cWN6dEdFTEREOC95a1lmcDQrWGRocVZ2UjgwdjRFREpIbFZIYXRCaTFza3Rm?= =?utf-8?B?R3FtcWloNG1YZjN1Rms0ckM5OVFuL01zWmdjU29pUEhVN1Y0WnMwVDJhVnhl?= =?utf-8?B?VlNqMUl0aDlyYVhZOU85a09tdVIyUndyZGJxcHN4VTJpajF6TUZOL2NxeTZa?= =?utf-8?B?YnNnM0hHODh3TW1HZGU5QTVyNVQwMjNqVzI4SXlreWZ0aXVEQzFjTjdiVDhD?= =?utf-8?B?TVVDcTgya0ZGdGhDWFN3ZGprZDdXaHFyZGlGZUhUYXRMRy8xMSsvNFNCYk45?= =?utf-8?B?aktObUdiWDdVWlUrVGVJTUZ6eXlmQU54eW9PYjlpYlFpY2VjQ1REc0QzakdY?= =?utf-8?B?TzBPdU4zamVzdlpDK3kzdlZwMndic1JhRnMzSENTWi93dlVINVRyeDI5VExu?= =?utf-8?B?d2FDaVd3eFRzdENuZWpXbzdFU0lXK1o4dHRBWTBoUWZFNzlXM0dNamJrL2Vw?= =?utf-8?B?cUNua0lGbzV0THFxaFpwOHFXMk0vcFBDNkRlYmdhQ1ZSL1VFSS9NNFMySU9H?= =?utf-8?B?RzBlc0hMWFhOckJHWS9HamJWTS9LdzlaclFOTHhJMnFEUktZa3ZkdDlYU3hn?= =?utf-8?B?VnVpQXJtSEFIRmErQnhvZmc5ejViUWl0Q0ZFcWU2THFPZUNsUUxSVHUrckcz?= =?utf-8?B?QjduYS9JdlY3OEhsakJNSjB4eHgvSW1XNnIzVjJTK29tRHppSE84akxpcm5G?= =?utf-8?Q?RAmwgjKgVcZdIZHuLW5wEB8=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 362e41a5-50be-4bfe-ba85-08d9d24fb414 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2022 02:36:41.7173 (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: c+ZzOY1JUIsXn8Ph6WcJCzbo39s4OltIXB/Xm1e8NFizOFRdhm3XX3IU9tf4QCjKDDG+iozzPNL5hsTpZcvP6w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4292 Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Dj9S67Kp; spf=none (imf19.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.223.68) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com X-Rspamd-Queue-Id: 08FEB1A0005 X-Stat-Signature: te5gj9qkcxxyx93neu8qzjzkogo4drkr X-Rspamd-Server: rspam04 X-HE-Tag: 1641609403-143622 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 1/7/22 17:37, Matthew Wilcox wrote: > On Tue, Jan 04, 2022 at 05:25:07PM -0800, John Hubbard wrote: >> On 1/2/22 13:57, Matthew Wilcox (Oracle) wrote: >>> + folio = page_folio(page); >>> + if (WARN_ON_ONCE(folio_ref_count(folio) < 0)) >>> return NULL; >>> - if (unlikely(!page_cache_add_speculative(head, refs))) >>> + if (unlikely(!folio_ref_try_add_rcu(folio, refs))) >> >> I'm a little lost about the meaning and intended use of the _rcu aspects >> of folio_ref_try_add_rcu() here. For example, try_get_folio() does not >> require that callers are in an rcu read section, right? This is probably >> just a documentation question, sorry if it's obvious--I wasn't able to >> work it out on my own. > > page_cache_add_speculative() always assumed that you were at least as > protected as RCU. Quoting v5.4's pagemap.h: > > * speculatively take a reference to a page. > * If the page is free (_refcount == 0), then _refcount is untouched, and 0 > * is returned. Otherwise, _refcount is incremented by 1 and 1 is returned. > * > * This function must be called inside the same rcu_read_lock() section as has > * been used to lookup the page in the pagecache radix-tree (or page table): > * this allows allocators to use a synchronize_rcu() to stabilize _refcount. Thanks for the v5.4 documentation reference. I did read and understand that a while back, but it didn't show up at all when I was looking through the code during this review, so I missed a chance to re-read it. I'd forgotten about the RCU qualifier there. > > ... so is it the addition of "rcu" in the name that's scared you? > If so, that seems like a good thing, because previously you were using > page_cache_add_speculative() without realising that RCU protection > was required. > > I think there is sufficient protection; either we have interrupts disabled > in gup-fast (which prevents RCU from finishing a grace period), or we > have the mmap_sem held in gup-slow (which prevents pages from being > removed from the page tables). > > But maybe I've missed something? Clearly, I'm not the right person to answer that question, at this point. :) FWIW, I went back and looked again, and it seems like everything is covered. On the documentation front, I do miss the v5.4 helpful comment block above __page_cache_add_speculative(), it would be nice to have an updated version of that revived, but of course that's a separate point from this patchset. thanks, -- John Hubbard NVIDIA