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 712ADE7718E for ; Fri, 27 Dec 2024 02:57:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A5866B007B; Thu, 26 Dec 2024 21:57:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 756E86B0082; Thu, 26 Dec 2024 21:57:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 61D356B0083; Thu, 26 Dec 2024 21:57:28 -0500 (EST) 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 456846B007B for ; Thu, 26 Dec 2024 21:57:28 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B576381274 for ; Fri, 27 Dec 2024 02:57:27 +0000 (UTC) X-FDA: 82939226874.26.0D5CB37 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf16.hostedemail.com (Postfix) with ESMTP id 82097180004 for ; Fri, 27 Dec 2024 02:56:42 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf16.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1735268226; 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=vJmZU4+9X9Eyx6SHrXnM4pFDoTIxCya9jlk41UP2guo=; b=Fgz1bmaUW33u8RtoqGZkkLvRLERJrf/GCiuo2IzyuGla0ig55fHSXIka+tv+B0Qdb0SCc9 rHyVYBNc4R5BbXkj+t+a6c2X0/an9LtqzJ7FvZy0tGsi9Fswx+1Z62R2OJQKz+NBRxnLh+ f2nZMtyqmtMjtLdpJ3AveDDsi1l+L7M= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf16.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1735268226; a=rsa-sha256; cv=none; b=A7+hqJ/CiWpZg+3fSYFzTQralCJVJqg31/OGbF1Eq+XtL+39n3S+jVjHI0Cy37vh8C9zwU FbfVjqUEHvYsHqhzlxSZUi7kbFu3sTU4oH7V8LOlur0hWG2T5skHYTe/47p1OibmmxQO1i V+JdOlmqe+ii2am9/7jTDF34Di5B+Bw= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BB6C71480; Thu, 26 Dec 2024 18:57:52 -0800 (PST) Received: from [10.162.16.95] (a077893.blr.arm.com [10.162.16.95]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1B2BA3F59E; Thu, 26 Dec 2024 18:57:20 -0800 (PST) Message-ID: <39a85800-47c5-4529-906d-5a40e58ce136@arm.com> Date: Fri, 27 Dec 2024 08:27:18 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 2/2] arm64: mm: implement vmemmap_check_pmd for arm64 To: Catalin Marinas , Zhenhua Huang Cc: will@kernel.org, ardb@kernel.org, ryan.roberts@arm.com, mark.rutland@arm.com, joey.gouly@arm.com, dave.hansen@linux.intel.com, akpm@linux-foundation.org, chenfeiyang@loongson.cn, chenhuacai@kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20241209094227.1529977-1-quic_zhenhuah@quicinc.com> <20241209094227.1529977-3-quic_zhenhuah@quicinc.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 82097180004 X-Stat-Signature: fck1dweujhkcei7qe71rbtffgre7sa9h X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1735268202-733413 X-HE-Meta: U2FsdGVkX19LKMxxa5oWpdy9EuKRt2CkVdKEiBe3sxXNp0IEtaqCpw9Le2sMVQdU5EovNQYnLdO2nGRX65leF8Led8gqUrNluB1JTNKVIB+P8NNxIAWsQ+KCY4s+8zhMGyEc2u9etnLIAAtUby67GSfNc0go67u9Y+fD+l3IAS/UL+S33lp/j2/ofy4TWXjtZHOL43JXEe/ehm1dF/sGJpV5sGykUZuXQmnC8NSKC1f60ETMbk4mluGGZm8ymEmVuSTaYbbvlP/a2y8fPJsgO/MZet9ue7sC5bQIPljO7ra/ZrofhuoijVi2dSLmbtfDCnMqdeL5RidqHGdskpVY+EYZGe2MMDmZMiQopYes/0uSToM5wqi4ThIN7sDsdB48Ua3YDkaVCjcfZPVcSUMSnZUA9YQeKCrguAlg3C3sCj94u8aS70FOQU8FHe7Gb/jrsLC3GQt/lt+IyhF5qStbTAtJojwb5WEKZS6IU7ZFSN0Xa/tjvxfwMIZ4HhSn40buufpM/1S+bI/Lz2ycPOyDrC/HEuSU+dVt094PonSkh4d/NvHHiawN6egPiKDnUCaLUnGIb59fK8JoNwuBCpkLjZziUupcJI8BghS9rpVdVpckxgwAbmsM4rh6m7nvqFGGFLPvIZgfqHRQwMtc910j5rnNugGuc/8rOWpoYmBEpbw3b5fdlT22qT+eJsU0tsCAyVZ2Jxwh/5oOXdhAD4tvGeGx5PbJ1kEn0zcDUKUAggQM10Gp1B5oqAqs58Ixl2+ZlWNnHmXnDHFT0PEqxrZYlfqxlz/CvrqthyR/vZJq+baxW0Gkg7EoFQGLDBryxWBtlYpBy3b5jqGHfdkvJmBM97f2wRYHjuM6pQGkYGLNjO6jyUbnPEAcof/bpKqsMv7e7fpnDhwwruXZdfMN6eLUBgFfwkO0Re3XcJz9sY13AWyjcEU8IBM5eoiRvJ2qGzzTBuifH4wN0V7+nqtpjym 5gblQX0J rW7NSOZx8jtkD7c5mA4qL5WrayUg8DbHL/t5tBRm3X7emteXVWuW1y8GqZQ3WdyqznhRKi2pzC0fYzh0CLYeeqzpoONQiZRNDF1eqyuaD3f7diy+b6XuVYsCM/YZkrxSt8qGYBmHeVxrzjC4aMnWWN65WVHpldL2A8dnJq1MMymAracqS5bsaxlS2MiY2OvoKFbk35ddrUZoWIbeIANGcTA4yJXNGZH+1PLpNapADz6syffq4+FEXAVWYnpwqZhiC6DHf 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: List-Subscribe: List-Unsubscribe: On 12/21/24 00:05, Catalin Marinas wrote: > On Mon, Dec 09, 2024 at 05:42:27PM +0800, Zhenhua Huang wrote: >> vmemmap_check_pmd() is used to determine if needs to populate to base >> pages. Implement it for arm64 arch. >> >> Fixes: 2045a3b8911b ("mm/sparse-vmemmap: generalise vmemmap_populate_hugepages()") >> Signed-off-by: Zhenhua Huang >> --- >> arch/arm64/mm/mmu.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c >> index fd59ee44960e..41c7978a92be 100644 >> --- a/arch/arm64/mm/mmu.c >> +++ b/arch/arm64/mm/mmu.c >> @@ -1169,7 +1169,8 @@ int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node, >> unsigned long addr, unsigned long next) >> { >> vmemmap_verify((pte_t *)pmdp, node, addr, next); >> - return 1; >> + >> + return pmd_sect(*pmdp); Please change this as pmd_sect(READ_ONCE(*pmdp)) instead. >> } >> >> int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, > > Don't we need this patch only if we implement the first one? Please fold > it into the other patch. Seems like these patches might not be related. While creating huge page based vmemmap mapping during vmemmap_populate_hugepages(), vmemmap_check_pmd() validates if a populated (i.e pmd_none) PMD already represents a huge mapping and can be skipped there after. Current implementation for vmemmap_check_pmd() on arm64, unconditionally returns 1 thus asserting that the given populated PMD entry is a huge one indeed, which will be the case unless something is wrong. vmemmap_verify() only ensures that the node where the pfn is allocated from is local. int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node, unsigned long addr, unsigned long next) { vmemmap_verify((pte_t *)pmdp, node, addr, next); return 1; } However it does not really check the entry to be a section mapping which it should. Returning pmd_sect(READ_ONCE(*pmdp)) is the right thing, which should have been the case from the beginning when vmemmap_check_pmd() was added. I guess because arm64's original vmemmap_populate() checked only for vmemmap_verify() as well. So probably this does not need a "Fixes: " tag.