From patchwork Tue Jul 16 11:13:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Rapoport X-Patchwork-Id: 13734327 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 CA23BC3DA49 for ; Tue, 16 Jul 2024 11:14:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 42BAB6B007B; Tue, 16 Jul 2024 07:14:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D9616B0083; Tue, 16 Jul 2024 07:14:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2A0F06B0085; Tue, 16 Jul 2024 07:14:14 -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 0AF6D6B007B for ; Tue, 16 Jul 2024 07:14:14 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7237A140506 for ; Tue, 16 Jul 2024 11:14:13 +0000 (UTC) X-FDA: 82345356786.16.5319A39 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf26.hostedemail.com (Postfix) with ESMTP id 2E9DA140018 for ; Tue, 16 Jul 2024 11:14:10 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=X0VhN6dJ; spf=pass (imf26.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721128400; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=ytSkc9T+x4iWF4FH/UaTzSwhnUCovN2Zv6aDfqQWMzM=; b=3LM2XdFtLWmkqdy9Nx+Q3R2jb2aVcI+Owf8/mmBnfWEduNr9AGisTZzPP51349m3+VzwuM pEdN/CuFIdBVsRbReUhVzoD1tY0LYJcn1fWuYODoTgj7STez5kpJ8rCghsOkXAThodPF4O dUYtv/MyPKaQ4XVNdtpmge5VsVbqnno= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=X0VhN6dJ; spf=pass (imf26.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721128400; a=rsa-sha256; cv=none; b=LsDR8Q+hIxePD0f/Z3tt4UIF5aBrx8wdVa/GPl0RyRhhsF3/5vmKrKfr31+EISX8g6posk hw+ekAsGY4AKthLN0R3RCUF65JDVlSECSQ9zAeudaJ4yPRonQ2TTlCeKdx5OvzddAuGXLg QCoGejOx9FQcrKmv1FRYgQ8SCGFhu+U= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2B2B6CE0E1D; Tue, 16 Jul 2024 11:14:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5C31C116B1; Tue, 16 Jul 2024 11:13:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721128446; bh=if+tcTirPJEjQZ9+hNu3pbhZeoosE+eYDqBL2iUCmhY=; h=From:To:Cc:Subject:Date:From; b=X0VhN6dJqtR1KjO/1/PYElok6T5zjLlAKyzAypL4irsN/XbVAZy4V4Ko34zh46mCO InPiqKaVQ28tbxcwQ4aVimRVIlcIG7FVByt+0X2HkmQfxKOSXpmdUg7tVXXoPVH3O7 BbMLzCEmNdPLheUOe2MVcpjILhanEbMxkyz6KTiQZpDiolKr6j+cpBRJ2wk7C/sjqQ hk60jD7l8cR3gBkksbgwjOCoU9d6TY2/m3y2t9kHZ617IrSe3LuiYwKTxaVw+SfXFM /XDwcDu/Py0vDadDsPVCXJ0VUNSQL7zgFwuHdJEjuK5Diy7HEvAJBTt1a5YVs8Sy7X kjipDXq1Ftupw== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexander Gordeev , Andreas Larsson , Andrew Morton , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Christophe Leroy , Dan Williams , Dave Hansen , David Hildenbrand , "David S. Miller" , Greg Kroah-Hartman , Heiko Carstens , Huacai Chen , Ingo Molnar , Jiaxun Yang , John Paul Adrian Glaubitz , Jonathan Cameron , Michael Ellerman , Mike Rapoport , Palmer Dabbelt , "Rafael J. Wysocki" , Rob Herring , Thomas Bogendoerfer , Thomas Gleixner , Vasily Gorbik , Will Deacon , linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-acpi@vger.kernel.org, linux-cxl@vger.kernel.org, nvdimm@lists.linux.dev, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Subject: [PATCH 00/17] mm: introduce numa_memblks Date: Tue, 16 Jul 2024 14:13:29 +0300 Message-ID: <20240716111346.3676969-1-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2E9DA140018 X-Stat-Signature: ygkqado49xc3e9fbqrbc4bisqyasr3j9 X-Rspam-User: X-HE-Tag: 1721128450-367236 X-HE-Meta: U2FsdGVkX1/0fpOjPCv6W6XJ/gVQqJSnOl3gzlLb8egTuVofOxRH9XBSJs6m9Lg4gnn6pouP+IQU+uR3Ho1esEid4fGvBYx0PKABlXYLuCl8moBdXE0a/P6Tb9zJlU5EfDfc/iKfC/16PQZGPfa8njpKyUbcK77lcTP97PSzxtxsHBnKre1iUq1F456NxIvmLpSlZ7ds+1FP3aDm7cbM6Gcn7QnMtOYU3qDovtUce6fESpJ0tW6b3l2BVk1DMuu0LqWPRYGOVxJ4YJbO8rU8oRJSHrswVHLZfImGxQI/vv4+UidqQzDjVcQBB+bzlaRz7pemL9x7k3CphQUeQzn1i9wRnqZOFyWjEyDEPUXPpuJ2ORa0lIoEi2+blKhSlxwUlTUJgqADpJMX6UYmqm2UlPZhv+35lbmozZE0wDoYWkmt/TBLNhGRbE8GBGtRBaFBlJZZLibpsRB9Heo0FZJWIRSFKaE0vW7mw2lElrOxAT82VTVvCuhVFCbqBwY6HMydB3nUF1tqnrT0kxSgZ7JU6DArthSIDyLf8indJkqubabKo5MoTEZTs7unYxFupeUuMeOnwe5hCtZWC4EPtG3M7xp+3Rv80UyseyalvMBezUyOn4OYK1mpYA/zYH7kqAzuP2eJgRlRuoUBARwhvkQrTcPFlccL/QVufi/KcBEJpqEFZyoZ+kwwikOx8NTsrok8tj7W41oA6PUuizc23J+LjXaHhewXnMCWxi+3cc3VwiBspAf6sZa7MXL1w9PhNlnPVltovFsHvHyIk6ivbdz7mdLpaBkE7OhCnOtoJdB8ctnsrGdhhLH3fLBDHrmKpKFztOEgPKd3Zbp3D1NOQb/jpmp5oKDMEjVj/U+0ZFMPBtQibD/9EXv0sRhZDjVZN0oCHhr5GC8yWglJKGVkAtsmx2C1gPEh45VskjSvsxQhpvRtOMSMWkuwRf/02C3lRPVQlz2zF55AlIG8vovYWa5 y8fReTCR GXNrxcD7BzV93RyMVgBh7SneFEpHBRpyKCGVkivIaHamqmNNwArxvlq/4J4KWM6Eij/O4Tqn/Gf80LMRtteeqsv65XNyhRIs24NgI/ns54MAfAs1TAS7NucBGqDIz6cj9XQrJTIIwrLh9R2hmgOtLyZr+meUE8pcRu26xalb/nrQsEy4UdM5f/EXqjt2YaqJXiviFKs+X1SurxIR403zamufTyE4sraJ+uIXzt7kCEyDiXHFOBbl4yFmVWSgDZkD459KjUV+DevkNBYYkoA5iWPESkCquVIFmYraap7H08GDS8bVX50AsWmqXyw== 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: From: "Mike Rapoport (Microsoft)" Hi, Following the discussion about handling of CXL fixed memory windows on arm64 [1] I decided to bite the bullet and move numa_memblks from x86 to the generic code so they will be available on arm64/riscv and maybe on loongarch sometime later. While it could be possible to use memblock to describe CXL memory windows, it currently lacks notion of unpopulated memory ranges and numa_memblks does implement this. Another reason to make numa_memblks generic is that both arch_numa (arm64 and riscv) and loongarch use trimmed copy of x86 code although there is no fundamental reason why the same code cannot be used on all these platforms. Having numa_memblks in mm/ will make it's interaction with ACPI and FDT more consistent and I believe will reduce maintenance burden. And with generic numa_memblks it is (almost) straightforward to enable NUMA emulation on arm64 and riscv. The first 5 commits in this series are cleanups that are not strictly related to numa_memblks. Commits 6-11 slightly reorder code in x86 to allow extracting numa_memblks and NUMA emulation to the generic code. Commits 12-14 actually move the code from arch/x86/ to mm/ and commit 15 does some aftermath cleanups. Commit 16 switches arch_numa to numa_memblks. Commit 17 enables usage of phys_to_target_node() and memory_add_physaddr_to_nid() with numa_memblks. [1] https://lore.kernel.org/all/20240529171236.32002-1-Jonathan.Cameron@huawei.com/ Mike Rapoport (Microsoft) (17): mm: move kernel/numa.c to mm/ MIPS: sgi-ip27: make NODE_DATA() the same as on all other architectures MIPS: loongson64: rename __node_data to node_data arch, mm: move definition of node_data to generic code arch, mm: pull out allocation of NODE_DATA to generic code x86/numa: simplify numa_distance allocation x86/numa: move FAKE_NODE_* defines to numa_emu x86/numa_emu: simplify allocation of phys_dist x86/numa_emu: split __apicid_to_node update to a helper function x86/numa_emu: use a helper function to get MAX_DMA32_PFN x86/numa: numa_{add,remove}_cpu: make cpu parameter unsigned mm: introduce numa_memblks mm: move numa_distance and related code from x86 to numa_memblks mm: introduce numa_emulation mm: make numa_memblks more self-contained arch_numa: switch over to numa_memblks mm: make range-to-target_node lookup facility a part of numa_memblks arch/arm64/include/asm/Kbuild | 1 + arch/arm64/include/asm/mmzone.h | 13 - arch/arm64/include/asm/topology.h | 1 + arch/loongarch/include/asm/Kbuild | 1 + arch/loongarch/include/asm/mmzone.h | 16 - arch/loongarch/include/asm/topology.h | 1 + arch/loongarch/kernel/numa.c | 21 - arch/mips/include/asm/mach-ip27/mmzone.h | 1 - .../mips/include/asm/mach-loongson64/mmzone.h | 4 - arch/mips/loongson64/numa.c | 20 +- arch/mips/sgi-ip27/ip27-memory.c | 2 +- arch/powerpc/include/asm/mmzone.h | 6 - arch/powerpc/mm/numa.c | 26 +- arch/riscv/include/asm/Kbuild | 1 + arch/riscv/include/asm/mmzone.h | 13 - arch/riscv/include/asm/topology.h | 4 + arch/s390/include/asm/Kbuild | 1 + arch/s390/include/asm/mmzone.h | 17 - arch/s390/kernel/numa.c | 3 - arch/sh/include/asm/mmzone.h | 3 - arch/sh/mm/init.c | 7 +- arch/sh/mm/numa.c | 3 - arch/sparc/include/asm/mmzone.h | 4 - arch/sparc/mm/init_64.c | 11 +- arch/x86/Kconfig | 9 +- arch/x86/include/asm/Kbuild | 1 + arch/x86/include/asm/mmzone.h | 6 - arch/x86/include/asm/mmzone_32.h | 17 - arch/x86/include/asm/mmzone_64.h | 18 - arch/x86/include/asm/numa.h | 24 +- arch/x86/include/asm/sparsemem.h | 9 - arch/x86/mm/Makefile | 1 - arch/x86/mm/amdtopology.c | 1 + arch/x86/mm/numa.c | 618 +----------------- arch/x86/mm/numa_internal.h | 24 - drivers/acpi/numa/srat.c | 1 + drivers/base/Kconfig | 1 + drivers/base/arch_numa.c | 223 ++----- drivers/cxl/Kconfig | 2 +- drivers/dax/Kconfig | 2 +- drivers/of/of_numa.c | 1 + include/asm-generic/mmzone.h | 5 + include/asm-generic/numa.h | 6 +- include/linux/numa.h | 5 + include/linux/numa_memblks.h | 58 ++ kernel/Makefile | 1 - kernel/numa.c | 26 - mm/Kconfig | 11 + mm/Makefile | 3 + mm/numa.c | 57 ++ {arch/x86/mm => mm}/numa_emulation.c | 42 +- mm/numa_memblks.c | 565 ++++++++++++++++ 52 files changed, 847 insertions(+), 1070 deletions(-) delete mode 100644 arch/arm64/include/asm/mmzone.h delete mode 100644 arch/loongarch/include/asm/mmzone.h delete mode 100644 arch/riscv/include/asm/mmzone.h delete mode 100644 arch/s390/include/asm/mmzone.h delete mode 100644 arch/x86/include/asm/mmzone.h delete mode 100644 arch/x86/include/asm/mmzone_32.h delete mode 100644 arch/x86/include/asm/mmzone_64.h create mode 100644 include/asm-generic/mmzone.h create mode 100644 include/linux/numa_memblks.h delete mode 100644 kernel/numa.c create mode 100644 mm/numa.c rename {arch/x86/mm => mm}/numa_emulation.c (94%) create mode 100644 mm/numa_memblks.c base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826