From patchwork Mon Mar 7 12:24:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joao Martins X-Patchwork-Id: 12771701 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 11CE9C433EF for ; Mon, 7 Mar 2022 12:25:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2CFF58D0005; Mon, 7 Mar 2022 07:25:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E0598D0001; Mon, 7 Mar 2022 07:25:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00AF68D0003; Mon, 7 Mar 2022 07:25:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0249.hostedemail.com [216.40.44.249]) by kanga.kvack.org (Postfix) with ESMTP id E521E8D0001 for ; Mon, 7 Mar 2022 07:25:36 -0500 (EST) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 999EF183084AD for ; Mon, 7 Mar 2022 12:25:36 +0000 (UTC) X-FDA: 79217511072.21.73EE501 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf04.hostedemail.com (Postfix) with ESMTP id EEE8E40007 for ; Mon, 7 Mar 2022 12:25:35 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 227C7jXc010192; Mon, 7 Mar 2022 12:25:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=1YUEoTnh1aGzrXHHQVADdNm+TBpzs27JjOXaNE3VmQU=; b=iRfMpUet9aAWXcG6ZDy60pda84eRpJHzo4+CDXRqAMGIpbw8GABmPhl2sQ9u4dv6pQc1 v+qqawlxoJQilfx2WHJ7Pkan+vgNF6CGmHp1Ja0f/5K+5NCDOJseAzxzPHF35zelf8H9 AKaejivWnTh0aw1WTbroXbyYdUaMJKvk5FcEROCd2dPVeUZojRH392RWY3qh8JX5v/pQ ALgJZjvfl5G7cZPvI0HIVLkcjRdZ+AJT7W3NKVJsoOh5NhXn1sBn6yX79fQdtoGL6MPR bKWrXbOQNgdVn+YBfP4CkVFGr34wtJjqF3lgEKIdbpwm+evh4FUau2g+SljJn3bw91/d Og== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3ekx9cbkwj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Mar 2022 12:25:15 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 227CBYBn009524; Mon, 7 Mar 2022 12:25:14 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by aserp3030.oracle.com with ESMTP id 3ekwwaxjyg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Mar 2022 12:25:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IaoEkc/az9ZYIRmM+Mm8Y8E3JhtkygUcLKHApUDR6Z7u4Dpe7zthjYqJsX42elXCGiiVQ17C8DynBb1/G0Z1b2h96tpwMwkCtn5pgdDyJ4vqNn6//4PxWSpib8G2fI5C7rOAVcZpwHAX5odoBnQ9JpjOyqm0o3aEuTvNGBkwZJkCHN9Yq53chWgrVj0KbP4A652vK4cNDoQdY/u+T/7BVZ8KQvLQkXptWKX3fVgp1MPbKjpY6Ezh/XqzyNjcFgGtL3tpgjjU7S4PffBQ9Lb2wBUw94AC65A/8cpElv+T5FLbaVNshXRIKie7cLK0eX8hrFWS5BhpCtSlo/Eitx8UMA== 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=1YUEoTnh1aGzrXHHQVADdNm+TBpzs27JjOXaNE3VmQU=; b=dUn0SGrmopWDxfMx8K6T/yNxdBnmJULO1fLL+HbqsR3By7WWVvvZH8vI0aNEiYhUbK6zANxGb4l88FYfSxTd27gmIf9iyfSRZHZF/oRbIt8o2bFRu0yQT/rkuDP+yQGyvNQr+lhX3jkc9hs2nwWLOeM3S9iyPAeyw8okgAu9zVLUED1jGGNzKkmO54BFQknTHR+VPrRpK0n6WlrtUcE71WzGBZ+3vuRpNRVvIfEKeYSiZ4WFvYvCddd0OqYS1x+e29SVgMD5HnjdrK3zN2TD8ea3nMUFa6URr8RrnRcjdb/hpzennwh5zCkxosopTpChJizp8SXyF59prNgk6Y+OlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1YUEoTnh1aGzrXHHQVADdNm+TBpzs27JjOXaNE3VmQU=; b=bzn7BQUK7iBG8ryPjYFXUPgY3bUbYUn9O8cyxPhH+2rh/RdTB2TVUMA94k9/dti5nsLCmTuhFbppuOOlcw1XpadjRuLtLNUITolTxmQkSQCUDR4uWuxOI5wcOBhqXDgGHRZ4KByybX2NPasMq8CHpCeS1GQg+F1lSThKExmnMao= Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by DM5PR1001MB2284.namprd10.prod.outlook.com (2603:10b6:4:30::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.19; Mon, 7 Mar 2022 12:25:12 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::750f:bf1d:1599:3406]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::750f:bf1d:1599:3406%5]) with mapi id 15.20.5038.027; Mon, 7 Mar 2022 12:25:12 +0000 From: Joao Martins To: linux-mm@kvack.org Cc: Dan Williams , Vishal Verma , Matthew Wilcox , Jason Gunthorpe , Jane Chu , Muchun Song , Mike Kravetz , Andrew Morton , Jonathan Corbet , Christoph Hellwig , nvdimm@lists.linux.dev, linux-doc@vger.kernel.org, Joao Martins Subject: [PATCH v8 2/5] mm/sparse-vmemmap: refactor core of vmemmap_populate_basepages() to helper Date: Mon, 7 Mar 2022 12:24:54 +0000 Message-Id: <20220307122457.10066-3-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20220307122457.10066-1-joao.m.martins@oracle.com> References: <20220307122457.10066-1-joao.m.martins@oracle.com> X-ClientProxiedBy: LO4P265CA0019.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ae::21) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 815f346d-d073-49d7-7d55-08da0035871b X-MS-TrafficTypeDiagnostic: DM5PR1001MB2284:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NsP7skPpsH/sEREpAA78dGQYXcz6L+r9MikFa/u+rWLXXv8AtV+J/IU/NNOJEiU+LevAcN/lS9YNPhhH3aIbSN7Vc7RbvnzJdouJ6eBQJ/sP5e0k1SrzqgApdhLrVt42ZTwqJYCH4IdQLQiASgbQBB6JgG93C1jVzl8tXcMmm3oV0DASq8yMYoNJb06Av26jLUz2lm6or3xfsINxlsFZst1SIKEuLVWAUDInv5PhcJ95U7N+jWFX120ft7VhAH12UnGILj2UDF7xVbGTibNXeKAnYFsp4HEQKfsuggeGh9n7hHyItXjhdk4P4KFBdIEiLWxk+Nd9PN5f/guPGOVzSNEq3ey3S42Jxvj0jtDSkuOOSteOo5bvMz2KsBKTOai4l4xlxKA9t89K4Rn24hUCqLzZYaHAhcIJNB6fCrfsMth184Vsc6Fvde2qxTOE3wZXmDad3wr80D+GBemo2ut/1J7Hxm+LCX9i0a09Y/woJAt+271QHekYg/6jf9AQw9z8bZdIqr4R8nW/d4E7z52s93QcnejQ86xpC4xRkUIIiJcGFJZ6Nsyb9rt14qaDd3ksiTk5hOK1qo9YXkcUZBSuBtPmQ6kV3NGV0IFBqL6BBrqjA7U0G5FzR51VQMjZOxK45vgje0R8CfUPjX6ls2VYV0jAksQZAKRn+a7kZCf+jEcQh7ny21XAArN5Ieer4dUC7ULq/iX3N2tTTpfNrBc2dA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR10MB4835.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2906002)(4326008)(103116003)(316002)(7416002)(5660300002)(8676002)(6916009)(66946007)(54906003)(36756003)(8936002)(52116002)(6506007)(6666004)(6512007)(6486002)(508600001)(66476007)(66556008)(186003)(1076003)(38350700002)(26005)(107886003)(38100700002)(86362001)(2616005)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZBredoUx6NsBsVJG1iiiRv49yZbHiLPpghbdVy24Ktrc9n5XB446/FVeqb4eprCpv/sRSkXT6XIt802bhCtFraa200bd8vhyA9T9hVEXe9mWXAfV98v5vE7x2Ryj6RVVj7uojCG/VoqbW2xqGg5WK+llGIn8ndil96GxlVyC6qfXIOYwdZYeLbFAKxPBsXYZvNHDCWRd6+2NfrQWtPG0lcf+ebs67UrlOIzoXSgc0nj/9AVmKZ22AM2tM5TAs7UX9ncM/ecXO4WBJkbHLDguE5dt3npgs3GV2+VK+hkvq8mUOgHW/J5ypLgrv8ad+7ez4D0UogHk1oLt4CeeGRzP5Y3nlhXWTTBGxqbHx/7R6yrkTDsCQvTz7ZxlWw5/wxLbjxz4prIYeYF8Vd95aHl+YYrjNNiniJxBtBqF7D8IcobOckqYAQLah/t1bJeeDC8GJNh5wHX7ZSvjLpHa3PMPEOkOXsXGenpwSUDaRxbHoKf8PSav4F8J2+V6ceYwB4McEzK7vk7pW4gSC4hZeYnX4GZ2LJY1ud+sdvPp0Xpx8cEF9vUuH7AOxsi32n6GWEa5O5fMXeT9h2KmCIc7UzBrwq+1dLlAo1CYU4Yek6LkB7YtIt+/aJ2u52sK1kOMIqkHivaD+Mj3EipkLqOQ1MhlHTQ17t7K41TYOdeSAl0J9iPdxK6WrSqJvzND35Mw2cyjX4JzfAJHTecoCy6ja7gLOQMCPKH6RrPFbYF52bz7Nps0++MwaEWE0MFEU8IOF1qOoP78z6upICsLDIIZD14ba4R+f4aDT8OfpAG9D3GicBdGhGccW+d6gDasoChsoDu8OBkG4K0ksAQXHu1u8QtQA/LAuOom5btJsAIjsAB/DcmbY5i8mH8JLxfMqsNWVEINl704ahkZxCN83yDD98GMCBvP7tHeJuaKiAWg+67NPkG4qVzfKNbsjJhlxqQbMpRfjfH8wpwoyGJx7WNtKXQMDGb3gktSyo51//RmaZDIi4224LjM9mVUjmiL4vRiKA/bq14+/ZqdZvUEc+Z9W/5LbvbK5PsMpXGZCXN0s7c1SyGfOC/rAcPHnrF0ByL1y/UH/UoTdL8CVPTPm7G21gzvZ0S/TvssBZ8vIPWB+aJvRoo9UrJvz+I2CWiIyUundBaTlE7OV5KV49KqCrH42xNrDKf9Me1h42Nri1IBaBLF/UcEpL74vnqHtUUAmGPFg8jS1w/iwiskFitmnFYkfT24+hlm4I8cls6UL0Tn1uk+luNoncgqHEGkxjgnCY31Y5cCme0R/rixXVj6eo5McAOiPIivaJECL2lvZeln0DSaskjrpzmzpa6TmQqzHnnbDbX5PidDwd7qWI5ncm6LP1wWw/kG9iMNj7I6hRg7Yl/iQCGFK/4MLUxxe9ZyYGQi9oo0T4FIAw87nFftCt/y5kzbFgRSTqIxKNG3bdSZYAdGmsGSeOu9Dsl6TuE/deKTBun1F5DdMLtgDOOFiq1E35ubi0czKk4gdxirQpzOERIZpjhCZVBzKaIlcIZRpP2Z2z+NSekXhQC4VnL7OWRhJzNa5ScdrPlzfLs+gJaHiFDr2BdIScDj9yt34MkphVB1Y4mZInIcBBLVWhTrwOAK98kz9kxXcJ+Xucbr5HdoSGJLIvNqS8+LAa8jq0hyoZZqU7ISQsQqcs6yh7V8EV8L2nkJ4w== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 815f346d-d073-49d7-7d55-08da0035871b X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Mar 2022 12:25:12.8057 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8WjE11Gv+awbzsxFK07hC4aaTeKquxS12T1ucCZ91+iz0Wlmct/1ai6owDgVhxcuyqynm+KYCp0cr9XvwV14q6VZxLFhr9tmgB2bTpmEGlg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1001MB2284 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10278 signatures=690470 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=842 spamscore=0 phishscore=0 bulkscore=0 adultscore=0 malwarescore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203070071 X-Proofpoint-ORIG-GUID: YIYzdHjbGz2JlDvW3bD98OPa6S3vsLeZ X-Proofpoint-GUID: YIYzdHjbGz2JlDvW3bD98OPa6S3vsLeZ X-Rspamd-Queue-Id: EEE8E40007 X-Stat-Signature: db4rxeazjwuyecijcak4pyscorqq6azn X-Rspam-User: Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2021-07-09 header.b=iRfMpUet; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=bzn7BQUK; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf04.hostedemail.com: domain of joao.m.martins@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=joao.m.martins@oracle.com X-Rspamd-Server: rspam03 X-HE-Tag: 1646655935-528484 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: In preparation for describing a memmap with compound pages, move the actual pte population logic into a separate function vmemmap_populate_address() and have a new helper vmemmap_populate_range() walk through all base pages it needs to populate. While doing that, change the helper to use a pte_t* as return value, rather than an hardcoded errno of 0 or -ENOMEM. Signed-off-by: Joao Martins Reviewed-by: Muchun Song --- mm/sparse-vmemmap.c | 53 ++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index c506f77cff23..1b30a82f285e 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -608,38 +608,57 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) return pgd; } -int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end, - int node, struct vmem_altmap *altmap) +static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int node, + struct vmem_altmap *altmap) { - unsigned long addr = start; pgd_t *pgd; p4d_t *p4d; pud_t *pud; pmd_t *pmd; pte_t *pte; + pgd = vmemmap_pgd_populate(addr, node); + if (!pgd) + return NULL; + p4d = vmemmap_p4d_populate(pgd, addr, node); + if (!p4d) + return NULL; + pud = vmemmap_pud_populate(p4d, addr, node); + if (!pud) + return NULL; + pmd = vmemmap_pmd_populate(pud, addr, node); + if (!pmd) + return NULL; + pte = vmemmap_pte_populate(pmd, addr, node, altmap); + if (!pte) + return NULL; + vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); + + return pte; +} + +static int __meminit vmemmap_populate_range(unsigned long start, + unsigned long end, int node, + struct vmem_altmap *altmap) +{ + unsigned long addr = start; + pte_t *pte; + for (; addr < end; addr += PAGE_SIZE) { - pgd = vmemmap_pgd_populate(addr, node); - if (!pgd) - return -ENOMEM; - p4d = vmemmap_p4d_populate(pgd, addr, node); - if (!p4d) - return -ENOMEM; - pud = vmemmap_pud_populate(p4d, addr, node); - if (!pud) - return -ENOMEM; - pmd = vmemmap_pmd_populate(pud, addr, node); - if (!pmd) - return -ENOMEM; - pte = vmemmap_pte_populate(pmd, addr, node, altmap); + pte = vmemmap_populate_address(addr, node, altmap); if (!pte) return -ENOMEM; - vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); } return 0; } +int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end, + int node, struct vmem_altmap *altmap) +{ + return vmemmap_populate_range(start, end, node, altmap); +} + struct page * __meminit __populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap, struct dev_pagemap *pgmap)