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 447D3C001DC for ; Mon, 31 Jul 2023 14:15:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D49D9280068; Mon, 31 Jul 2023 10:15:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CF9CF280023; Mon, 31 Jul 2023 10:15:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE856280068; Mon, 31 Jul 2023 10:15:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id AB72A280023 for ; Mon, 31 Jul 2023 10:15:38 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2FB27160B85 for ; Mon, 31 Jul 2023 14:15:38 +0000 (UTC) X-FDA: 81072105156.01.97BE48D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id E71E1A0021 for ; Mon, 31 Jul 2023 14:15:35 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="BAJzvk/Z"; spf=pass (imf15.hostedemail.com: domain of chenhuacai@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chenhuacai@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690812936; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bQcAt8TGG6T5B7WnKdKduaKxck2/rTP0iXN9HYsJzdU=; b=uSAX7NTPoOgYHBsDdJvYt27g6LHSR6u4FB5Lis5P8DOXVavT2akyeUdy/PeShQfNghARvg C1DhCuriy1DVxpM/xpqd7jSjVvo+xoZJOdOOPX2+bF91k930ZABhch5mgnp7xyqYEPpZvX 0gyIpFepuyabNPAdS39npG50M4yCm6c= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690812936; a=rsa-sha256; cv=none; b=6U2Ni/R5Pa1q84+6s2ZNm1g1O24EaSmO25QzT5VX1mIQkPQlRmkAJK/kg2sHyhKk25lmqC z56dOXmGgnQ1Uo0IJzrN7ve18LNw+bRKDmqjCaE08gHvZ18azGyfN/4VfsBLYf3JVu57ZF zWKgsZy7gT1bY8S9LffEbnZTwNKMz10= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="BAJzvk/Z"; spf=pass (imf15.hostedemail.com: domain of chenhuacai@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chenhuacai@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0775E6116C for ; Mon, 31 Jul 2023 14:15:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EB3C4C433CC for ; Mon, 31 Jul 2023 14:15:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1690812934; bh=LmZUftagqaDLewC2gJ5Gis/7ee8BS+nDnAymgdUOikc=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=BAJzvk/Zm+UCi1HbdLV3Zgx87SypRBsqhK7Yk1BNUxMydZCmMMWJhUwj8M+hNT4ZI tPH1lPttfBtrt+kRzscW+xKbHWL7HQvCSxTIv6sVBAVf8OMveEgeRsDkJXjP5z28YV ehqhK3Vqbi8bqrJkGer5p6MWDOGnviVVVbY0CmqX1U+2vNj7oplyoKTFvb+vy3g210 r6IM7+6dD4Rc1sssvb5/SNKwE73F4ggHPUPx9yjXBDnjkQ6K55YjR/lRx+46/K8c7I 3jU1XO+quEZBI7rfblS7WdjnapBNjcBUIWO3Iapaf+oEK8BHCM2m4n6eRapF7fBcOG YOTaFKHeCBWfQ== Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-4fb7dc16ff0so7374551e87.2 for ; Mon, 31 Jul 2023 07:15:33 -0700 (PDT) X-Gm-Message-State: ABy/qLYQLBYiQxque8ojZsShmanBvokp65ONRAXM7/dJFBVpwofUI2q3 3fnna62SGJh1+2DaViuWXg9GfRRIW9aJC+vNKHM= X-Google-Smtp-Source: APBJJlFpLPRz577cv4QSkr4hDX4QySnQO4PMueRqhtcd2KnJMPROZUyrPat93etm6mbOXU8A3fYXqEll6MzgX4PrU0A= X-Received: by 2002:a05:6512:2381:b0:4fe:958:88ad with SMTP id c1-20020a056512238100b004fe095888admr5672762lfv.10.1690812931924; Mon, 31 Jul 2023 07:15:31 -0700 (PDT) MIME-Version: 1.0 References: <20230712031622.1888321-1-maobibo@loongson.cn> <20230712031622.1888321-3-maobibo@loongson.cn> In-Reply-To: <20230712031622.1888321-3-maobibo@loongson.cn> From: Huacai Chen Date: Mon, 31 Jul 2023 22:15:20 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 2/3] LoongArch: Code cleanup in function pcpu_populate_pte To: Bibo Mao Cc: Dennis Zhou , Tejun Heo , Christoph Lameter , Andrew Morton , loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, WANG Xuerui Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: zf7iar1ha9b7fxgywz3qgc78r7gejc6q X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: E71E1A0021 X-Rspam-User: X-HE-Tag: 1690812935-127952 X-HE-Meta: U2FsdGVkX19H0elF7kiIWHkr+7uc7LEqKklj5ZbTFNgWiAHXE2bapZKIREneuQM9UOGPPc9jK4Va0GhAgRrDHuA4wWL6LoQCY4aUVXv65nXB+nLVBSS2DKBTtQXfT4gCY7GiV3CLDK0d4+bmtjBF1GHvLx2qp9i8zt0ZQO4ZXSYQitohEXc6ATK9d0qttpaMFOqA74fGJmaQBnEIcHa+/CcsEEnMjeHeaqjCXQyC9KLsY3yBEkbS1cvoKr9v7l6d0uVwkPjckpLaI4Mrchlwv4BPZWAxkLtC1IAmBYp+w+/lUpPcjfgWohNXVps8jxi8nyV6YL0lF4Q/2hcu0e3eN7sW7WIT06Y4t0ZbCuasdSINBgcC8Sm6+DLf4arlR5XZFy9uTvwwAwI5nkyHQHtFo7GpWS56iQ8z2nWW9gBP+4DzDta1snnUitkmdKkyPHRqn76js2dXkeIrTxrKrQTdKlAbrQl2+nLSgUtNLueT0pVYbBcghLUNl13xYsAuR+oqykTstRBtJ0bqC6X/MH3x+7YlySTRyUFSE4VCPpKEDr+41knGl0le0oAThdpLmA5O74SlX9qbPiA6n8cszKNX/INqheR5TTx1JGgue2lTQavntK89bUd49QQogjXijYINy5YR1sKH7Twd6UB979M38ZMjqpW7q08jCQRZjovAkRE4NDYWQkoGjVM09R5Y9jLmJZSmn0kjkWxbhhEbofemrRLzP7m5Eh0cwgf+MnvZ9TFtSUMfEK11iR/ogV6+GLGfnVBIYaPpBD/DYen4Fhu2pIQXGBHLfklaoqC2+UoqNPFuPhahGpwhRB4/x/sTycoN1nnBu6QwLK4No3m1VILKfOOO/2CV3kUPqsfwMOUoWhCs6jzB2InmKVDVYTgOefgvT1E3oW/pxEwRZWy35uRktaqBLgIcpkXFZBtTDRgjMp3eYypONXCoxPSKGgfSphlEdPtiipGoxlrOwXFFda0 GvLqCSEd 21RDKj7V7WXslm/DDBGaoD+TIT/I/w1rMhPqpnmocSwmk5P2gNPqNnzxoV3TBljpG5ezC9rT5jeIQXRpl9FTBMZn2pQrKScVMwqHRZA+Ri40A2j99GbbssN8aLtVZQyIrhthXvKj+ZN0m4sexMo1TUW6hQUCwCcr0PDANOkmSmhb/NipYMig7vVQhCWyDNM7QvFlU9nWQks7Qb6agnI8c+miOT+0GzwGaZu7xQFP6sRNTmwPHmr/k5Pkd8Fry/98StH7DTK8mYwzoQkbQszyTQEZ1kwli2mPLNuD00eSdJlzTTeiVEkFmIuHjEQduGkiEsiJhT0eL9slX/WiTUGgzLbt1tcsQQ/WAa6Kfeneddu98Nos= 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 Wed, Jul 12, 2023 at 11:16=E2=80=AFAM Bibo Mao wro= te: > > There are some code cleanups in function pcpu_populate_pte: > 1. Replace memblock_alloc with memblock_alloc_raw for pud and pmd since > they will be reinitialized with pud_init and pmd_init. > > 2. Add memory allocation failure handling > > 3. Replace pgd_populate with p4d_populate, it will be useful if there > four-level page tables. > > Signed-off-by: Bibo Mao > --- > arch/loongarch/kernel/numa.c | 33 ++++++++++++++++++++------------- > 1 file changed, 20 insertions(+), 13 deletions(-) > > diff --git a/arch/loongarch/kernel/numa.c b/arch/loongarch/kernel/numa.c > index 708665895b47..778e1c20bfb0 100644 > --- a/arch/loongarch/kernel/numa.c > +++ b/arch/loongarch/kernel/numa.c > @@ -73,33 +73,40 @@ void __init pcpu_populate_pte(unsigned long addr) > pmd_t *pmd; > > if (p4d_none(*p4d)) { > - pud_t *new; > - > - new =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE); > - pgd_populate(&init_mm, pgd, new); > + pud =3D memblock_alloc_raw(PAGE_SIZE, PAGE_SIZE); Don't use memblock_alloc_raw() here, it is better to keep consistency with mm/percpu.c. Huacai > + if (!pud) > + goto err_alloc; > + p4d_populate(&init_mm, p4d, pud); > #ifndef __PAGETABLE_PUD_FOLDED > - pud_init(new); > + pud_init(pud); > #endif > } > > pud =3D pud_offset(p4d, addr); > if (pud_none(*pud)) { > - pmd_t *new; > - > - new =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE); > - pud_populate(&init_mm, pud, new); > + pmd =3D memblock_alloc_raw(PAGE_SIZE, PAGE_SIZE); > + if (!pmd) > + goto err_alloc; > + pud_populate(&init_mm, pud, pmd); > #ifndef __PAGETABLE_PMD_FOLDED > - pmd_init(new); > + pmd_init(pmd); > #endif > } > > pmd =3D pmd_offset(pud, addr); > if (!pmd_present(*pmd)) { > - pte_t *new; > + pte_t *pte; > > - new =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE); > - pmd_populate_kernel(&init_mm, pmd, new); > + pte =3D memblock_alloc(PAGE_SIZE, PAGE_SIZE); > + if (!pte) > + goto err_alloc; > + pmd_populate_kernel(&init_mm, pmd, pte); > } > + > + return; > + > +err_alloc: > + panic("%s: Failed to allocate memory\n", __func__); > } > > void __init setup_per_cpu_areas(void) > -- > 2.27.0 >