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 EA800C433F5 for ; Tue, 4 Jan 2022 21:15:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3DBA66B0074; Tue, 4 Jan 2022 16:15:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 38AB36B0078; Tue, 4 Jan 2022 16:15:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1DC186B007B; Tue, 4 Jan 2022 16:15:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0133.hostedemail.com [216.40.44.133]) by kanga.kvack.org (Postfix) with ESMTP id 0C0296B0074 for ; Tue, 4 Jan 2022 16:15:07 -0500 (EST) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id BAD16181C9D59 for ; Tue, 4 Jan 2022 21:15:06 +0000 (UTC) X-FDA: 78993859812.15.0BE87BD Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2065.outbound.protection.outlook.com [40.107.95.65]) by imf23.hostedemail.com (Postfix) with ESMTP id 65F81140003 for ; Tue, 4 Jan 2022 21:14:52 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XaFZ9WeuKRQRIdZ2JWKpWG8zhkzPaouOhM5TkOyKZknLANXw8Ppx7U/C6tVV/pXwwsJGe8BDluxNXwz1cois4OCdcw5dMve2wGeF77y1JNtUckod/Xpv7TYo0KLRCrGfLXQsnVtY0IWNcaLoxBiU/tjDpRw4fU4YOGwo1n/vtKBuPx+QFWz/M1+Onv5r2kxN81By4aEYUuB8wyGevVJLeLz25VPsiPbTGVm0puG0y0ZGJpE2cXz6HE7qWsvLmD4S3GX8Qq0Xr/lYMcCHtit+K+rw2HwerIES6Er/L6RfZKCu8MvSnBuXBsznn2M1fBJjq5KdFn8MTZwGW6ZjszLWmw== 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=cgZkdYMjFOYkYMBmYiDPBNfskeGL1w0d3bTnwJANxrw=; b=KHa68EwIKjTtPSw2X8Avdvv5uzk2H3FXFG3I/fRk+gBt7/NO1385lAh+6nU6PLkxOU6EnFRUVi9WRePqWIlY2ppZjJUfYYOFmGK15vU070/drZk8ne4FeEubqMBM4kjUo8KthtY0QOEfvMX2Tti/P6vETyeRbSg1s5sQ+UGJhvZ+LuzamrLKMy7UBkfIiYTOnXk5oqxjofyijEDtgkjO+CJSivasjoMuVdfrzin2HXccUhPlTh1YhC1vzp4AKs/pjbglX3tH3PwmRL0RrtNcV732XxUM2DijknfGxEADaii5MdM+gXcEaHY72K7WR6dZrn/1TG0H7NMwWLHTAbCNgg== 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=cgZkdYMjFOYkYMBmYiDPBNfskeGL1w0d3bTnwJANxrw=; b=sYuSwrDNAwaPeDGjTi7vRB2wNNx3HeNlDfHG9nvauj5UBVZIjFp5WCvSfrRmFRgAy527/VQDsjdxIlQWaQ/m3AowxuCzbzBV8GiQvgsuZJShl4RBiewOi8fjFQkRkA9vp920VWRlRi6nXg9QPv9mWGH1+7YTiK9GlEo8D5caAn8oBZpyHRAAOcIUTsNCPrbTS6ZaaJFETRIlS23PiGEoCg192GKRqCs5fOZTWwrZwt2WcH54ZnZEMckk9JDwb3dNeqsehRhnSz869IO9UQbuVwUvFL7m4po0T6mdxLFCuOcQlfPlj+HM+UXb+/W30cfg6wUUPz/pqEbt0iNw3zbEiQ== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BYAPR12MB2726.namprd12.prod.outlook.com (2603:10b6:a03:66::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.14; Tue, 4 Jan 2022 21:15:02 +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; Tue, 4 Jan 2022 21:15:02 +0000 Message-ID: <04ae55ce-88f6-e2a4-24cd-175289cc89f0@nvidia.com> Date: Tue, 4 Jan 2022 13:15:01 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 01/17] mm: Add folio_put_refs() Content-Language: en-US To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Cc: Andrew Morton References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-2-willy@infradead.org> From: John Hubbard In-Reply-To: <20220102215729.2943705-2-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BYAPR05CA0069.namprd05.prod.outlook.com (2603:10b6:a03:74::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: 76a0d6df-9405-44fa-42c4-08d9cfc745b5 X-MS-TrafficTypeDiagnostic: BYAPR12MB2726:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qu3i45hS3NV6krmela7rvVfydHtXTdpYhGQfh+yh6HbxAcoa/IF2wp/IhDZWms8CMz0UgmS9DBvuiKfcuqp4vX+vKb5B8R7F30i9+q6bSqgRdFMmxWz+ZodEyFW8dI+6PuYarduNsfEobT5ksCHc3MHvKX35d6hZ/Y1+fWjRHhWlW4KivgGP3SPMihg7M5Pd3kUpaH1JJML5L+TOYcUxbHAwOpR178jqYNvQyvLVNHUJtQ/YxFUan1Wh018JUGISdu/tKGMl09bG3/cI0ICms71vePjGkVTVmay+wBqd82Jaz0sDhWkVYFFs3em9aQUqiKJZp1NYPVZH5nZZhb5/YVJ/uQRtuxmFVMiKTmWoEE0j9gEdpPVRLUXc3JhNdhdxN49yo7/0Qx5Lb6tj3oyEgSs9jPGextbWBk+Ab3SpHTVlg582NuuYeDjirzxNCEWec+9Zp8R5n2iGpU5PB7grH30MvolMDOqc9eVxPonPfBJidq7AklEVZkwtssON97AcSa8EtKZHzTfKDbPBA9Qps2h3t5zgIDv0D+J1Gt6CLYOnh/aSXXYA49LiuMwXF0jYBG870iw3sAy4IbVah72pXsTpH7zVI3e2zS84NhoOZZcl0jLBb+fYxKuYfu7YaU8dw6DamlybF8Eg1FxwvjdwAJ0h3KN2x5GgJA2cx+R6SrLZwNy1MCyrGIndZHMIq0RqGeyXSm1pvlV9FMAWZWqV3C7HrnKw+x+2wqJaUu/Oqq8= 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)(38100700002)(66476007)(66556008)(2906002)(83380400001)(8936002)(31696002)(66946007)(316002)(186003)(2616005)(26005)(4326008)(86362001)(36756003)(6506007)(8676002)(5660300002)(53546011)(6512007)(508600001)(6486002)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YXhpMkgxc2E5VDd6ektRc2dQSE9iRU1QVWViUVlIeU9WRHpZZzA1WmpQUFR1?= =?utf-8?B?UDB3b0toL3EyeGh5UG9GWVBGcDRnQ2RnWXhLQUpvRHZkYzdwa29xQVl4NFl6?= =?utf-8?B?S25DSkRrUnc2Sjk2NEVuR2g5eXFoSUsyUjN0dDJyemRMZ0JLU2RaU1pKejNm?= =?utf-8?B?VGVwVnIwUXJFNmY4ZGdNb3hDcVpkRHhKckdWVG9ubE82UjRuZlNmR1RoMDJO?= =?utf-8?B?TTROUENKekRsUlBOU0t0eHlDQXdObHUxMTR6cStjbUx0QmRma3VISjloZXRl?= =?utf-8?B?d0k5ZnIzVm56bXBmVzAxYVRNVDdadVVWaU4wZUhsSmRKSVNPY2h5UDBuV0FM?= =?utf-8?B?TUtRbjhzbWFINUsyUTJzeEJpRnhjTjN3RXJZcWsyRDduWlRuYUcrZW50cTM2?= =?utf-8?B?MzVwTWpxUkFZUzBWYnZJT2k4ckhJZmg0Rm5rY0lsd1hVcWxmMk1ZZGRBbkQ2?= =?utf-8?B?VUZkdjMzd1U5QU9RY0lpREZuUFlyZTRxTzdnb3FTUDB5d3YvbTA0NVFzRFdG?= =?utf-8?B?ZkN2SDNHM3RBQ1pibTVYM2NjdjNqdUtCNkZSdlhEc1JkN0xYWWE2M0VyT0pv?= =?utf-8?B?RGo4eEp5TVdqV3Bad2poaFJxeDEvMXFpaDBOdEhZaGYvSEdoMXpFM2ZyMUdp?= =?utf-8?B?QnI3MUs2N0dtR1RhVDBRMXZ0anEzZ2tmTDZlci91Zmk5R2psZ054dGNsRHhy?= =?utf-8?B?ZU1QMlBCQ2lSamJ2dFZIMzZuMDRYQWswR2o1ODdFZnV5V1pSNjNTZERWcThD?= =?utf-8?B?Qm9nNUZyQWRneExsQ0pRTytLelg1S3JzbExYUEo0c25aSDZ5L1NaOSsrSktF?= =?utf-8?B?b1BESlIvUHU5dXpYUzFlQStieFJJeDdXdDNxOWhBY21VUzEyN05FYVFSNGJ2?= =?utf-8?B?SDRFZXhRaWZIb3EwZ08vdXRJeE9RSU1TZC82bmtwYUh2ZDU5OWJTRkxPNlZS?= =?utf-8?B?U2svMElBZDBkYVcwbkpHTmh0S2tsQVpodURjd2xDQXJjT284M3Yvbi9sNURZ?= =?utf-8?B?OFFLR2dkNzYvQTdrd2RCK0xLdlYrM2wyYnJTNFV1TzI3VDVZN1BuaFV1cURh?= =?utf-8?B?V3hiOFF3d2RTOSt5ZG5ibGZDdmsvQjRPeS84TGNHTmUyWlkzakNKYXF1ZXNW?= =?utf-8?B?b0taY0xtclRUVC9xa2tzbng5VVRCWCtkdXRjdElBVzdtQnBmdHFsOFJ4bE5I?= =?utf-8?B?bWh0eFdGbkFSNUVGSUY5NlJmK2QrZEJCMEpvdWQyUFdCcFhsWU9rZkNObkNV?= =?utf-8?B?dXVNZlpHZHdWbmM5YjNhMUQ0cmt3VzJnSXBLVUVuL3gvazArTUNGT1ZiTjdZ?= =?utf-8?B?RzYvTXRvb0paUmppamRnVVBIdmVCckRGQmd4ZXJpYXR1NTBCVXJTMDVEMVF0?= =?utf-8?B?c2grRkRvNzhYUzM5bnZsRk4rWVR3eHExRFBxYmxNd3laTTlteVRrRlNyMk8r?= =?utf-8?B?U2RQcEhqSUEvRVdyVG1WUzZTZ3p5UXFsZ3FlRVoweisvZzlOczQ4Z3pJT0tE?= =?utf-8?B?UDFXUFRraVVjanZaSTZsSjhYL01uNVppSHJZMmVvSkRVNWxLbWJud2oxOHJr?= =?utf-8?B?dmtyMG9kQjUrcDFSbzR0cVQ3N1NYSjR6UnpRUElKRFlYeFBRUnJrbXJlMmFS?= =?utf-8?B?R0dJNlhzTERISUNDSk41QTZpYWgvZ2QrU1duUXQwQW1iNkl0RXlJZlpvZndB?= =?utf-8?B?OHJkVkhDTGlNZCtxSjJWVFRWdUJTc0xHMEdlRVlTYTNNK2NWaDFzWmk1ZEk2?= =?utf-8?B?SEZHZC81ME9wMTFTS1JzSjBiUStZMGxPVXZoRHE4amZiWXdxcVBHWG1TU05z?= =?utf-8?B?bjFNRzRwS1cxbnhjY3BXb0hvSUFwaDNCM09CYnY3Zm8wdnhKaWkxQy9nMDBY?= =?utf-8?B?VUVjdmRBbkpxanZiYnNsOUNvWmJXdVdMSGpXVnRGQVlXaG5rMVhFVUNJQnhG?= =?utf-8?B?TGhiMHpWREgrZzhNam9CTnRBbVU3ZnlCVGRreU1tV0FHd3ZwWnRqUW9vMFpw?= =?utf-8?B?OUpUZ2w5ZnZtS3Yxd0JRK3NBWjFBdG9tU2h3Q3BmcjkxVHBwaVlFZ0FZc0J3?= =?utf-8?B?aUpJY29ROUxwZG5qVnpMTWVIU2FMbFNzWHk4L3hPcitrRjhBcnVWY3g0dGhL?= =?utf-8?B?NXdTcmx0R2Q0RGg0QjZKa3lmVjczWDk2S0dsQXpUc1JpYVNtTnZCMHlqYTY2?= =?utf-8?Q?r7B3bdZBpxB5DzY/2/tpTyQ=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76a0d6df-9405-44fa-42c4-08d9cfc745b5 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2022 21:15:02.7552 (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: iS3huj265g5qhWp7YAI5Uet6QV3mG1g1ypg3PBE55WAQJB6UB94Yc8+KW1n406OBhnnyJ0bjWiAD3rPzqslrSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB2726 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 65F81140003 X-Stat-Signature: h8stsdnd96wzymc6i5fghfaskijdsxas Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=sYuSwrDN; dmarc=pass (policy=reject) header.from=nvidia.com; spf=none (imf23.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.95.65) smtp.mailfrom=jhubbard@nvidia.com X-HE-Tag: 1641330892-847642 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 is like folio_put(), but puts N references at once instead of > just one. It's like put_page_refs(), but does one atomic operation > instead of two, and is available to more than just gup.c. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > include/linux/mm.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index d8b7d7ed14dd..98a10412d581 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1237,6 +1237,26 @@ static inline void folio_put(struct folio *folio) > __put_page(&folio->page); > } > > +/** > + * folio_put_refs - Reduce the reference count on a folio. > + * @folio: The folio. > + * @refs: The number of references to reduce. > + * > + * If the folio's reference count reaches zero, the memory will be > + * released back to the page allocator and may be used by another > + * allocation immediately. Do not access the memory or the struct folio > + * after calling folio_put_refs() unless you can be sure that these weren't > + * the last references. > + * > + * Context: May be called in process or interrupt context, but not in NMI > + * context. May be called while holding a spinlock. The context documentation is a nice touch. Come to think of it, there probably aren't many mm functions that *can* be called in NMI context. :) > + */ > +static inline void folio_put_refs(struct folio *folio, int refs) > +{ > + if (folio_ref_sub_and_test(folio, refs)) > + __put_page(&folio->page); > +} > + Looks good, and definitely better than the previous put_page_refs() approach. Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > static inline void put_page(struct page *page) > { > struct folio *folio = page_folio(page);