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 A1EBFC433EF for ; Fri, 22 Jul 2022 09:16:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A50C46B0072; Fri, 22 Jul 2022 05:16:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A003F6B0073; Fri, 22 Jul 2022 05:16:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8C8106B0074; Fri, 22 Jul 2022 05:16:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 7D2E56B0072 for ; Fri, 22 Jul 2022 05:16:15 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 43C451A01C4 for ; Fri, 22 Jul 2022 09:16:15 +0000 (UTC) X-FDA: 79714179510.01.3523BD3 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf14.hostedemail.com (Postfix) with ESMTP id A95DF100090 for ; Fri, 22 Jul 2022 09:16:14 +0000 (UTC) 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 dfw.source.kernel.org (Postfix) with ESMTPS id 77CB361FC3; Fri, 22 Jul 2022 09:16:13 +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) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1658481374; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0IG2iKPtQ0QbKuu5rB1duJcsioQ3ORLQ4FquvWnw7Y8=; b=Maj++NgY3fzSlFdTvWWeIVslq4Lniu9cfjU3XHa61shIevG3/EsDiD0jGEaT9oRFfIzm0/ 3YH7WcHR5DAcu2+1sSyrq6fK7g3nveZuAMIzamdOJLLqfXHeRRQuO1jUUr7OskgF980SAT dvdI+/ZHLIcL7E2O/KidXcaJt8U08CI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1658481374; a=rsa-sha256; cv=none; b=siMj1nPjEtfGKXXtI4G9u4OkSabWt/xlOOyb24E2A1rXhYnl3u80aiaUhROOXZ/hQ+/l8R lvnFS1QnnuwHe6XEFQFARRHM3n2J7NJjgrOB6FJQp6ILEcTJgmNBdciPN2IVeagd8BIl2k ZCg3jokoCNHuPsEDDJUmUlSILhn7WRo= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rlAtZjYk; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of will@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=will@kernel.org X-Stat-Signature: ean1ksdty4fga63z7y4gp9uxfz76cwnw X-Rspamd-Queue-Id: A95DF100090 Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rlAtZjYk; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf14.hostedemail.com: domain of will@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=will@kernel.org X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1658481374-930828 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 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