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 4B20CC001DF for ; Tue, 1 Aug 2023 01:18:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E74E2800BD; Mon, 31 Jul 2023 21:18:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7707E28007A; Mon, 31 Jul 2023 21:18:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 638802800BD; Mon, 31 Jul 2023 21:18:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 517E328007A for ; Mon, 31 Jul 2023 21:18:33 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 17BC7120420 for ; Tue, 1 Aug 2023 01:18:33 +0000 (UTC) X-FDA: 81073775706.20.7135035 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by imf03.hostedemail.com (Postfix) with ESMTP id 61D0A20012 for ; Tue, 1 Aug 2023 01:18:27 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of maobibo@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=maobibo@loongson.cn; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690852711; 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; bh=NLTtfPgvTX5KKBqql8HMgzhMv90TNfx4zplzY1behPA=; b=budGgeFxhHGTdSS7OcbSTZN+SId+RSoje5AZGzcOo0+yVDp+PP9vXqNW0m4VHK33aW2EAf 4IOxiKma/XzkegBw9fh3gnlOdhkQrORuVrKwhkrNAy1E5ngRDIap/0ML3o3DxvLvyClJzN o0pS7EfUpWGWv2/G8X0D/+8zrGhJtR0= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of maobibo@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=maobibo@loongson.cn; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690852711; a=rsa-sha256; cv=none; b=IOwEMLlUuo0Z+Rz+wGb12XbOrcf/nH+842LwsUL/OTaorJiQPECl0yuo3ZrGAFf7TUxpat 1pok+jNt2AJCM01ICAzWIqkZB/j3Hu8bkIxGYFCkuN/bzfPafsEpVa7a/Y8bxuQ8BB8rce z0pxICnUPsNCStfESYKCUdf5ttAWOV4= Received: from loongson.cn (unknown [10.20.42.170]) by gateway (Coremail) with SMTP id _____8Bx5fBfXchk48ANAA--.32724S3; Tue, 01 Aug 2023 09:18:23 +0800 (CST) Received: from [10.20.42.170] (unknown [10.20.42.170]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Dx_yNeXchkCmZDAA--.3784S3; Tue, 01 Aug 2023 09:18:23 +0800 (CST) Message-ID: Date: Tue, 1 Aug 2023 09:18:22 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH 2/3] LoongArch: Code cleanup in function pcpu_populate_pte To: Huacai Chen Cc: Dennis Zhou , Tejun Heo , Christoph Lameter , Andrew Morton , loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, WANG Xuerui References: <20230712031622.1888321-1-maobibo@loongson.cn> <20230712031622.1888321-3-maobibo@loongson.cn> Content-Language: en-US From: bibo mao In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:AQAAf8Dx_yNeXchkCmZDAA--.3784S3 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoWxZw1DCFWDJr48Zw1xJw1UJwc_yoW5Gw1xpr ZrJ3ZYvFs8Wrn7Gay3X3sYgrnrtwsYg3W7Kw47XF18AasFqrnrKw1kGrsruryjvFW7AF4I vF45Jrnxua1qq3cCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUv0b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzV AYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E 14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIx kGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAF wI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r 4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8czVUUU UUU== X-Rspamd-Queue-Id: 61D0A20012 X-Rspam-User: X-Stat-Signature: 3d79peughcwpwgfoznhkhgj7ewdfqrd7 X-Rspamd-Server: rspam01 X-HE-Tag: 1690852707-211585 X-HE-Meta: U2FsdGVkX1+JGi3yQ7WiaMoFO6vNZvhQCQrSpPh1atgmRuwKgf6DVwnLQe8oim/YpQVfXUWElJ5neLsmjlf9ERQAcYvtpmvW0sAj+XZOc+GAnJAVjTuzCAt8t9KCgscHKR7sZSHf+zM8TzGrWtEd5jZ0jemWmuuFt0f94NS6uEv8DiPhO/ag2HOK8rD5t6cyunbsYAEhuST8MJQ9Sq1eafS7skcsoJmSPWSKcbm4iKVqGI6uMnedNsPlmojeKjtm693RH54CgJ40IFdUx1teb7CNAFhV0yK3+zn+5xyLe5an07XpUfrnjmpWVjbjLxz+84XNhim9y5NFK5v+LBEmM3u9pPzOFpuQDx3BANHVQYIQ0CcqUGxozy7LxbEpDb7HBVPuqwAxVbisn4wTFqbaLu6y58tG4HhvjaAu0td03537+kbHw28anfP6SAjlxF4MsquTN8LF/DSbs9j7Bp9HUhF7tgnQXDNmwRao27bNqQ1A95dJ/jgJOJQLVrjtl+CTHrmKAf2OH6Eor9LPyOSopK0fQ4IME9Uaa4LwTv6M3oOBo8Ttgd1rHEAOaJWWc+/8c+/uYaivqPv1RiTNmpQuTijw5oqGmh5fTcYkAHPdFAIet6o4npYZfUwZbgeL+Jyv0/YZrSFJcPcbAVXMeWaP/u247+ET7Z0pnDPwUfYx2e/TCkoau6msu3i0xB2IcuLU+bshmjNyULADyQlP8vr0D2e0PSVtAmXPhEJTQiVUa4JoCThr7kTRJMBJh6ldufZ5qpT+AtbIkHyhBya2H5bYeGJkaCsic2++IiAQ0lXIAFN153RsYy0Qy6mapaWrS5ch+baxKkPV8iZL5jEpubnW796a7cHNhB7d+x4KUOidqrgpww1cZcVxNLSgpMjS8fp3v5mixrCfj3+ZvHGu3jm1eoI5pVlDKdzXNrbzroe0mIvXvR5ZvjCtZqktEnLdX5Q8Hhbtz9GaqsYLGbHdH/j k6Q2d0Yp Ce60ch6tf+NVcpclNLIvbkJ9z4ij5MIMUx4vrX3K+0ntRYYopZKzKqUWvooAiUOvQBy9Z9PDoYD2KhycOXnecgT1acaiZycf8cdyq 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: 在 2023/7/31 22:15, Huacai Chen 写道: > On Wed, Jul 12, 2023 at 11:16 AM Bibo Mao wrote: >> >> 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 = memblock_alloc(PAGE_SIZE, PAGE_SIZE); >> - pgd_populate(&init_mm, pgd, new); >> + pud = memblock_alloc_raw(PAGE_SIZE, PAGE_SIZE); > Don't use memblock_alloc_raw() here, it is better to keep consistency > with mm/percpu.c. memblock_alloc will clear the page, and there will be page table initialization with the following pud_init(pud). memblock_alloc_raw will not clear the page. I prefer memblock_alloc_raw for better performance however ok with both, it is up to you to decide. Regards Bibo Mao > > > Huacai >> + if (!pud) >> + goto err_alloc; >> + p4d_populate(&init_mm, p4d, pud); >> #ifndef __PAGETABLE_PUD_FOLDED >> - pud_init(new); >> + pud_init(pud); >> #endif >> } >> >> pud = pud_offset(p4d, addr); >> if (pud_none(*pud)) { >> - pmd_t *new; >> - >> - new = memblock_alloc(PAGE_SIZE, PAGE_SIZE); >> - pud_populate(&init_mm, pud, new); >> + pmd = 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 = pmd_offset(pud, addr); >> if (!pmd_present(*pmd)) { >> - pte_t *new; >> + pte_t *pte; >> >> - new = memblock_alloc(PAGE_SIZE, PAGE_SIZE); >> - pmd_populate_kernel(&init_mm, pmd, new); >> + pte = 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 >>