All of lore.kernel.org
 help / color / mirror / Atom feed
From: grygorii.strashko@ti.com (Grygorii Strashko)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 08/23] mm/memblock: Add memblock memory allocation apis
Date: Thu, 5 Dec 2013 18:35:00 +0200	[thread overview]
Message-ID: <52A0AB34.2030703@ti.com> (raw)
In-Reply-To: <20131203232445.GX8277@htj.dyndns.org>

Hi Tejun,

On 12/04/2013 01:24 AM, Tejun Heo wrote:
> Hello,
> 
> On Mon, Dec 02, 2013 at 09:27:23PM -0500, Santosh Shilimkar wrote:
>> 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.
> 
> The last part of the second last sentence doesn't parse too well.  I
> think it'd be worthwhile to improve and preferably expand on it as
> this is a bit tricky to understand given the twisted state of early
> memory allocation.
> 
>> 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.
> 
> Lines too long?
> 

[...]

> 
>> +/* FIXME: Move to memblock.h at a point where we remove nobootmem.c */
>> +void *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);
> 
> Wouldn't @min_addr instead of @from make more sense?  Ditto for other
> occurrences.
> 
>> +void *memblock_virt_alloc_try_nid(phys_addr_t size, phys_addr_t align,
>> +		phys_addr_t from, phys_addr_t max_addr, int nid);
>> +void __memblock_free_early(phys_addr_t base, phys_addr_t size);
>> +void __memblock_free_late(phys_addr_t base, phys_addr_t size);
>> +
>> +#define memblock_virt_alloc(x) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> The underlying function interprets 0 as the default align, so it
> probably is a better idea to just use 0 here.
> 
>> +#define memblock_virt_alloc_align(x, align) \
>> +	memblock_virt_alloc_try_nid(x, align, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> Also, do we really need this align variant separate when the caller
> can simply specify 0 for the default?

Unfortunately Yes. 
We need it to keep compatibility with bootmem/nobootmem
which don't handle 0 as default align value.

> 
>> +#define memblock_virt_alloc_nopanic(x) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, SMP_CACHE_BYTES, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_align_nopanic(x, align) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, align, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_node(x, nid) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, nid)
>> +#define memblock_virt_alloc_node_nopanic(x, nid) \

Regards,
- grygorii

WARNING: multiple messages have this Message-ID (diff)
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Tejun Heo <tj@kernel.org>, Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	Yinghai Lu <yinghai@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v2 08/23] mm/memblock: Add memblock memory allocation apis
Date: Thu, 5 Dec 2013 18:35:00 +0200	[thread overview]
Message-ID: <52A0AB34.2030703@ti.com> (raw)
In-Reply-To: <20131203232445.GX8277@htj.dyndns.org>

Hi Tejun,

On 12/04/2013 01:24 AM, Tejun Heo wrote:
> Hello,
> 
> On Mon, Dec 02, 2013 at 09:27:23PM -0500, Santosh Shilimkar wrote:
>> 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.
> 
> The last part of the second last sentence doesn't parse too well.  I
> think it'd be worthwhile to improve and preferably expand on it as
> this is a bit tricky to understand given the twisted state of early
> memory allocation.
> 
>> 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.
> 
> Lines too long?
> 

[...]

> 
>> +/* FIXME: Move to memblock.h at a point where we remove nobootmem.c */
>> +void *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);
> 
> Wouldn't @min_addr instead of @from make more sense?  Ditto for other
> occurrences.
> 
>> +void *memblock_virt_alloc_try_nid(phys_addr_t size, phys_addr_t align,
>> +		phys_addr_t from, phys_addr_t max_addr, int nid);
>> +void __memblock_free_early(phys_addr_t base, phys_addr_t size);
>> +void __memblock_free_late(phys_addr_t base, phys_addr_t size);
>> +
>> +#define memblock_virt_alloc(x) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> The underlying function interprets 0 as the default align, so it
> probably is a better idea to just use 0 here.
> 
>> +#define memblock_virt_alloc_align(x, align) \
>> +	memblock_virt_alloc_try_nid(x, align, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> Also, do we really need this align variant separate when the caller
> can simply specify 0 for the default?

Unfortunately Yes. 
We need it to keep compatibility with bootmem/nobootmem
which don't handle 0 as default align value.

> 
>> +#define memblock_virt_alloc_nopanic(x) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, SMP_CACHE_BYTES, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_align_nopanic(x, align) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, align, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_node(x, nid) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, nid)
>> +#define memblock_virt_alloc_node_nopanic(x, nid) \

Regards,
- grygorii

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Tejun Heo <tj@kernel.org>, Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <linux-mm@kvack.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v2 08/23] mm/memblock: Add memblock memory allocation apis
Date: Thu, 5 Dec 2013 18:35:00 +0200	[thread overview]
Message-ID: <52A0AB34.2030703@ti.com> (raw)
In-Reply-To: <20131203232445.GX8277@htj.dyndns.org>

