From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933381AbcH2N0b (ORCPT ); Mon, 29 Aug 2016 09:26:31 -0400 Received: from sender153-mail.zoho.com ([74.201.84.153]:21113 "EHLO sender153-mail.zoho.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933235AbcH2N0a (ORCPT ); Mon, 29 Aug 2016 09:26:30 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=zapps768; d=zoho.com; h=subject:to:references:cc:from:message-id:date:user-agent:mime-version:in-reply-to:content-type; b=F8qThg07m0JnYboMJQv0146s5hbRrYCMCBAJFa187sIAorKNGjIVehZALQ09jCSypsgi2Uy2nvH5 9wlZwq8J7AXFOuzgUaSymk+JSXigPIBWBwLPhuXtjPJzUYMOP5W0 Subject: Re: [PATCH 2/2] mm/bootmem.c: substitute kzalloc_node() for kzalloc() To: akpm@linux-foundation.org, mingo@kernel.org References: <632abd5b-1680-1c35-56f2-bba43c534a6a@zoho.com> Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, zijun_hu@htc.com From: zijun_hu Message-ID: <453e0a86-7224-f1f0-d6de-1d5920e0b45b@zoho.com> Date: Mon, 29 Aug 2016 21:26:15 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <632abd5b-1680-1c35-56f2-bba43c534a6a@zoho.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org i am sorry, this patch has many bugs i resend it in another mail thread please ignore it On 2016/8/27 23:35, zijun_hu wrote: > From: zijun_hu > > in ___alloc_bootmem_node_nopanic(), substitute kzalloc_node() > for kzalloc() in order to allocate memory within given node > preferentially when slab is available > > free_all_bootmem_core() is optimized to make the first two parameters > of __free_pages_bootmem() looks consistent with each other apparently > when freeing bdata->node_bootmem_map > > Signed-off-by: zijun_hu > --- > mm/bootmem.c | 21 ++++++--------------- > 1 file changed, 6 insertions(+), 15 deletions(-) > > diff --git a/mm/bootmem.c b/mm/bootmem.c > index 0aa7dda52402..615acca2e0cb 100644 > --- a/mm/bootmem.c > +++ b/mm/bootmem.c > @@ -11,15 +11,12 @@ > #include > #include > #include > -#include > #include > #include > #include > -#include > #include > #include > - > -#include > +#include > > #include "internal.h" > > @@ -229,13 +226,14 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata) > } > } > > - cur = bdata->node_min_pfn; > page = virt_to_page(bdata->node_bootmem_map); > pages = bdata->node_low_pfn - bdata->node_min_pfn; > pages = bootmem_bootmap_pages(pages); > count += pages; > - while (pages--) > - __free_pages_bootmem(page++, cur++, 0); > + while (pages--) { > + __free_pages_bootmem(page, page_to_pfn(page), 0); > + page++; > + } > bdata->node_bootmem_map = NULL; > > bdebug("nid=%td released=%lx\n", bdata - bootmem_node_data, count); > @@ -712,7 +710,7 @@ void * __init ___alloc_bootmem_node_nopanic(pg_data_t *pgdat, > void *ptr; > > if (WARN_ON_ONCE(slab_is_available())) > - return kzalloc(size, GFP_NOWAIT); > + return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id); > again: > > /* do not panic in alloc_bootmem_bdata() */ > @@ -738,9 +736,6 @@ again: > void * __init __alloc_bootmem_node_nopanic(pg_data_t *pgdat, unsigned long size, > unsigned long align, unsigned long goal) > { > - if (WARN_ON_ONCE(slab_is_available())) > - return kzalloc_node(size, GFP_NOWAIT, pgdat->node_id); > - > return ___alloc_bootmem_node_nopanic(pgdat, size, align, goal, 0); > } > > @@ -812,10 +807,6 @@ void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size, > > } > > -#ifndef ARCH_LOW_ADDRESS_LIMIT > -#define ARCH_LOW_ADDRESS_LIMIT 0xffffffffUL > -#endif > - > /** > * __alloc_bootmem_low - allocate low boot memory > * @size: size of the request in bytes >