Received: by 2002:ac0:da4c:0:0:0:0:0 with SMTP id a12csp458200imi; Fri, 22 Jul 2022 02:49:58 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vMilqCeOQVnE9NYdkN4MEHF3OxwAI/saxoEg/5a2VlE7zKc3U+MHjIZa3UrwGCyXak9n3t X-Received: by 2002:a17:907:b590:b0:72e:dba4:86b3 with SMTP id qx16-20020a170907b59000b0072edba486b3mr2403878ejc.376.1658483397807; Fri, 22 Jul 2022 02:49:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658483397; cv=none; d=google.com; s=arc-20160816; b=WWnxoA96JTxNnUaGFEvMmeHOdsHff4wtZe+Xx9MXG2u1zle1zVu1msdT4Ysft2LGEe JzyeeDcReyN0MXes84Pk6+BgH/cYfEpvcM0noBSg5RnXqFgx2NBlt4JpchkRORDmwtCb 6W9VvMxqDh/n+qQ3DVQj2lS9/NKtsvVToBQd80HAs0TVLCj/1jMCJvQOgpKtmZygMvWg yBabhwbmFq3UAcVnqqFGG6ZCAH+S1Pr172Y6wMEJ2/h/ThXuKw29JXDdKx7m3GxiX2Jp uj+fCFtVvgglLsIN+iBuEJ6QnbztmglTf24lMCeuWRhm4tachzMj/iRhN7o1mDmlXoA4 xq8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=0IG2iKPtQ0QbKuu5rB1duJcsioQ3ORLQ4FquvWnw7Y8=; b=NVihN4JYMteOzVax//OkQpS57o9uUUdefgEaQMA5KIlMPhOb1OliqFzQfl258Ah/YZ 6eylUahFo+sN4fPdn75KYmWv8Kl50cXn+zBOA8C4oG+aqWdsOFLtND45nJL1VmTsp182 6RTcO/k655o9MDJ3nnw5fGhuvSbZzXZGr5gHBWc8z6fNYCDskjpfUnEO7Ba0fqq0YIjT BfXCIngIW90nXZeANj15Fg4FgtwswCsttP9wNusQeWTCIpxqgAbRyuXzgrjonQg4gjUu LnxBoLqIbE7sC1G3X5mdzigv4lODq/FKWrKLtSiT5fVEuaDRVnlBI/A1zDmMXEzK58AQ hrlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=rlAtZjYk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cy16-20020a0564021c9000b0043aba611926si4424184edb.181.2022.07.22.02.49.32; Fri, 22 Jul 2022 02:49:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=rlAtZjYk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236388AbiGVJ0C (ORCPT + 99 others); Fri, 22 Jul 2022 05:26:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236361AbiGVJZd (ORCPT ); Fri, 22 Jul 2022 05:25:33 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E7C2C5D63; Fri, 22 Jul 2022 02:16:15 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 8147EB827B7; Fri, 22 Jul 2022 09:16:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39E7CC341C6; Fri, 22 Jul 2022 09:16:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1658481372; bh=+MdnIBEBIPvCfL0UO13oheMzgvW0x0ZU/P8ra2XGuic=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=rlAtZjYk4YLxZerW3Gw+L9EsV8S+0KUHFSFEfWQJAWGwX8LIUQXTtr+Hypq/IRSL6 gCuaaAK7vUwsLQOeXljYmU4fUx9+fxxJOhVCrphK+ogWPcS8b7vO8cC8EilpAai/Ok puvpJEocCUFS1UzrfhqOEtd7NpuYb5aEjSL7ebZqcLMYxtOFtfgHSwBxRdxTf+SmM/ XRFaI15q1RMXuIc5QMYMLglNyIuOjqIzIe7kmoK7189EVgKrhqNx9sBY4J2YKv6HNz Q4W7b2aIjj7uaUDPsBxLHYegdH5P7rgs1x5oHsS2KVBjKXZiIvM95K7f9QQiYGbC8v IMa1+X6PvjVWw== Date: Fri, 22 Jul 2022 10:16:05 +0100 From: Will Deacon To: Huacai Chen Cc: Arnd Bergmann , Huacai Chen , Thomas Bogendoerfer , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Catalin Marinas , loongarch@lists.linux.dev, linux-arch@vger.kernel.org, Xuefeng Li , Guo Ren , Xuerui Wang , Jiaxun Yang , Andrew Morton , linux-mm@kvack.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Feiyang Chen Subject: Re: [PATCH V5 3/4] mm/sparse-vmemmap: Generalise vmemmap_populate_hugepages() Message-ID: <20220722091604.GD18125@willie-the-truck> References: <20220721130419.1904711-1-chenhuacai@loongson.cn> <20220721130419.1904711-4-chenhuacai@loongson.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220721130419.1904711-4-chenhuacai@loongson.cn> User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 21, 2022 at 09:04:18PM +0800, Huacai Chen wrote: > diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c > index 0abcb0a5f1b5..eafd084b8e19 100644 > --- a/mm/sparse-vmemmap.c > +++ b/mm/sparse-vmemmap.c > @@ -694,6 +694,69 @@ int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end, > return vmemmap_populate_range(start, end, node, altmap, NULL); > } > > +void __weak __meminit vmemmap_set_pmd(pmd_t *pmd, void *p, int node, > + unsigned long addr, unsigned long next) > +{ > +} > + > +int __weak __meminit vmemmap_check_pmd(pmd_t *pmd, int node, unsigned long addr, > + unsigned long next) > +{ > + return 0; > +} > + > +int __meminit vmemmap_populate_hugepages(unsigned long start, unsigned long end, > + int node, struct vmem_altmap *altmap) > +{ > + unsigned long addr; > + unsigned long next; > + pgd_t *pgd; > + p4d_t *p4d; > + pud_t *pud; > + pmd_t *pmd; > + > + for (addr = start; addr < end; addr = next) { > + next = pmd_addr_end(addr, end); > + > + 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 = pmd_offset(pud, addr); > + if (pmd_none(READ_ONCE(*pmd))) { > + void *p; > + > + p = vmemmap_alloc_block_buf(PMD_SIZE, node, altmap); > + if (p) { > + vmemmap_set_pmd(pmd, p, node, addr, next); > + continue; > + } else if (altmap) { > + /* > + * No fallback: In any case we care about, the > + * altmap should be reasonably sized and aligned > + * such that vmemmap_alloc_block_buf() will always > + * succeed. If there is no more space in the altmap > + * and we'd have to fallback to PTE (highly unlikely). Can you tweak the last couple of sentences please, as they don't make sense to me? To be specific, I'd suggest replacing: "If there is no more space in the altmap and we'd have to fallback to PTE (highly unlikely). That could indicate an altmap-size configuration issue." with something like: "For consistency with the PTE case, return an error here as failure could indicate a configuration issue with the size of the altmap." With that: Acked-by: Will Deacon Will