<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;
        mso-ligatures:standardcontextual;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#467886;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:11.0pt;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="en-FR" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:black">On 7 Aug 2024, at 2:41, Mike Rapoport wrote:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">From: "Mike Rapoport (Microsoft)" <<a href="mailto:rppt@kernel.org" title="mailto:rppt@kernel.org"><span style="color:#0086F0">rppt@kernel.org</span></a>><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Until now arch_numa was directly translating firmware NUMA information<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">to memblock.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Using numa_memblks as an intermediate step has a few advantages:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">* alignment with more battle tested x86 implementation<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">* availability of NUMA emulation<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">* maintaining node information for not yet populated memory<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Adjust a few places in numa_memblks to compile with 32-bit phys_addr_t<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">and replace current functionality related to numa_add_memblk() and<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">__node_distance() in arch_numa with the implementation based on<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">numa_memblks and add functions required by numa_emulation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Signed-off-by: Mike Rapoport (Microsoft) <<a href="mailto:rppt@kernel.org" title="mailto:rppt@kernel.org"><span style="color:#0086F0">rppt@kernel.org</span></a>><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Tested-by: Zi Yan <<a href="mailto:ziy@nvidia.com" title="mailto:ziy@nvidia.com"><span style="color:#0086F0">ziy@nvidia.com</span></a>> # for x86_64 and arm64<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Reviewed-by: Jonathan Cameron <<a href="mailto:Jonathan.Cameron@huawei.com" title="mailto:Jonathan.Cameron@huawei.com"><span style="color:#0086F0">Jonathan.Cameron@huawei.com</span></a>><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Tested-by: Jonathan Cameron <<a href="mailto:Jonathan.Cameron@huawei.com" title="mailto:Jonathan.Cameron@huawei.com"><span style="color:#0086F0">Jonathan.Cameron@huawei.com</span></a>> [arm64 + CXL via QEMU]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Acked-by: Dan Williams <<a href="mailto:dan.j.williams@intel.com" title="mailto:dan.j.williams@intel.com"><span style="color:#0086F0">dan.j.williams@intel.com</span></a>><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Acked-by: David Hildenbrand <<a href="mailto:david@redhat.com" title="mailto:david@redhat.com"><span style="color:#0086F0">david@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">  drivers/base/Kconfig       |   1 +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">  drivers/base/arch_numa.c   | 201 +++++++++++--------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">  include/asm-generic/numa.h |   6 +-<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">  mm/numa_memblks.c          |  17 ++--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">  4 files changed, 75 insertions(+), 150 deletions(-)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black"><snip><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">+<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+u64 __init numa_emu_dma_end(void)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+<span class="apple-tab-span">            
</span>return PFN_PHYS(memblock_start_of_DRAM() + SZ_4G);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">PFN_PHYS() translation is unnecessary here, as<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">memblock_start_of_DRAM() + SZ_4G is already a<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">memory size.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">This should fix it:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">diff --git a/drivers/base/arch_numa.c b/drivers/base/arch_numa.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">index 8d49893c0e94..e18701676426 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">--- a/drivers/base/arch_numa.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+++ b/drivers/base/arch_numa.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">@@ -346,7 +346,7 @@ void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">u64 __init numa_emu_dma_end(void)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">-<span class="apple-tab-span">             
</span>return PFN_PHYS(memblock_start_of_DRAM() + SZ_4G);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">+<span class="apple-tab-span">            
</span>return memblock_start_of_DRAM() + SZ_4G;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">void debug_cpumask_set_cpu(unsigned int cpu, int node, bool enable)<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>