From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: tj@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-arm-kernel@lists.infradead.org,
Yinghai Lu <yinghai@kernel.org>,
Grygorii Strashko <grygorii.strashko@ti.com>
Subject: Re: [PATCH 09/24] mm/memblock: Add memblock memory allocation apis
Date: Mon, 2 Dec 2013 19:48:47 -0500 [thread overview]
Message-ID: <529D2A6F.5050607@ti.com> (raw)
In-Reply-To: <20131202163136.f31f39c5940c0ba6d20f4a00@linux-foundation.org>
On Monday 02 December 2013 07:31 PM, Andrew Morton wrote:
> On Fri, 8 Nov 2013 18:41:45 -0500 Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:
>
>> Introduce memblock memory allocation APIs which allow to support
>> PAE or LPAE extension on 32 bits archs where the physical memory start
>> address can be beyond 4GB. In such cases, existing bootmem APIs which
>> operate on 32 bit addresses won't work and needs memblock layer which
>> operates on 64 bit addresses.
>>
>> So we add equivalent APIs so that we can replace usage of bootmem
>> with memblock interfaces. Architectures already converted to NO_BOOTMEM
>> use these new interfaces and other which still uses bootmem, these new
>> APIs just fallback to exiting bootmem APIs. So no functional change as
>> such.
>>
>> In long run, once all the achitectures moves to NO_BOOTMEM, we can get rid of
>> bootmem layer completely. This is one step to remove the core code dependency
>> with bootmem and also gives path for architectures to move away from bootmem.
>>
>> The proposed interface will became active if both CONFIG_HAVE_MEMBLOCK
>> and CONFIG_NO_BOOTMEM are specified by arch. In case !CONFIG_NO_BOOTMEM,
>> the memblock() wrappers will fallback to the existing bootmem apis so
>> that arch's not converted to NO_BOOTMEM continue to work as is.
>>
>> The meaning of MEMBLOCK_ALLOC_ACCESSIBLE and MEMBLOCK_ALLOC_ANYWHERE is
>> kept same.
>>
>> ...
>>
>> +static void * __init _memblock_virt_alloc_try_nid_nopanic(
>> + phys_addr_t size, phys_addr_t align,
>> + phys_addr_t from, phys_addr_t max_addr,
>> + int nid)
>> +{
>> + phys_addr_t alloc;
>> + void *ptr;
>> +
>> + if (WARN_ON_ONCE(slab_is_available())) {
>> + if (nid == MAX_NUMNODES)
>> + return kzalloc(size, GFP_NOWAIT);
>> + else
>> + return kzalloc_node(size, GFP_NOWAIT, nid);
>> + }
>
> The use of MAX_NUMNODES is a bit unconventional here. I *think* we
> generally use NUMA_NO_NODE to indicate "don't care". I Also *think*
> that if this code did s/MAX_NUMNODES/NUMA_NO_NODE/g then the above
> simply becomes
>
> return kzalloc_node(size, GFP_NOWAIT, nid);
>
> and kzalloc_node() handles NUMA_NO_NODE appropriately.
>
> I *think* ;) Please check all this.
>
I guess same comment was given by Tejun as well. We didn't
address that in this series mainly because when NO_BOOTMEM
are not enabled, all calls of the new APIs will
be redirected to bootmem where MAX_NUMNODES is used.
Also, memblock core APIs __next_free_mem_range_rev() and
__next_free_mem_range() would need to be updated, and as result
we will need to re-check/update all direct calls of
memblock_alloc_xxx() APIs (including nobootmem).
So to keep behavior consistent with and without NO_BOOTMEM, we
used MAX_NUMNODES. Once we get a stage where we can remove
the bootmem.c, it should be easy to update the code
to use NUMA_NO_NODE without too much churn.
Regards,
Santosh
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-12-03 0:48 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-08 23:41 [PATCH 00/24] mm: Use memblock interface instead of bootmem Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 01/24] mm/memblock: debug: correct displaying of upper memory boundary Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 02/24] mm/memblock: debug: don't free reserved array if !ARCH_DISCARD_MEMBLOCK Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 03/24] mm/bootmem: remove duplicated declaration of __free_pages_bootmem() Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 04/24] mm/block: remove unnecessary inclusion of bootmem.h Santosh Shilimkar
2013-11-13 2:09 ` Jens Axboe
2013-11-13 23:10 ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 05/24] mm/memory_hotplug: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 06/24] mm/staging: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 07/24] mm/char: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 08/24] mm/memblock: drop WARN and use SMP_CACHE_BYTES as a default alignment Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 09/24] mm/memblock: Add memblock memory allocation apis Santosh Shilimkar
2013-12-03 0:31 ` Andrew Morton
2013-12-03 0:48 ` Santosh Shilimkar [this message]
2013-11-08 23:41 ` [PATCH 10/24] mm/init: Use memblock apis for early memory allocations Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 11/24] mm/printk: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 12/24] mm/page_alloc: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 13/24] mm/power: " Santosh Shilimkar
2013-11-09 1:30 ` Rafael J. Wysocki
2013-11-09 19:08 ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 14/24] mm/lib/swiotlb: " Santosh Shilimkar
2013-11-09 16:55 ` Konrad Rzeszutek Wilk
2013-11-09 19:07 ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 15/24] mm/lib/cpumask: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 16/24] mm/sparse: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 17/24] mm/hugetlb: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 18/24] mm/page_cgroup: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 19/24] mm/percpu: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 20/24] mm/memory_hotplug: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 21/24] mm/firmware: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 22/24] mm/ARM: kernel: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 23/24] mm/ARM: mm: " Santosh Shilimkar
2013-11-08 23:42 ` [PATCH 24/24] mm/ARM: OMAP: " Santosh Shilimkar
2013-11-29 16:50 ` [PATCH 00/24] mm: Use memblock interface instead of bootmem Santosh Shilimkar
2013-12-03 0:32 ` Andrew Morton
2013-12-03 0:40 ` Santosh Shilimkar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=529D2A6F.5050607@ti.com \
--to=santosh.shilimkar@ti.com \
--cc=akpm@linux-foundation.org \
--cc=grygorii.strashko@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=tj@kernel.org \
--cc=yinghai@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox