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 C2D09C433FE for ; Wed, 5 Jan 2022 06:53:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12B586B0071; Wed, 5 Jan 2022 01:53:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0DCD56B0073; Wed, 5 Jan 2022 01:53:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E96E56B0074; Wed, 5 Jan 2022 01:53:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0028.hostedemail.com [216.40.44.28]) by kanga.kvack.org (Postfix) with ESMTP id D6FAC6B0071 for ; Wed, 5 Jan 2022 01:53:01 -0500 (EST) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 953A5181CC1BD for ; Wed, 5 Jan 2022 06:53:01 +0000 (UTC) X-FDA: 78995316162.24.2349899 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2055.outbound.protection.outlook.com [40.107.244.55]) by imf16.hostedemail.com (Postfix) with ESMTP id F26E918000C for ; Wed, 5 Jan 2022 06:53:00 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F0qoDCf7oOwNYp8o49KqVEIQ3vPa3DJ6lEyytr/iy1wcNsVsbSpQjujUDz0eCNuC/JHeR4zg5QuCM1fOMg4g7bikOyQHZIbH0X/38DpwMmm0er5JDMd+bwOBmSGWcU93vyfSNfvbE1iKY/CswIP4wUn1/MJSypmUBUQ6SiK8PTCouJG6vQc30smumHXL1GaFm+pwgpN/Gb7+PZvRVnCt+J6ZWg3MoUHITd1V+6wx8mQ31iXRCP6h98YbbYRd6x+0SOPibCJdG7Zpqsx8jLbHVRGq4QlMJk69/2DCHdW0KDFlrLAP0zwpDTmxI9ZASZVPdqJRitbUjuKLbk2wdex0Yw== 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=CzxDe3pxrD93+N31SJsmPe9HdhC9ykfstlpA0ixB+Cw=; b=KcADHmDgJ8h8CBxZ55zIqujbKiK33jQm64tfOGMKaXPyhiabUeP2AG+fiQjlGGvgvkL/hFFk5kYpOBM5Kk7NKtndGVPy9fBi4ESpS1BqdwJv9xlMz4oD2MVDUTW9AlakPQ5EqGgLZCNsyvY9HcaRjhHLPQK4dyzxyrjkgdG2qZy2cik6SxdEdsyO0UjNEHXQ3jIGd3aht/YrXEbvJgm+0z3JLYT4Wo851wt13ALYUk8Tf8QunfkLOA5cvi6P8g2V+FnOxwR8SCq5Wb3iTDSPLXC1ACaS941Zla8lWOC2ZrayXhgbxZ0r46S2Y1pzvirYOWuSWYUlok/zXIVAgnKz2A== 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=CzxDe3pxrD93+N31SJsmPe9HdhC9ykfstlpA0ixB+Cw=; b=iMduWZYhrl51x8htNQgp2wv1jIbQcD74WeGyUPCS5tdhNEeygliZfT5kUKkpCzPird29LMiO4I1o59Ryb+zRx+QYZMwgX+0FvnXSuB7xvPNGVOq/FHZsllw8Cpqm0KbCrsUncQpRHjV55Wd2s7lxq+55pJmq1Yw4KKmHG4WODT5K9Lhrg7+2NfZTbOAaVQZxchQ22dNSlc+hLtaSAOEE9x3JjYXH61hlOLC8tMQeOfOXHjm1xTZatwkJRhrVDsYll5qQinRaAhtIDEK7IhdpHI0fwoGTuZmLQ9p3tmN3Ead1hH6lBk/95Mdc6H70KdIQ3s/TCnlpF4EJ+c+qWm7aIQ== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BY5PR12MB3649.namprd12.prod.outlook.com (2603:10b6:a03:1ad::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Wed, 5 Jan 2022 06:52:58 +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.015; Wed, 5 Jan 2022 06:52:58 +0000 Message-ID: Date: Tue, 4 Jan 2022 22:52:55 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 07/17] gup: Add gup_put_folio() Content-Language: en-US To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Cc: Andrew Morton References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-8-willy@infradead.org> From: John Hubbard In-Reply-To: <20220102215729.2943705-8-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0PR03CA0344.namprd03.prod.outlook.com (2603:10b6:a03:39c::19) 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: 2f222bcb-9b23-49ab-db7d-08d9d018019e X-MS-TrafficTypeDiagnostic: BY5PR12MB3649:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Yl5Kws7LbroBcryKthwtVI380+h5Na4MOsP9ckgMvFMxy2XgEwQ/B7rjqo6Jq8yyLrfw5aAAioLOCE7VZwPIe+3M4fOw/C7gnCW0yEUJRzrCIegc4aTfkHeQK2NWSlQklGIoN4Ju3pWurtnpspKUhH+e3skra0MA9MyWt2iWV2x79sTePRfH5gL0LBpPR1dkadrw/qFZ20WUGZkwNZ7idKK1yP1zBFBpQa2yCzNv1YiVsKIyLaP94Rrv4Fjs2AHwVkBIGmsRYr9kzBgB4p3JJ6FgSQbYRlPcA4DmU7jkurLeGKKPvutpW+bbYOWlI151QK9R2iVbgAu2jppLnb+Vj4witX/dKXcfTwRL4Hh8YCdAEJtERSmIsTsYlWPg5Ubq95SWFGAIJZOrQkXSr8dL+IoEbSgY4zvqlzfSpKcT0PPTykBc7Nry9LEG4QA6maQWxzd1m2mBubvoWX3K920NPeW6XHq/hGlDUwR3fnTpxNkL1UTjXAZKuV9YQOqjYxfskjSwy826wnEG9vzsI7/uJe060g+YazNxOh8nxHcAJEKhHDP7eHj4OwFOp1xw28CRfDI1TPSy8XpwdbgtUIyig2zY0TySf6Vq8j/MR7qYIAC2cO/SMn+A8RaM9Kn/Wvi2SkoKexsEvbu9Nfps3WB8LVZIsxYKAFniYVlTH8C7jccl4EEHcjJhb07MEYsx0f5wlY6wZLGB5a9jwOD5qaW11v0Bl1AgKH+sSzLaAGI8F/c= 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)(8676002)(36756003)(508600001)(6666004)(31696002)(5660300002)(86362001)(4326008)(316002)(2906002)(31686004)(66476007)(38100700002)(83380400001)(66946007)(26005)(186003)(66556008)(53546011)(6506007)(6486002)(2616005)(6512007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SmZHTlk3TmkreUJSWmtwZ1hqQ0lQL2tUdklLSW5NYmdWR2NVVXFxL2xvcisr?= =?utf-8?B?N0FLeDJGL1NqN1hCWDlFWnJRRmRHOUFHdzZLcTdoYVFiczVrQ21lc0Q0YWZD?= =?utf-8?B?Q0RoTExiclZPOTdqcmFDeVAyZHlvOUc1VkhIWDk5WDMybmhMOTl5aVpiK3dX?= =?utf-8?B?Zm9weWpodzBBUmJvU1N5a2hqYjhkNU5USkNXby9DSnlWUFJjOHdvUmc4UjFr?= =?utf-8?B?M1Rpa09tdFZlMlBPWGxIQjNGYXZ0T0I1MWtkNzZWc3NCOTQwN2d5TytLMzBE?= =?utf-8?B?bnFDSFZWeW92V3lBbkhvVkozd2t1ZFVFdDcvenY1YVIvL0pYb0RsZE1Oa0JI?= =?utf-8?B?TFhQRENzd3lGUlNlblMwNS9FTzJNSDJ4dXJjbEt0TENlKytUQlN5aEhXTVE1?= =?utf-8?B?a1pqZnJzM250RG1uOTRpclJOTWt5UERockpJTnhOUnVUT0x6MEp4cTlRSG05?= =?utf-8?B?M09aY0MzQ1pEN3JvU2s1RmtwWUV4ZUFVSzg4S3ZqYUV3UWNUd3F4bnNqVzBj?= =?utf-8?B?dFVXcHlqMWswMGhHQlpZRVVKWlJOUVI2SDVjbEJwZXorTTJZWFVudWszR1N4?= =?utf-8?B?bG1JVEZ2YjIwL0N6dmJNZE1vOFlvT05EL1RXZ205REdyM3d0WlZzcjljc0pL?= =?utf-8?B?czRXNlhMUzRLRU9mV29TT3VJWWQwQll0cnVFc1IwSE16aktQMVJjTGsyWGRw?= =?utf-8?B?YjlBeGlHVXpMeTZONk55Z2ROc1puTVhhLzNkMW51VnQ5MnhScHRMNDd3U1VM?= =?utf-8?B?OEhGL2FIc3BuK2YrbDlUc0JxTzh6OXRjN0swSjFkOGMyaHJkQ2w4M0pSNitU?= =?utf-8?B?eExOaXNkaHgwZzltOGhlNElZU2VTM2Rzd0JWeXBGV1hNbXNRMyt4SVJnemRW?= =?utf-8?B?R3A4b3A5cFh2S3diS05Jd1J0R091WmtSK3FocmxpYVM4aU5WQkZBT09IYitj?= =?utf-8?B?cDNVRmdFa2tBMjVWU0NFRGtWZkFTVkR1TUQyeVNwa3hYTmk2c25OUndQUmtX?= =?utf-8?B?dXVaRXg1VDF6Ty9GbXF3T01rY3ZlMmxHcVFHTm5QSlA3c2QrdVFaazYzb0Ex?= =?utf-8?B?R2t3ZzQvZ0p1dUxrcnNYN3lSU3NPSS9YcElmUHh2UjdTVFpQZDdSZFdsWUd4?= =?utf-8?B?NmtoS2pzTHlZSVJ6cmNKRlNKaGwzczFGa083bWU1MGhza1FBV1JPWC9YK2xu?= =?utf-8?B?Mmo5aVdkSytIRFQzanI4STNtODVUaUJNMHFoL0tHWlFtYTM1ZjRWbjNhZ3la?= =?utf-8?B?S2c0NDl1bmh2VXJzQVJURnZ2YkxuQkhKcVI4R0lyV3IyQWtOdThBMUxOYVhI?= =?utf-8?B?VTBPYU1takNiMk4xd1N6VXBZSXpQRTZ5Rm0rdGJpMWxQQXpFSjVGbnBHOW12?= =?utf-8?B?anE3bWhUVG9uUTV6S2JELzBzTHBSejhwWUVGekJyeHIvQWVvaUlXa0hST3Ir?= =?utf-8?B?VE5zaklqNVZGWTBlTWVKVm96bm90M0tMQW92WTljUEZBZjlWaWRqdXBWWUs5?= =?utf-8?B?UEU3NFFwMXNJVHdDci9GOXVMWXl0NG5tbjJmMWRTNTVyZWxWOWtDdHpsRU1E?= =?utf-8?B?Sk9NVUZHSDJvU1h0S3NSajdobUJNTHZJdEJYRVo2MDZxeTF6NHNZbzhuQkpj?= =?utf-8?B?bS9ZUVd3dlVHaVVJQkVVZnVaMlNBd2s4ZEtxMDlYd3VGY3BxVk5ETEdIM1du?= =?utf-8?B?TElURkF1TjBtVkRVUkhqZWlMSGE0K1QyWU8yeC9wREk4NG10WTEzeGxaeUUv?= =?utf-8?B?MFY5SHcrNGJoaUV3SmZRVlo0bmtlTHFsczNGT1VCZE5zd3NFUGtYajNpbTEx?= =?utf-8?B?RWhnYXNBaWQ1MzJGTEo3aFF0YlBXUVJNa3Bja1pWZndCL1lTYjNpamJGVGpw?= =?utf-8?B?OFYydVBDZDY0cVIweXFmSVdsMG04NGg4Z1RpOTFWckV6dFdnQ3l6TkpoRERo?= =?utf-8?B?NDFvZU9NdFIxV003RnJqdUh0T09IVlN4ZjQxR0lXSFpPdlkyVWoxOFp6TEI2?= =?utf-8?B?NFVLWlBZbGNXYXpFNGs0WTNtRVBRMjdhRCs2WVFuSFIxUzUzT0ZobHBHNVZT?= =?utf-8?B?RndKT29tS3BvVmlyLy9iekRscC9LRWJPRVZ2UUNYSWduSTVnazlncFhYTk52?= =?utf-8?B?bGg5YkRVZ3NsVDNNUjBqbjBmanBkemxTRmVDWGhwU1p5STFMZGFkU2FwZDll?= =?utf-8?Q?S3w2hcDALTz1PtUD/eQmkBI=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f222bcb-9b23-49ab-db7d-08d9d018019e X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 06:52:58.5395 (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: kWJ/mQfKUYgB60zirHFS7ESMW8lilnM8X83wiaV1G8eZhEf5lnh2MEWs9pEO39ctYFhCkcKJQEhKjEA/94aqnw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3649 Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=iMduWZYh; spf=none (imf16.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.244.55) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: F26E918000C X-Stat-Signature: n1rdfjww9o1gme4ycwurqi7drrsmdpxy X-HE-Tag: 1641365580-128976 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/2/22 13:57, Matthew Wilcox (Oracle) wrote: > put_compound_head() is turned into a call to gup_put_folio(). > This removes the last call to put_page_refs(), so delete it. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > mm/gup.c | 44 +++++++++++++++----------------------------- > 1 file changed, 15 insertions(+), 29 deletions(-) > Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > diff --git a/mm/gup.c b/mm/gup.c > index 58e5cfaaa676..6d827f7d66d8 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -36,29 +36,11 @@ static void folio_pincount_add(struct folio *folio, int refs) > atomic_add(refs, folio_pincount_ptr(folio)); > } > > -static void hpage_pincount_sub(struct page *page, int refs) > +static void folio_pincount_sub(struct folio *folio, int refs) > { > - VM_BUG_ON_PAGE(!hpage_pincount_available(page), page); > - VM_BUG_ON_PAGE(page != compound_head(page), page); > - > - atomic_sub(refs, compound_pincount_ptr(page)); > -} > - > -/* Equivalent to calling put_page() @refs times. */ > -static void put_page_refs(struct page *page, int refs) > -{ > -#ifdef CONFIG_DEBUG_VM > - if (VM_WARN_ON_ONCE_PAGE(page_ref_count(page) < refs, page)) > - return; > -#endif > + VM_BUG_ON_FOLIO(!folio_pincount_available(folio), folio); > > - /* > - * Calling put_page() for each ref is unnecessarily slow. Only the last > - * ref needs a put_page(). > - */ > - if (refs > 1) > - page_ref_sub(page, refs - 1); > - put_page(page); > + atomic_sub(refs, folio_pincount_ptr(folio)); > } > > /* > @@ -175,19 +157,23 @@ struct page *try_grab_compound_head(struct page *page, > return NULL; > } > > -static void put_compound_head(struct page *page, int refs, unsigned int flags) > +static void gup_put_folio(struct folio *folio, int refs, unsigned int flags) > { > if (flags & FOLL_PIN) { > - mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, > - refs); > - > - if (hpage_pincount_available(page)) > - hpage_pincount_sub(page, refs); > + node_stat_mod_folio(folio, NR_FOLL_PIN_RELEASED, refs); > + if (folio_pincount_available(folio)) > + folio_pincount_sub(folio, refs); > else > refs *= GUP_PIN_COUNTING_BIAS; > } > > - put_page_refs(page, refs); > + folio_put_refs(folio, refs); > +} > + > +static void put_compound_head(struct page *page, int refs, unsigned int flags) > +{ > + VM_BUG_ON_PAGE(PageTail(page), page); > + gup_put_folio((struct folio *)page, refs, flags); > } > > /** > @@ -228,7 +214,7 @@ bool __must_check try_grab_page(struct page *page, unsigned int flags) > */ > void unpin_user_page(struct page *page) > { > - put_compound_head(compound_head(page), 1, FOLL_PIN); > + gup_put_folio(page_folio(page), 1, FOLL_PIN); > } > EXPORT_SYMBOL(unpin_user_page); >