Hi Tejun,

On 12/04/2013 01:24 AM, Tejun Heo wrote:
> Hello,
> 
> On Mon, Dec 02, 2013 at 09:27:23PM -0500, Santosh Shilimkar wrote:
>> 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.
> 
> The last part of the second last sentence doesn't parse too well.  I
> think it'd be worthwhile to improve and preferably expand on it as
> this is a bit tricky to understand given the twisted state of early
> memory allocation.
> 
>> 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.
> 
> Lines too long?
> 

[...]

> 
>> +/* FIXME: Move to memblock.h at a point where we remove nobootmem.c */
>> +void *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);
> 
> Wouldn't @min_addr instead of @from make more sense?  Ditto for other
> occurrences.
> 
>> +void *memblock_virt_alloc_try_nid(phys_addr_t size, phys_addr_t align,
>> +		phys_addr_t from, phys_addr_t max_addr, int nid);
>> +void __memblock_free_early(phys_addr_t base, phys_addr_t size);
>> +void __memblock_free_late(phys_addr_t base, phys_addr_t size);
>> +
>> +#define memblock_virt_alloc(x) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> The underlying function interprets 0 as the default align, so it
> probably is a better idea to just use 0 here.
> 
>> +#define memblock_virt_alloc_align(x, align) \
>> +	memblock_virt_alloc_try_nid(x, align, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES)
> 
> Also, do we really need this align variant separate when the caller
> can simply specify 0 for the default?

Unfortunately Yes. 
We need it to keep compatibility with bootmem/nobootmem
which don't handle 0 as default align value.

> 
>> +#define memblock_virt_alloc_nopanic(x) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, SMP_CACHE_BYTES, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_align_nopanic(x, align) \
>> +	memblock_virt_alloc_try_nid_nopanic(x, align, \
>> +					     BOOTMEM_LOW_LIMIT, \
>> +					     BOOTMEM_ALLOC_ACCESSIBLE, \
>> +					     MAX_NUMNODES)
>> +#define memblock_virt_alloc_node(x, nid) \
>> +	memblock_virt_alloc_try_nid(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT, \
>> +				     BOOTMEM_ALLOC_ACCESSIBLE, nid)
>> +#define memblock_virt_alloc_node_nopanic(x, nid) \

