From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752053AbcIIDuG (ORCPT ); Thu, 8 Sep 2016 23:50:06 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:31219 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751372AbcIIDuD (ORCPT ); Thu, 8 Sep 2016 23:50:03 -0400 Subject: Re: [PATCH v8 10/16] mm/memblock: add a new function memblock_alloc_near_nid To: Catalin Marinas , Will Deacon , linux-arm-kernel , linux-kernel , Rob Herring , "Frank Rowand" , devicetree , Andrew Morton , linux-mm References: <1472712907-12700-1-git-send-email-thunder.leizhen@huawei.com> <1472712907-12700-11-git-send-email-thunder.leizhen@huawei.com> CC: Zefan Li , Xinwei Hu , "Tianhong Ding" , Hanjun Guo From: "Leizhen (ThunderTown)" Message-ID: <57D23157.7000203@huawei.com> Date: Fri, 9 Sep 2016 11:49:43 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <1472712907-12700-11-git-send-email-thunder.leizhen@huawei.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.23.164] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.57D23165.0034,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 60559a19aa6fdc86bcb20851e436e9f0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, linux-mm folks: Can somebody help me to review this patch? I ran scripts/get_maintainer.pl -f mm/memblock.c and scripts/get_maintainer.pl -f mm/, but the results showed me that there is no maintainer. To understand this patch should also read patch 11. On 2016/9/1 14:55, Zhen Lei wrote: > If HAVE_MEMORYLESS_NODES is selected, and some memoryless numa nodes are > actually exist. The percpu variable areas and numa control blocks of that > memoryless numa nodes must be allocated from the nearest available node > to improve performance. > > Signed-off-by: Zhen Lei > --- > include/linux/memblock.h | 1 + > mm/memblock.c | 28 ++++++++++++++++++++++++++++ > 2 files changed, 29 insertions(+) > > diff --git a/include/linux/memblock.h b/include/linux/memblock.h > index 2925da2..8e866e0 100644 > --- a/include/linux/memblock.h > +++ b/include/linux/memblock.h > @@ -290,6 +290,7 @@ static inline int memblock_get_region_node(const struct memblock_region *r) > > phys_addr_t memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid); > phys_addr_t memblock_alloc_try_nid(phys_addr_t size, phys_addr_t align, int nid); > +phys_addr_t memblock_alloc_near_nid(phys_addr_t size, phys_addr_t align, int nid); > > phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align); > > diff --git a/mm/memblock.c b/mm/memblock.c > index 483197e..6578fff 100644 > --- a/mm/memblock.c > +++ b/mm/memblock.c > @@ -1189,6 +1189,34 @@ again: > return ret; > } > > +phys_addr_t __init memblock_alloc_near_nid(phys_addr_t size, phys_addr_t align, int nid) > +{ > + int i, best_nid, distance; > + u64 pa; > + DECLARE_BITMAP(nodes_map, MAX_NUMNODES); > + > + bitmap_zero(nodes_map, MAX_NUMNODES); > + > +find_nearest_node: > + best_nid = NUMA_NO_NODE; > + distance = INT_MAX; > + > + for_each_clear_bit(i, nodes_map, MAX_NUMNODES) > + if (node_distance(nid, i) < distance) { > + best_nid = i; > + distance = node_distance(nid, i); > + } > + > + pa = memblock_alloc_nid(size, align, best_nid); > + if (!pa) { > + BUG_ON(best_nid == NUMA_NO_NODE); > + bitmap_set(nodes_map, best_nid, 1); > + goto find_nearest_node; > + } > + > + return pa; > +} > + > phys_addr_t __init __memblock_alloc_base(phys_addr_t size, phys_addr_t align, phys_addr_t max_addr) > { > return memblock_alloc_base_nid(size, align, max_addr, NUMA_NO_NODE, > -- > 2.5.0 > > > > . >