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 D6009C433EF for ; Tue, 11 Jan 2022 04:32:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F8896B0072; Mon, 10 Jan 2022 23:32:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A8196B0073; Mon, 10 Jan 2022 23:32:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 248B86B0074; Mon, 10 Jan 2022 23:32:26 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0234.hostedemail.com [216.40.44.234]) by kanga.kvack.org (Postfix) with ESMTP id 173466B0072 for ; Mon, 10 Jan 2022 23:32:26 -0500 (EST) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id B0CE3182067A4 for ; Tue, 11 Jan 2022 04:32:25 +0000 (UTC) X-FDA: 79016734650.25.1423725 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2060.outbound.protection.outlook.com [40.107.223.60]) by imf13.hostedemail.com (Postfix) with ESMTP id C06C92000D for ; Tue, 11 Jan 2022 04:32:24 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XYcig206sQK3h8f00kFKk3K4EGx1LwsHck8k+Ov556PjfKeTT1BRTszhFfAZll3TixB40WsE3MHBum9UUpDs9+FHktkPYwfOJagu80wQkSClSv49q9di7ri6BshG4Klbi3mei3vgchmkIxYzVTPrw5uM61lctj0oSMK3N7EaqGYA6TkLzvm03NOTJmvRgD/992VGFCrAgepFwGen30rt71cp9vGJBOFSO50Bj2u74yg+YTRIReLkJdvLZzvfD7LP7KYKjwPAI+cxpNJMCjlA0BG1Pt6Nm7c01U+VNMmMb6zf2W2Z+Bv50OWx+Q2qmuL/E9Gxyc6qhj4K+1mNs1l72A== 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=zMxRxSnoFnUxGxygDXyndZE27aILAtFH8gtjdNsvE/A=; b=b4i/9b3VgZJ8bvwQ9ufQFTt8bGjsoSzob69rpNHKMt9KONgV7PmHwsWvFZO5SBF1389PpJA8jhyohKUAlYgVZyjazt2nqBxpM3yLWRNrYw6Plq4G/1mUPjmRKcK4Y9j2DPbN3MIZEd8WDPea73i45HKUK5ae4eKfQ08BWbltMA0zmdFqd4sS73eTOXhP84xsBbbivPIqbIHGJJGwFtqy8TjB6ALPjqww3Nmb+fKgsZUu/9cmvvrLE2eHFsryQSgnaGIx1wHo65Q/zMcD3lltIAqMveMtTLynRQWRoPzy+zznCjBsMU9jETqLRnhdkUeqyxn47ay8IPQcCV5fMePPGw== 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=zMxRxSnoFnUxGxygDXyndZE27aILAtFH8gtjdNsvE/A=; b=WYQaa5itaNoFfrxqJp4uF8CCGOyWpyTOlri4te6lsCnqfL2GUkPo4dQQxpsgif+aronYiP5GZHligGJfw8wwLsmpAAChMo6oUGHnnF+2QAVvxcGSm7Cq7UeiBRMrnPrcvyvK5f/C10ZKEys939msQl4AyvkQ5EImV36YNTKEGpdMHIH5w8jUEm0soAcmYKi00Sv1YwwfCUNIepwJH1jJze6pooC3z5qqM261V8YlD4oHFXEiLiMbg0BqwURoLNB8Dia0UMhYdwA/X1+3ZZKTR0j2Q6HV3f3nlz3o9qRPTJEKPHObCy0fn9l2/SPlgUecWJABnxxIhL+1uskDe4iKZQ== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BYAPR12MB3384.namprd12.prod.outlook.com (2603:10b6:a03:d8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Tue, 11 Jan 2022 04:32:22 +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.4867.012; Tue, 11 Jan 2022 04:32:22 +0000 Message-ID: <8ad9c4b4-19a6-b22d-91b8-72125bc710cd@nvidia.com> Date: Mon, 10 Jan 2022 20:32:20 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH v2 09/28] gup: Turn hpage_pincount_add() into page_pincount_add() Content-Language: en-US To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Cc: Christoph Hellwig , William Kucharski , linux-kernel@vger.kernel.org, Jason Gunthorpe References: <20220110042406.499429-1-willy@infradead.org> <20220110042406.499429-10-willy@infradead.org> From: John Hubbard In-Reply-To: <20220110042406.499429-10-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BYAPR05CA0033.namprd05.prod.outlook.com (2603:10b6:a03:c0::46) 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: dfe37c0a-d6bc-454c-8152-08d9d4bb5c56 X-MS-TrafficTypeDiagnostic: BYAPR12MB3384:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ff5eJlkxoR5hRqVO3n/QybcCOty9f/wEixppcKCQT9u/9NivshfFGSKIAUEs3ku39GDxuCGrAyfJFnzq7546gpTRwNtXSyxaGq4lmgDlfhoTsVTT5fhbxdbkNubX/MsVb7ZuboIsl42kpcV3PsKKFSlMKGVNWLK4jKjnUnsPB47GHPK6UpyYPK5iZECrQQ42c7HaQd6KwxYXUt/mWWw0u+dYoRQbM1438qmtUMVtpmPyRrJeguunJwutZPVcEElwmOAXNS7o9xrzNYz7zBB9hv3OD6txqvL9RYdMatcrdQ68CiWnI0cYsagvWlLBnlLBeVBPCQy5nYZCcN+L3DFJ2HBJupsQJaH2y8roOxnnNMDthF5X/0jvIDSYsDRVHBztCRvBwsY0T2aHE1IkQ0dGDrwmpsIBonS5VPZ3hKI2AlNpu91rhjfUjOXJgGq3YzynjAOs4NVt6Lq51z1Wm5PtrAWfJpad2rVp/4C/RaaSE1adyp8HtP6+Xgic5xnS9OJ5UCvWZ01ZEm9VlPZXlR6/n+bn840gMCSre/7B633yTS4SZXeImv6QVnbrx1IrrGe0lDx7Fbbm21+4h6GLoM+o46VsgFKR45lM0hdtkm4Ewgy50hHa9agr7+za19kVnecNskdWv6/hBoZr0HLIx7wgdp2ROU2kq/7vWWkFFgy8NnuYgp2dpmiMEhTSrliKQZdT9jysV0k9acj+QKCtUP5WDRBJrwMnygAxgYOTeHVdsbbLm5DRB5RxBDtwN8zgJ4Dx 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)(4326008)(8936002)(53546011)(316002)(36756003)(31696002)(66476007)(66946007)(66556008)(6506007)(86362001)(31686004)(2906002)(8676002)(508600001)(26005)(38100700002)(5660300002)(6512007)(83380400001)(186003)(6486002)(2616005)(54906003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WWNYUUtLaFFEbG5RS1VCTlJpN1MrSlhRNEFtZ2hrV1dDQ0ZMVzg4YlZxaWYv?= =?utf-8?B?WE1kZGJJL01vVW5RR3dYd3VmMkt1ZkpiditqZTJQME9vVEZmNDZiOXhaVnZS?= =?utf-8?B?UnUwVzdiK3RacS9qM29LS2xOSmdNcEMvTlMxdGdGbVRieXEyT2N1aTNBOS8z?= =?utf-8?B?R292VU9mOFViaHRKM1Y3d1ozRSs3TDhBZjVIWU5yemY0dWhJUzhIZHVYZlN4?= =?utf-8?B?QlN5dFllVkhNakJzWmNncXhXOXRrM2dRWVlLeXpHQmdqMldNNUR5OXF4VHJn?= =?utf-8?B?Q0MzMk5YTnh3aTFCQ1V6eG1MWjBGbkFLUDB4YmNPdHdnM25BbVZWeXhkQU5N?= =?utf-8?B?TjY4T2wwNXFuVXJ2dUlvQ24xMFZ2MEdzeHlOS2hXWkZ3MmpBTk5tM0lzS2Nm?= =?utf-8?B?dzlUbkZPa2poRERRb2RhdDhldmpWYlBINXc2YXVQN2hFNHdVTVhtN3ZXRkdJ?= =?utf-8?B?SjVjVk5oVXNWTzJIMXZmdmVGZW1sMDMyTnBEc2htMFdIbUxYZVYyRThrTjl2?= =?utf-8?B?L0NZTUFqMGZMcUJ3RWZwVlJNMXJBbmZhNEx5Nk1hUW9SMjV5VmgxVWVKMGNG?= =?utf-8?B?T21KNUJCSmRCaUpFV0luckdGVmtqdTY5bDlMQnpYMXg3QUVpUVZTT0xOZGhP?= =?utf-8?B?SlhVcXpuRWoycFFSYm01UHZPMGo3R292eThhV3p5MkVWRkdtNjRoTUVWSytP?= =?utf-8?B?WkpGbENBdnJUTUZtVzlkWEttTUdqa1cwSGtHSVZmUmZ0aGZIL3VxVkZ5bU8y?= =?utf-8?B?eU8yUElzWW9EZElmMTNuZGtmWitjNnIwbFpNU0VueXljZWMyZUJEZ3dmS3Bp?= =?utf-8?B?Vml4U0xCTXVtalJqQWhPVkdtUFIwb05yS29qK0ZISnJ4bXkvMENsMnMxVDBJ?= =?utf-8?B?cjFNZ3NNbnRZaGJYdUdnc085cFRNK3pMajd2V3BOVjNhRnh3S1UrUFZ1alNG?= =?utf-8?B?OERHVWp5N2dsOGMxaENROFprcTkyeGl2cWpIRDI4VERseDBMZVliTXFDZTEr?= =?utf-8?B?S0RlUlpoeGJ5ZEZKdi9yRitRa0xhdk10UFM0T2N4RithUGtBMTNHbXdWQjBj?= =?utf-8?B?dkltNWdIQ1JTYjd3dkpqR1Fxc01jU0cxK2tvRzdUUXlmcm5JTXYyQjVobzNF?= =?utf-8?B?QVJZVkVyMU1ZTDJEU0VqTXYxcTloV0NlUnFkbnhJQjM4OVd4SERXOU9kV3Z2?= =?utf-8?B?RllCNFNieW9iN3djeWdyMTRUNTNFQkFwaEpBRDRTMFFEV0FKczA4N3h1U3FS?= =?utf-8?B?ckd6bzUydTd3UmxWRlBBaEFnQjZnajJuV0RRblJURnNSTlBDS21Xd0F1NnJh?= =?utf-8?B?OTVsdVZVZUJ4NWs4UEN1SEFwRTUyLzREYUhFdEwvTVB4MEZzWjJpanpaeXhE?= =?utf-8?B?bW4xUWN6RENpVWRSRHhYbjEyaFV0N08yeXd6ZGNSNEpyWCs2M3djeVR6ZlFD?= =?utf-8?B?UHIrUmN6blYxMW5udGpLKytBRERJc1ZJc0lFVVhhYUlqTDAwdFg3bGZIMjdl?= =?utf-8?B?YmR3eGFGeHdEcVM3c2kxazY5bXBiM2tYcldDYUg0ZHJUaFRQUVhMcHJCWDI3?= =?utf-8?B?TzM2VHZvL2ZqbnZSaTkzZ2liejdlMFZpTHd3S1hkcWlmRmpGZGVMaHNnU3Jk?= =?utf-8?B?L2RwYUVwOElrcktvRG1aODZsK24zTWF5YWhQNHdIUEtuU1psQzgzMGVIZ08x?= =?utf-8?B?WVlkUXMzWTMwWjgrOUl6c3ZUSW9XaXpVcERxU2FwU1BnOUFnVDhhNnJkc010?= =?utf-8?B?RitqNEYyVGVzaHZ6V1lLRysyUWVJK29RTkxTR0pqY0RFZUVvY0FLL0tlanIr?= =?utf-8?B?WXBLL2VnSFhWQ1FaSkFOWng0L1pKWGpaWFhDR204V1c2cU1ZeG1OZkJ4T0hG?= =?utf-8?B?Qi9KWkRLRU9DSmhlb3pvbnRYMTFaVjF3eUV5SDBtLzRXczlPYzNRZCtBUk5W?= =?utf-8?B?MnF4REt5L0hjU1FWUXhnMExURnR5bnlrMFE2SXJKTzdweGFqYVlvQVJRaEpU?= =?utf-8?B?RkRpMExhVjlIcmIwQ1owWnBPaS9vQlpaVjJzMnFnRGtScDRRZk5uSHhyZVFO?= =?utf-8?B?c2k4bWdpaEZQQWlwS3RKQVVWQmU0bTNxL0NmeGo4R2hqRDVxaXhIc2RRUFFw?= =?utf-8?B?Z1ExZzBuNVhPeWNYNGliKzZDaUdoSnkzZDdZYnBSYW0xRHlXdEJCVWxKZDQw?= =?utf-8?Q?ZW8rro9jJzGEMUIu48OLrFQ=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfe37c0a-d6bc-454c-8152-08d9d4bb5c56 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2022 04:32:22.4500 (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: W1PK+jsk1GgadwTo7a9BnapA/wJpmpfDYzcSM99zu6LMKzutF2UEE0OQgapI1/p+fMnmCzpqKHzqlFDzx88LFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3384 X-Rspamd-Queue-Id: C06C92000D X-Stat-Signature: ptftab5pn1fya5ydqqg37wg6dgpzn57g Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=WYQaa5it; dmarc=pass (policy=reject) header.from=nvidia.com; spf=none (imf13.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.223.60) smtp.mailfrom=jhubbard@nvidia.com X-Rspamd-Server: rspam03 X-HE-Tag: 1641875544-412812 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/9/22 20:23, Matthew Wilcox (Oracle) wrote: ... > diff --git a/mm/gup.c b/mm/gup.c > index dbb1b54d0def..3ed9907f3c8d 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -29,12 +29,23 @@ struct follow_page_context { > unsigned int page_mask; > }; > > -static void hpage_pincount_add(struct page *page, int refs) > +/* > + * When pinning a compound page of order > 1 (which is what > + * hpage_pincount_available() checks for), use an exact count to track > + * it, via page_pincount_add/_sub(). > + * > + * However, be sure to *also* increment the normal page refcount field > + * at least once, so that the page really is pinned. That's why the > + * refcount from the earlier try_get_compound_head() is left intact. > + */ I just realized, after looking at this again in a later patch, that the last paragraph, above, is now misplaced. It refers to the behavior of the caller, not to this routine. So it needs to be airlifted back to the caller. > +static void page_pincount_add(struct page *page, int refs) > { > - VM_BUG_ON_PAGE(!hpage_pincount_available(page), page); > VM_BUG_ON_PAGE(page != compound_head(page), page); > > - atomic_add(refs, compound_pincount_ptr(page)); > + if (hpage_pincount_available(page)) > + atomic_add(refs, compound_pincount_ptr(page)); > + else > + page_ref_add(page, refs * (GUP_PIN_COUNTING_BIAS - 1)); > } > > static void hpage_pincount_sub(struct page *page, int refs) > @@ -150,21 +161,7 @@ struct page *try_grab_compound_head(struct page *page, > if (!page) > return NULL; > > - /* > - * When pinning a compound page of order > 1 (which is what > - * hpage_pincount_available() checks for), use an exact count to > - * track it, via hpage_pincount_add/_sub(). > - * > - * However, be sure to *also* increment the normal page refcount > - * field at least once, so that the page really is pinned. > - * That's why the refcount from the earlier > - * try_get_compound_head() is left intact. > - */ ...here. > - if (hpage_pincount_available(page)) > - hpage_pincount_add(page, refs); > - else > - page_ref_add(page, refs * (GUP_PIN_COUNTING_BIAS - 1)); > - > + page_pincount_add(page, refs); > mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_ACQUIRED, > refs); > thanks, -- John Hubbard NVIDIA