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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BA19CC3DA64 for ; Thu, 1 Aug 2024 07:55:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Dszuuq3N4mTbBvvyaBkOILWJh+HwzDKisAJ7SoMwbAk=; b=FTV46izPpLPRFLoCjUBoNXR5CA NuOfYOmOkFBD0/LrIfbPxQS5nGLOzjy1ebH9Qe/5S/Oo5SMd4IiKBXqHRLZAkqCqlMlsXoao+zEYI DSnmx9Pj7+Gfq5HU82nciJQhNDotk+yHGMA0wXKnWmALN291BEcu008vtQ/74sltcoyEP/EF7QgWI WTsExznlBpJRf0YwLi5IHNjlIbMnu+09rbfkAEZIRd+2d6ou0hgRkDXTxxNl4wyk8y1PfECm04UDc XALfJT71hSsORRozm0gTcFaHBcNF16OImo6qhosDaNQGXcv8gIXnI8ZO0eUwcSUrG/9ctk9bBx19d Bic7TkJQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZQec-00000004FMK-3EIm; Thu, 01 Aug 2024 07:55:18 +0000 Received: from zg8tmtyylji0my4xnjqumte4.icoremail.net ([162.243.164.118]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZQe7-00000004FFk-1mX4 for linux-arm-kernel@lists.infradead.org; Thu, 01 Aug 2024 07:54:49 +0000 Received: from prodtpl.icoremail.net (unknown [10.12.1.20]) by hzbj-icmmx-7 (Coremail) with SMTP id AQAAfwAHDVFFP6tmsWOlAw--.62672S2; Thu, 01 Aug 2024 15:54:45 +0800 (CST) Received: from localhost (unknown [123.150.8.50]) by mail (Coremail) with SMTP id AQAAfwAXQ7NEP6tmRy8KAA--.8566S2; Thu, 01 Aug 2024 15:54:44 +0800 (CST) Date: Thu, 1 Aug 2024 15:54:44 +0800 From: Yuquan Wang To: Jonathan Cameron Cc: dan.j.williams@intel.com, linux-cxl@vger.kernel.org, linux-arm-kernel@lists.infradead.org, chenbaozi@phytium.com.cn Subject: Re: [RFC PATCH 6/8] arm64: mm: numa_fill_memblks() to add a memblock.reserved region if match. Message-ID: References: <20240529171236.32002-1-Jonathan.Cameron@huawei.com> <20240529171236.32002-7-Jonathan.Cameron@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240529171236.32002-7-Jonathan.Cameron@huawei.com> X-CM-TRANSID: AQAAfwAXQ7NEP6tmRy8KAA--.8566S2 X-CM-SenderInfo: 5zdqw5pxtxt0arstlqxsk13x1xpou0fpof0/1tbiAQAEAWaqm98E1AALsX Authentication-Results: hzbj-icmmx-7; spf=neutral smtp.mail=wangyuquan 1236@phytium.com.cn; X-Coremail-Antispam: 1Uk129KBjvJXoW7Ww4DKF18JFWDZFWxXrWUurg_yoW8CF1rpw 10kwnxCr4UWr1xu393Xw4Yqrn5uws5KF13W3y7Crn8uF1Sqr17Wa1Fgw4qvFWDtrW7GF4Y vF1jyFy5W3Wq9a7anT9S1TB71UUUUUJqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj DUYxn0WfASr-VFAU7a7-sFnT9fnUUIcSsGvfJ3UbIYCTnIWIevJa73UjIFyTuYvj4RJUUU UUUUU X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240801_005447_606834_CD0A664B X-CRM114-Status: GOOD ( 23.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, May 29, 2024 at 06:12:34PM +0100, Jonathan Cameron wrote: > CXL memory hotplug relies on additional NUMA nodes being created > for any CXL Fixed Memory Window if there is no suitable one created > by system firmware. To detect if system firmware has created one look > for any normal memblock that overlaps with the Fixed Memory Window that > has a NUMA node (nid) set. > > If one is found, add a region with the same nid to memblock.reserved > so we can match it later when CXL memory is hotplugged. > If not, add a region anyway because a suitable NUMA node will be > set later. So for now use NUMA_NO_NODE. > > Signed-off-by: Jonathan Cameron > --- > arch/arm64/mm/init.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 6a2f21b1bb58..27941f22db1c 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -50,6 +50,32 @@ > > #ifdef CONFIG_NUMA > > +/* > + * Scan existing memblocks and if this region overlaps with a region with > + * a nid set, add a reserved memblock. > + */ > +int __init numa_fill_memblks(u64 start, u64 end) > +{ > + struct memblock_region *region; > + > + for_each_mem_region(region) { > + int nid = memblock_get_region_node(region); > + > + if (nid == NUMA_NO_NODE) > + continue; > + if (!(end < region->base || start >= region->base + region->size)) { > + memblock_add_reserved_node(start, end - start, nid, > + MEMBLOCK_RSRV_NOINIT); > + return 0; > + } > + } > + > + memblock_add_reserved_node(start, end - start, NUMA_NO_NODE, > + MEMBLOCK_RSRV_NOINIT); > + > + return NUMA_NO_MEMBLK; > +} > + > static int __memory_add_physaddr_to_nid(u64 addr) > { > unsigned long start_pfn, end_pfn, pfn = PHYS_PFN(addr); > -- > 2.39.2 > Tested-off-by: Yuquan Wang