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 8214BC433FE for ; Wed, 5 Jan 2022 08:30:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1593E6B0071; Wed, 5 Jan 2022 03:30:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 10A706B0073; Wed, 5 Jan 2022 03:30:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EECD96B0074; Wed, 5 Jan 2022 03:30:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0208.hostedemail.com [216.40.44.208]) by kanga.kvack.org (Postfix) with ESMTP id E04066B0071 for ; Wed, 5 Jan 2022 03:30:40 -0500 (EST) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 90FC095B11 for ; Wed, 5 Jan 2022 08:30:40 +0000 (UTC) X-FDA: 78995562240.24.7DAB035 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2067.outbound.protection.outlook.com [40.107.94.67]) by imf20.hostedemail.com (Postfix) with ESMTP id 35AFA1C0002 for ; Wed, 5 Jan 2022 08:30:30 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vgs9Rr+SwkWZXEDiJwqiNkHxOYj7h9AstGXUVsjhT0mOWgaor4+H5M8CgzjVtoRWKGz4BbDQ4jAN29+RSSpm3Nq0iwhFmuQxbqx8JYzL3TQb4stYzh29QxwDyqhGp8d1viwnXoad9b/QJV7V5QsD5EH3Fv/049bI2qOKaoSC8fSaRxpj8fHX4zh4f4w5FqeRPwZVHa2k/cKQNwSHOF6n1gZS5GhAcffZffEXP8lXaGUkSO8VMffQw72QE3puveeNMnVvuEjUOfgVlntVmmUCJt8rIl0jqmyq7dpD8hQD5YIutuNuVsWp/G9qTgZbX6D0a2oH2Ns6qMaWaxQBcbgXZg== 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=zmNclWD9JgpfwzrRZsE4mWgnOAywesOn+65cNDIigmo=; b=f4wgcEaIWdWhR+DVSUmLa5mjqUYJdiQQ4LJStFgNwGMyxIVXXLdbeFeCV+9UdMnMnAi0rOJSnq+Y+pqVq2WPwaCjtVn8GFcrCeX898U8G4xfwwhN/LoTq3k8v6vybvzlw6OaHVe0lgCPwsSV3wIzJIX/Dr9Mqzd5iIiwyrCUxa4A+BvN3X9aGc6vvTb9BNv+sXpgqsLoJCEcUV3syONs8ezyas/2JxjOFqLZmEnbGrbRI70chk6X26aipe5MgYimzeWygnQ/49a4mDCZzE66epYlf4BvP8zQOU6HIGm/EFq0/6xLqBpEqoCcN7Vsd//JRRzF21VfkeXrCqxs6bwGFA== 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=zmNclWD9JgpfwzrRZsE4mWgnOAywesOn+65cNDIigmo=; b=ttuFby3GoJWC2PLlwThSaWJv3M+y1lS1sI0Cb0JiwJNyaoCFfXg32BvzOuhjILAWYqqsyYojKO58I0nUskV9Yjw9lc6Mwpf7Q781SZTxjRccOwM+B+ucfbHoyEWZ54/MbLS+jbGofEMshM8uEtaLRc3Rk+o1KhRr45utYYYHDe3pAU+kcZ49o+rx4e4NVTgEqQHCIrc/nZrpd8BoVdk/zMG82P9JaFM5moGl0b6f/z/EES/rWFDmWCXJ/9+zy6XANND4c4eqP2PzFUN0WaxKk+HwlFKc6kLyp+3uy+sg3VgVtUrxSf/PPgObseUfMCOafldYQ9B+FHNG26u1qm0iUg== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BY5PR12MB3780.namprd12.prod.outlook.com (2603:10b6:a03:1a2::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Wed, 5 Jan 2022 08:30:37 +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 08:30:37 +0000 Message-ID: <8587c668-d12f-5c32-4e45-f69fa7db84be@nvidia.com> Date: Wed, 5 Jan 2022 00:30:35 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 15/17] gup: Convert for_each_compound_range() to gup_for_each_folio_range() Content-Language: en-US To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Cc: Andrew Morton References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-16-willy@infradead.org> From: John Hubbard In-Reply-To: <20220102215729.2943705-16-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0PR05CA0052.namprd05.prod.outlook.com (2603:10b6:a03:33f::27) 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: 24d30172-d7b1-4f9c-ad0f-08d9d025a699 X-MS-TrafficTypeDiagnostic: BY5PR12MB3780:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1013; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: smk/gtLiYe9c4PJ/5xlEAFLoWr6tEEFmg8CdgUO2MKz81zgDgcwKUhvxvoXXfrgPMpvLyFy6lgzxrQGCKoltbmj3JumUp5xwLovLoq//itKdyUxzISDqSrZh6LGBYsOGX82hGmxwKno2QH5kN0bFOa4tBtyiYYPH6zBf/LAY6eg7oo0aQv4y8wItIJEUM+mfGQ2TMJ29xnDpP4wzcpEKT2BCyh+8o4hsUHcxogjHrQycoGKlUY+iNJGOluYFFZotIU6M7+DUHGg6BdsywLqpw98XBH6qjEvTf/raWN8qXc5eYWXnQIKk94QN6+COFG9Tnu2tZMbjd3+WaWB6YuixmOTHbiuScRpc7m3UNA12syLYj+qyWJ7cF4BpL3VGwgVm902eLRJHADp3TdVdA5I3FUVH4NUbBJw1Q42Xj5tetznV4yDIbqRN75Ywh5QyaCBIu/1uawtVJpZMPUCp1wwSaz8vcjcGcRyaUNWy8EKIi5J7pV0Od4plnaxDhTzT/BemifK55k1NueiK6gLqnKCsyBQ0IjeGPqC9gXZKrMHpOxufomey+mo7X3Q2Cj5ODQMBxw2CbtMyUfTLknNmFzxm7bIF2iyojh46KCFbswib/3USDPm/nSm1FmyKSEC+9Ua14Ng15xUHPU/wUUiEwteQISSixXOc5aHq1XO6/LRfPAWR12jFEWAhD2oUNZ7FuR0Kh72Fwys04pyCsZS5PzguUF/4GfmCx2xxBFzLNRNoX2s= 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)(2616005)(36756003)(53546011)(6486002)(8936002)(4326008)(26005)(6512007)(8676002)(186003)(31686004)(83380400001)(66476007)(66556008)(86362001)(2906002)(508600001)(6506007)(316002)(31696002)(5660300002)(66946007)(38100700002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TktEOTJqSFROb0MyQkdKRkdjdjhtL1hzMkpsc2NvV2tUT3MrVGNoYUpXYitI?= =?utf-8?B?WkwrTFFYMnpqcGFqeSsvV3U4N3BPdTMvQkhueTlZR2U1bVVXRnlFd0NPQ1hU?= =?utf-8?B?QXlCMmErbHNERm1MTFBlY1VVZDFaRTlyWnBzWC82aGlWN3MxU1g0RWpOWHVU?= =?utf-8?B?eGpZdFRRQ1RKbWQxd1BXcW50SkJ4d3U0QzROSzdlNm56UFZtSURBQXRYZlFE?= =?utf-8?B?SmFVQWRacVNwOWdkeGQvV3JYVmVIMk1RYnlCRFZaV3Vhak14bWprUGhtWkdm?= =?utf-8?B?Zy9iWlVWVW8ybHg2anp4VVpHeFJTQlFYaHdqNTJBQ1ZoWnIyL0IrbDN6aWJX?= =?utf-8?B?T2R6b21nLzM1QzJObWpxOTJsbFJpaFY3cGFybSswZE82aldvNzVVeWtVRWlr?= =?utf-8?B?MStkcE4yV3BVVEZPQjI2alpqVkNGbUFVeWJ1NkxrTDBDVDRlS3dFMXh4TnFp?= =?utf-8?B?WEZWUnNVN1YvWHVIOHhkb1hvQTVBbzdxME41ak9RbnZSL2dPRTRkZlE2N0ta?= =?utf-8?B?eFpFSFRhRUFDRmRYNWVFSlNqOEVGTzdRbFl5MHA0MmNqM01pdkp0MFduRU42?= =?utf-8?B?RE8rdDg2blVCUmdVWjlWaDUxNzZyUURoeGhVY1hWNWhDWklVcWdJTGhQaVVV?= =?utf-8?B?bTRJM2U2blkvTTkzSDdYcjZXUHhLbjdMdVpEYzdqa2cvR0p3ZE93RzN1SUxZ?= =?utf-8?B?UmV0NlJVQlVpei8xYnduRU1QcjRlaXpIMjZBTjdkTmVGN3d3aGRZeGJZVVNh?= =?utf-8?B?ZG1hTGtpa2NWV1pjYUwwUEpmVS9jR0lCclVhMlpKYXNLYWs0VkZzTi9TYnA2?= =?utf-8?B?NXg2SDZ4aDZudy94RzdKaEhJV3dINTJ6Yy9EaWJLMmp0UERuMDZTVTB1dWZi?= =?utf-8?B?V2Y1QVBtUlVHRTFKakRzME05TytPdE45QklqUWlqUU13V21zVmVmc0R3RUdo?= =?utf-8?B?Rkx4TFZYcVJrQ01xUU0xWW1WVGttMXdpVjY3TU5SOG5FMjhTM09OeDBWVTF3?= =?utf-8?B?eTREOW5obk8vMC9TdTdKMjI1RDZKWXhHQTVMVDY4bnR6YlhWcWRrMGE5b3N0?= =?utf-8?B?RVNXa1l2ZHpvbjZQV05yK0VBTHM2Nml2MnMycjdjUkNGenFTZkRhZ3FPeFdv?= =?utf-8?B?aGJJdE1HV0tTUmVvTzVKRDQvN3lIb3g2SjhhMDBVZHV3VXpiL3lHNmcycTln?= =?utf-8?B?OFdQd2ZKYnNhYVNBYU5MeGZ1Z3JqTUt0d3V1Q0NrRkVUUDFmY2NvSVM5MHlV?= =?utf-8?B?TGkwbSszUHlJWURjVHJBYlFxWTROdjVDVFV3UWhJTk1MN3BMRXMvRTRZa2ZM?= =?utf-8?B?a2N5Y0pmclIxZW94anRkT1JnNU5pN3VLUlB0eG14QTVGMmwxT2ZPMVpFM3Iv?= =?utf-8?B?T25YTThUMjIvVnp5VEFPUXdjKzE4OExJU0p0MkpQZWhYQ2FKb0Nic1pRSWE2?= =?utf-8?B?dWRLVHhtOHI4QkpnMC9xdmx2MXNLTGk5MU9hWElSdGRzU1l0S2J2TFQ0QStG?= =?utf-8?B?Um9XSkEreWozaFJ0TWhoRTJNaGtXTkN3WEhxVnVPZlVNdmtOeFZwa1VYV2RR?= =?utf-8?B?YU9UZ2ZieDdQOFZGNUVKODl3cEoxQWtxRWxMV1g3NEFYMkUyOFVkNU0ybzUz?= =?utf-8?B?WXBaQU9tWGtoOFBGOVpkU2lnUnRtQjErSU9iOW8vNmlFc1B1V1cxT09RUmps?= =?utf-8?B?Smo2OGl5dzB2ekxDaENNZEM5dDhVaHA4YXQyRWJsbmZmZmdRQU5SNC80aXdH?= =?utf-8?B?U3l6UlJqK29uaE5qU2w4NDc2Y1JxeVdCRWtvWUNNbVpoUlFkOVRlalkvODdN?= =?utf-8?B?eFhuL1pIQSs0eWMvVzBxR0xUbktibzAwMVZoQzhodVNXM1p5QnZ2YTdVKzFt?= =?utf-8?B?NzdqUHY5dFgxZnNuY1F4Yjd3RFlYbExXSmY1N0lOdThTYmFianpQNWFTNHA1?= =?utf-8?B?RlJaaTArdE1ROHBBQitVQ0JKTUhyZDM3cXZMVFJ2ZW5kN1RzOE5lNVM0NDRL?= =?utf-8?B?TUlqZnh0QWNrNHFwZDhhNGROTGxYWDlscDhFR1lwQ1FvQThFUHA3eXN2aFdD?= =?utf-8?B?Nkh6dzBjZVFvS2lSWTMxWG5aemhDU0c1Q1plcE96SjVRSDg0VmpUcTAyOUZT?= =?utf-8?B?c0RiYXFleEFFUTYvenUxd1NiSUZtdFB3T0RhUDBtamRzZ3UyZFRKSTZ0NjJv?= =?utf-8?Q?0GdpRS5Cmhe4Mhry5wXUERI=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24d30172-d7b1-4f9c-ad0f-08d9d025a699 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 08:30:37.8029 (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: 208I9BUTL6c8gM7a/G8u6c7sxnz3gMOfuB3YGB67+lFgwZN5D/hGX4Fa9vfHF/aZaQ/J2nD2WIDpjtgEp9O/CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3780 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 35AFA1C0002 X-Stat-Signature: fyqteu78b4rgj3zqxk8t3jihgf58b3mw Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ttuFby3G; spf=none (imf20.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.94.67) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com X-HE-Tag: 1641371430-533304 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: > This macro can be considerably simplified by returning the folio from > gup_folio_range_next() instead of void from compound_next(). Convert the > only caller to work on folios instead of pages. > > This removes the last caller of put_compound_head(), so delete it. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > mm/gup.c | 50 +++++++++++++++++++++++--------------------------- > 1 file changed, 23 insertions(+), 27 deletions(-) > Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > diff --git a/mm/gup.c b/mm/gup.c > index eaffa6807609..76717e05413d 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -165,12 +165,6 @@ static void gup_put_folio(struct folio *folio, int refs, unsigned int flags) > 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); > -} > - > /** > * try_grab_page() - elevate a page's refcount by a flag-dependent amount > * > @@ -213,31 +207,30 @@ void unpin_user_page(struct page *page) > } > EXPORT_SYMBOL(unpin_user_page); > > -static inline void compound_range_next(unsigned long i, unsigned long npages, > - struct page **list, struct page **head, > - unsigned int *ntails) > +static inline struct folio *gup_folio_range_next(unsigned long i, > + unsigned long npages, struct page **list, unsigned int *ntails) > { > - struct page *next, *page; > + struct page *next; > + struct folio *folio; > unsigned int nr = 1; > > if (i >= npages) > - return; > + return NULL; > > next = *list + i; > - page = compound_head(next); > - if (PageCompound(page) && compound_order(page) >= 1) > - nr = min_t(unsigned int, > - page + compound_nr(page) - next, npages - i); > + folio = page_folio(next); > + if (folio_test_large(folio)) > + nr = min_t(unsigned int, npages - i, > + &folio->page + folio_nr_pages(folio) - next); > > - *head = page; > *ntails = nr; > + return folio; > } > > -#define for_each_compound_range(__i, __list, __npages, __head, __ntails) \ > - for (__i = 0, \ > - compound_range_next(__i, __npages, __list, &(__head), &(__ntails)); \ > - __i < __npages; __i += __ntails, \ > - compound_range_next(__i, __npages, __list, &(__head), &(__ntails))) > +#define gup_for_each_folio_range(__i, __list, __npages, __folio, __ntails) \ > + for (__i = 0; \ > + (__folio = gup_folio_range_next(__i, __npages, __list, &(__ntails))) != NULL; \ > + __i += __ntails) > > static inline struct folio *gup_folio_next(unsigned long i, > unsigned long npages, struct page **list, unsigned int *ntails) > @@ -353,13 +346,16 @@ void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npages, > bool make_dirty) > { > unsigned long index; > - struct page *head; > - unsigned int ntails; > + struct folio *folio; > + unsigned int nr; > > - for_each_compound_range(index, &page, npages, head, ntails) { > - if (make_dirty && !PageDirty(head)) > - set_page_dirty_lock(head); > - put_compound_head(head, ntails, FOLL_PIN); > + gup_for_each_folio_range(index, &page, npages, folio, nr) { > + if (make_dirty && !folio_test_dirty(folio)) { > + folio_lock(folio); > + folio_mark_dirty(folio); > + folio_unlock(folio); > + } > + gup_put_folio(folio, nr, FOLL_PIN); > } > } > EXPORT_SYMBOL(unpin_user_page_range_dirty_lock);