Regards,
- grygorii


  parent reply	other threads:[~2013-12-05 16:35 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-03  2:27 [PATCH v2 00/23] mm: Use memblock interface instead of bootmem Santosh Shilimkar
2013-12-03  2:27 ` Santosh Shilimkar
2013-12-03  2:27 ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 01/23] mm/memblock: debug: correct displaying of upper memory boundary Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 02/23] mm/memblock: debug: don't free reserved array if !ARCH_DISCARD_MEMBLOCK Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:52   ` Tejun Heo
2013-12-03 22:52     ` Tejun Heo
2013-12-03 22:52     ` Tejun Heo
2013-12-04 14:58     ` Santosh Shilimkar
2013-12-04 14:58       ` Santosh Shilimkar
2013-12-04 14:58       ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 03/23] mm/bootmem: remove duplicated declaration of __free_pages_bootmem() Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:53   ` Tejun Heo
2013-12-03 22:53     ` Tejun Heo
2013-12-03 22:53     ` Tejun Heo
2013-12-03  2:27 ` [PATCH v2 04/23] mm/memory_hotplug: remove unnecessary inclusion of bootmem.h Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:54   ` Tejun Heo
2013-12-03 22:54     ` Tejun Heo
2013-12-03 22:54     ` Tejun Heo
2013-12-03  2:27 ` [PATCH v2 05/23] mm/staging: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 06/23] mm/char: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:55   ` Tejun Heo
2013-12-03 22:55     ` Tejun Heo
2013-12-03 22:55     ` Tejun Heo
2013-12-04 14:57     ` Santosh Shilimkar
2013-12-04 14:57       ` Santosh Shilimkar
2013-12-04 14:57       ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 07/23] mm/memblock: drop WARN and use SMP_CACHE_BYTES as a default alignment Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:58   ` Tejun Heo
2013-12-03 22:58     ` Tejun Heo
2013-12-03 22:58     ` Tejun Heo
2013-12-03  2:27 ` [PATCH v2 08/23] mm/memblock: Add memblock memory allocation apis Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 23:24   ` Tejun Heo
2013-12-03 23:24     ` Tejun Heo
2013-12-03 23:24     ` Tejun Heo
2013-12-04 15:54     ` Santosh Shilimkar
2013-12-04 15:54       ` Santosh Shilimkar
2013-12-04 15:54       ` Santosh Shilimkar
2013-12-04 16:07       ` Tejun Heo
2013-12-04 16:07         ` Tejun Heo
2013-12-04 16:07         ` Tejun Heo
2013-12-04 16:46         ` Santosh Shilimkar
2013-12-04 16:46           ` Santosh Shilimkar
2013-12-04 16:46           ` Santosh Shilimkar
2013-12-05 13:12           ` Grygorii Strashko
2013-12-05 13:12             ` Grygorii Strashko
2013-12-05 13:12             ` Grygorii Strashko
2013-12-05 16:59             ` Tejun Heo
2013-12-05 16:59               ` Tejun Heo
2013-12-05 16:59               ` Tejun Heo
2013-12-05 17:13               ` Santosh Shilimkar
2013-12-05 17:13                 ` Santosh Shilimkar
2013-12-05 17:13                 ` Santosh Shilimkar
2014-01-11  0:53                 ` Andrew Morton
2014-01-11  0:53                   ` Andrew Morton
2014-01-11  0:53                   ` Andrew Morton
2014-01-11  0:59                   ` Santosh Shilimkar
2014-01-11  0:59                     ` Santosh Shilimkar
2014-01-11  0:59                     ` Santosh Shilimkar
2013-12-05 16:35     ` Grygorii Strashko [this message]
2013-12-05 16:35       ` Grygorii Strashko
2013-12-05 16:35       ` Grygorii Strashko
2013-12-05 16:53       ` Tejun Heo
2013-12-05 16:53         ` Tejun Heo
2013-12-05 16:53         ` Tejun Heo
2013-12-05 18:48         ` Strashko, Grygorii
2013-12-05 18:48           ` Strashko, Grygorii
2013-12-05 18:48           ` Strashko, Grygorii
2013-12-05 18:51           ` Tejun Heo
2013-12-05 18:51             ` Tejun Heo
2013-12-05 18:51             ` Tejun Heo
2013-12-05 20:34           ` Santosh Shilimkar
2013-12-05 20:34             ` Santosh Shilimkar
2013-12-05 20:34             ` Santosh Shilimkar
2013-12-06 14:52             ` Grygorii Strashko
2013-12-06 14:52               ` Grygorii Strashko
2013-12-06 14:52               ` Grygorii Strashko
2013-12-03  2:27 ` [PATCH v2 09/23] mm/init: Use memblock apis for early memory allocations Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 10/23] mm/printk: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 11/23] mm/page_alloc: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 12/23] mm/power: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 13/23] mm/lib/swiotlb: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 14/23] mm/lib/cpumask: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 15/23] mm/sparse: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 16/23] mm/hugetlb: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 17/23] mm/page_cgroup: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 18/23] mm/percpu: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 19/23] mm/memory_hotplug: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 20/23] mm/firmware: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 21/23] mm/ARM: kernel: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 22/23] mm/ARM: mm: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27 ` [PATCH v2 23/23] mm/ARM: OMAP: " Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03  2:27   ` Santosh Shilimkar
2013-12-03 22:48 ` [PATCH v2 00/23] mm: Use memblock interface instead of bootmem Tejun Heo
2013-12-03 22:48   ` Tejun Heo
2013-12-03 22:48   ` Tejun Heo
2013-12-04 14:56   ` Santosh Shilimkar
2013-12-04 14:56     ` Santosh Shilimkar
2013-12-04 14:56     ` 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=52A0AB34.2030703@ti.com \
    --to=grygorii.strashko@ti.com \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.