All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Mike Rapoport <rppt@linux.vnet.ibm.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ingo Molnar <mingo@redhat.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Paul Burton <paul.burton@mips.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tony Luck <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org, linux-mips@linux-mips.org,
	linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 22/29] mm: nobootmem: remove bootmem allocation APIs
Date: Thu, 6 Sep 2018 10:56:07 +0200	[thread overview]
Message-ID: <20180906085607.GG14951@dhcp22.suse.cz> (raw)
In-Reply-To: <1536163184-26356-23-git-send-email-rppt@linux.vnet.ibm.com>

On Wed 05-09-18 18:59:37, Mike Rapoport wrote:
> The bootmem compatibility APIs are not used and can be removed.
> 
> Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>

I am happy to see this finally go
Acked-by: Michal Hocko <mhocko@suse.com>

> ---
>  include/linux/bootmem.h |  47 ----------
>  mm/nobootmem.c          | 224 ------------------------------------------------
>  2 files changed, 271 deletions(-)
> 
> diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
> index c97c105..73f1272 100644
> --- a/include/linux/bootmem.h
> +++ b/include/linux/bootmem.h
> @@ -36,33 +36,6 @@ extern void free_bootmem_node(pg_data_t *pgdat,
>  extern void free_bootmem(unsigned long physaddr, unsigned long size);
>  extern void free_bootmem_late(unsigned long physaddr, unsigned long size);
>  
> -extern void *__alloc_bootmem(unsigned long size,
> -			     unsigned long align,
> -			     unsigned long goal);
> -extern void *__alloc_bootmem_nopanic(unsigned long size,
> -				     unsigned long align,
> -				     unsigned long goal) __malloc;
> -extern void *__alloc_bootmem_node(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -void *__alloc_bootmem_node_high(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -extern void *__alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -void *___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal,
> -				  unsigned long limit) __malloc;
> -extern void *__alloc_bootmem_low(unsigned long size,
> -				 unsigned long align,
> -				 unsigned long goal) __malloc;
> -
>  /* We are using top down, so it is safe to use 0 here */
>  #define BOOTMEM_LOW_LIMIT 0
>  
> @@ -70,26 +43,6 @@ extern void *__alloc_bootmem_low(unsigned long size,
>  #define ARCH_LOW_ADDRESS_LIMIT  0xffffffffUL
>  #endif
>  
> -#define alloc_bootmem(x) \
> -	__alloc_bootmem(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_align(x, align) \
> -	__alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages(x) \
> -	__alloc_bootmem(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages_nopanic(x) \
> -	__alloc_bootmem_nopanic(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_node(pgdat, x) \
> -	__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_node_nopanic(pgdat, x) \
> -	__alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages_node(pgdat, x) \
> -	__alloc_bootmem_node(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -
> -#define alloc_bootmem_low(x) \
> -	__alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
> -#define alloc_bootmem_low_pages(x) \
> -	__alloc_bootmem_low(x, PAGE_SIZE, 0)
> -
>  /* FIXME: use MEMBLOCK_ALLOC_* variants here */
>  #define BOOTMEM_ALLOC_ACCESSIBLE	0
>  #define BOOTMEM_ALLOC_ANYWHERE		(~(phys_addr_t)0)
> diff --git a/mm/nobootmem.c b/mm/nobootmem.c
> index 44ce7de..bc38e56 100644
> --- a/mm/nobootmem.c
> +++ b/mm/nobootmem.c
> @@ -33,41 +33,6 @@ unsigned long min_low_pfn;
>  unsigned long max_pfn;
>  unsigned long long max_possible_pfn;
>  
> -static void * __init __alloc_memory_core_early(int nid, u64 size, u64 align,
> -					u64 goal, u64 limit)
> -{
> -	void *ptr;
> -	u64 addr;
> -	enum memblock_flags flags = choose_memblock_flags();
> -
> -	if (limit > memblock.current_limit)
> -		limit = memblock.current_limit;
> -
> -again:
> -	addr = memblock_find_in_range_node(size, align, goal, limit, nid,
> -					   flags);
> -	if (!addr && (flags & MEMBLOCK_MIRROR)) {
> -		flags &= ~MEMBLOCK_MIRROR;
> -		pr_warn("Could not allocate %pap bytes of mirrored memory\n",
> -			&size);
> -		goto again;
> -	}
> -	if (!addr)
> -		return NULL;
> -
> -	if (memblock_reserve(addr, size))
> -		return NULL;
> -
> -	ptr = phys_to_virt(addr);
> -	memset(ptr, 0, size);
> -	/*
> -	 * The min_count is set to 0 so that bootmem allocated blocks
> -	 * are never reported as leaks.
> -	 */
> -	kmemleak_alloc(ptr, size, 0, 0);
> -	return ptr;
> -}
> -
>  /**
>   * free_bootmem_late - free bootmem pages directly to page allocator
>   * @addr: starting address of the range
> @@ -215,192 +180,3 @@ void __init free_bootmem(unsigned long addr, unsigned long size)
>  {
>  	memblock_free(addr, size);
>  }
> -
> -static void * __init ___alloc_bootmem_nopanic(unsigned long size,
> -					unsigned long align,
> -					unsigned long goal,
> -					unsigned long limit)
> -{
> -	void *ptr;
> -
> -	if (WARN_ON_ONCE(slab_is_available()))
> -		return kzalloc(size, GFP_NOWAIT);
> -
> -restart:
> -
> -	ptr = __alloc_memory_core_early(NUMA_NO_NODE, size, align, goal, limit);
> -
> -	if (ptr)
> -		return ptr;
> -
> -	if (goal != 0) {
> -		goal = 0;
> -		goto restart;
> -	}
> -
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem_nopanic - allocate boot memory without panicking
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * Return: address of the allocated region or %NULL on failure.
> - */
> -void * __init __alloc_bootmem_nopanic(unsigned long size, unsigned long align,
> -					unsigned long goal)
> -{
> -	unsigned long limit = -1UL;
> -
> -	return ___alloc_bootmem_nopanic(size, align, goal, limit);
> -}
> -
> -static void * __init ___alloc_bootmem(unsigned long size, unsigned long align,
> -					unsigned long goal, unsigned long limit)
> -{
> -	void *mem = ___alloc_bootmem_nopanic(size, align, goal, limit);
> -
> -	if (mem)
> -		return mem;
> -	/*
> -	 * Whoops, we cannot satisfy the allocation request.
> -	 */
> -	pr_alert("bootmem alloc of %lu bytes failed!\n", size);
> -	panic("Out of memory");
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem - allocate boot memory
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem(unsigned long size, unsigned long align,
> -			      unsigned long goal)
> -{
> -	unsigned long limit = -1UL;
> -
> -	return ___alloc_bootmem(size, align, goal, limit);
> -}
> -
> -void * __init ___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -						   unsigned long size,
> -						   unsigned long align,
> -						   unsigned long goal,
> -						   unsigned long limit)
> -{
> -	void *ptr;
> -
> -again:
> -	ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
> -					goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	ptr = __alloc_memory_core_early(NUMA_NO_NODE, size, align,
> -					goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	if (goal) {
> -		goal = 0;
> -		goto again;
> -	}
> -
> -	return NULL;
> -}
> -
> -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);
> -}
> -
> -static void * __init ___alloc_bootmem_node(pg_data_t *pgdat, unsigned long size,
> -				    unsigned long align, unsigned long goal,
> -				    unsigned long limit)
> -{
> -	void *ptr;
> -
> -	ptr = ___alloc_bootmem_node_nopanic(pgdat, size, align, goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	pr_alert("bootmem alloc of %lu bytes failed!\n", size);
> -	panic("Out of memory");
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem_node - allocate boot memory from a specific node
> - * @pgdat: node to allocate from
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may fall back to any node in the system if the specified node
> - * can not hold the requested memory.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem_node(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(pgdat, size, align, goal, 0);
> -}
> -
> -void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size,
> -				   unsigned long align, unsigned long goal)
> -{
> -	return __alloc_bootmem_node(pgdat, size, align, goal);
> -}
> -
> -
> -/**
> - * __alloc_bootmem_low - allocate low boot memory
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
> -				  unsigned long goal)
> -{
> -	return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT);
> -}
> -- 
> 2.7.4
> 

-- 
Michal Hocko
SUSE Labs

WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org>
To: Mike Rapoport <rppt@linux.vnet.ibm.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ingo Molnar <mingo@redhat.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Paul Burton <paul.burton@mips.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tony Luck <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org, linux-mips@linux-mips.org,
	linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 22/29] mm: nobootmem: remove bootmem allocation APIs
Date: Thu, 06 Sep 2018 08:56:07 +0000	[thread overview]
Message-ID: <20180906085607.GG14951@dhcp22.suse.cz> (raw)
In-Reply-To: <1536163184-26356-23-git-send-email-rppt@linux.vnet.ibm.com>

On Wed 05-09-18 18:59:37, Mike Rapoport wrote:
> The bootmem compatibility APIs are not used and can be removed.
> 
> Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>

I am happy to see this finally go
Acked-by: Michal Hocko <mhocko@suse.com>

> ---
>  include/linux/bootmem.h |  47 ----------
>  mm/nobootmem.c          | 224 ------------------------------------------------
>  2 files changed, 271 deletions(-)
> 
> diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
> index c97c105..73f1272 100644
> --- a/include/linux/bootmem.h
> +++ b/include/linux/bootmem.h
> @@ -36,33 +36,6 @@ extern void free_bootmem_node(pg_data_t *pgdat,
>  extern void free_bootmem(unsigned long physaddr, unsigned long size);
>  extern void free_bootmem_late(unsigned long physaddr, unsigned long size);
>  
> -extern void *__alloc_bootmem(unsigned long size,
> -			     unsigned long align,
> -			     unsigned long goal);
> -extern void *__alloc_bootmem_nopanic(unsigned long size,
> -				     unsigned long align,
> -				     unsigned long goal) __malloc;
> -extern void *__alloc_bootmem_node(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -void *__alloc_bootmem_node_high(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -extern void *__alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal) __malloc;
> -void *___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -				  unsigned long size,
> -				  unsigned long align,
> -				  unsigned long goal,
> -				  unsigned long limit) __malloc;
> -extern void *__alloc_bootmem_low(unsigned long size,
> -				 unsigned long align,
> -				 unsigned long goal) __malloc;
> -
>  /* We are using top down, so it is safe to use 0 here */
>  #define BOOTMEM_LOW_LIMIT 0
>  
> @@ -70,26 +43,6 @@ extern void *__alloc_bootmem_low(unsigned long size,
>  #define ARCH_LOW_ADDRESS_LIMIT  0xffffffffUL
>  #endif
>  
> -#define alloc_bootmem(x) \
> -	__alloc_bootmem(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_align(x, align) \
> -	__alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages(x) \
> -	__alloc_bootmem(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages_nopanic(x) \
> -	__alloc_bootmem_nopanic(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_node(pgdat, x) \
> -	__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_node_nopanic(pgdat, x) \
> -	__alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
> -#define alloc_bootmem_pages_node(pgdat, x) \
> -	__alloc_bootmem_node(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
> -
> -#define alloc_bootmem_low(x) \
> -	__alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
> -#define alloc_bootmem_low_pages(x) \
> -	__alloc_bootmem_low(x, PAGE_SIZE, 0)
> -
>  /* FIXME: use MEMBLOCK_ALLOC_* variants here */
>  #define BOOTMEM_ALLOC_ACCESSIBLE	0
>  #define BOOTMEM_ALLOC_ANYWHERE		(~(phys_addr_t)0)
> diff --git a/mm/nobootmem.c b/mm/nobootmem.c
> index 44ce7de..bc38e56 100644
> --- a/mm/nobootmem.c
> +++ b/mm/nobootmem.c
> @@ -33,41 +33,6 @@ unsigned long min_low_pfn;
>  unsigned long max_pfn;
>  unsigned long long max_possible_pfn;
>  
> -static void * __init __alloc_memory_core_early(int nid, u64 size, u64 align,
> -					u64 goal, u64 limit)
> -{
> -	void *ptr;
> -	u64 addr;
> -	enum memblock_flags flags = choose_memblock_flags();
> -
> -	if (limit > memblock.current_limit)
> -		limit = memblock.current_limit;
> -
> -again:
> -	addr = memblock_find_in_range_node(size, align, goal, limit, nid,
> -					   flags);
> -	if (!addr && (flags & MEMBLOCK_MIRROR)) {
> -		flags &= ~MEMBLOCK_MIRROR;
> -		pr_warn("Could not allocate %pap bytes of mirrored memory\n",
> -			&size);
> -		goto again;
> -	}
> -	if (!addr)
> -		return NULL;
> -
> -	if (memblock_reserve(addr, size))
> -		return NULL;
> -
> -	ptr = phys_to_virt(addr);
> -	memset(ptr, 0, size);
> -	/*
> -	 * The min_count is set to 0 so that bootmem allocated blocks
> -	 * are never reported as leaks.
> -	 */
> -	kmemleak_alloc(ptr, size, 0, 0);
> -	return ptr;
> -}
> -
>  /**
>   * free_bootmem_late - free bootmem pages directly to page allocator
>   * @addr: starting address of the range
> @@ -215,192 +180,3 @@ void __init free_bootmem(unsigned long addr, unsigned long size)
>  {
>  	memblock_free(addr, size);
>  }
> -
> -static void * __init ___alloc_bootmem_nopanic(unsigned long size,
> -					unsigned long align,
> -					unsigned long goal,
> -					unsigned long limit)
> -{
> -	void *ptr;
> -
> -	if (WARN_ON_ONCE(slab_is_available()))
> -		return kzalloc(size, GFP_NOWAIT);
> -
> -restart:
> -
> -	ptr = __alloc_memory_core_early(NUMA_NO_NODE, size, align, goal, limit);
> -
> -	if (ptr)
> -		return ptr;
> -
> -	if (goal != 0) {
> -		goal = 0;
> -		goto restart;
> -	}
> -
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem_nopanic - allocate boot memory without panicking
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * Return: address of the allocated region or %NULL on failure.
> - */
> -void * __init __alloc_bootmem_nopanic(unsigned long size, unsigned long align,
> -					unsigned long goal)
> -{
> -	unsigned long limit = -1UL;
> -
> -	return ___alloc_bootmem_nopanic(size, align, goal, limit);
> -}
> -
> -static void * __init ___alloc_bootmem(unsigned long size, unsigned long align,
> -					unsigned long goal, unsigned long limit)
> -{
> -	void *mem = ___alloc_bootmem_nopanic(size, align, goal, limit);
> -
> -	if (mem)
> -		return mem;
> -	/*
> -	 * Whoops, we cannot satisfy the allocation request.
> -	 */
> -	pr_alert("bootmem alloc of %lu bytes failed!\n", size);
> -	panic("Out of memory");
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem - allocate boot memory
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem(unsigned long size, unsigned long align,
> -			      unsigned long goal)
> -{
> -	unsigned long limit = -1UL;
> -
> -	return ___alloc_bootmem(size, align, goal, limit);
> -}
> -
> -void * __init ___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
> -						   unsigned long size,
> -						   unsigned long align,
> -						   unsigned long goal,
> -						   unsigned long limit)
> -{
> -	void *ptr;
> -
> -again:
> -	ptr = __alloc_memory_core_early(pgdat->node_id, size, align,
> -					goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	ptr = __alloc_memory_core_early(NUMA_NO_NODE, size, align,
> -					goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	if (goal) {
> -		goal = 0;
> -		goto again;
> -	}
> -
> -	return NULL;
> -}
> -
> -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);
> -}
> -
> -static void * __init ___alloc_bootmem_node(pg_data_t *pgdat, unsigned long size,
> -				    unsigned long align, unsigned long goal,
> -				    unsigned long limit)
> -{
> -	void *ptr;
> -
> -	ptr = ___alloc_bootmem_node_nopanic(pgdat, size, align, goal, limit);
> -	if (ptr)
> -		return ptr;
> -
> -	pr_alert("bootmem alloc of %lu bytes failed!\n", size);
> -	panic("Out of memory");
> -	return NULL;
> -}
> -
> -/**
> - * __alloc_bootmem_node - allocate boot memory from a specific node
> - * @pgdat: node to allocate from
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may fall back to any node in the system if the specified node
> - * can not hold the requested memory.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem_node(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(pgdat, size, align, goal, 0);
> -}
> -
> -void * __init __alloc_bootmem_node_high(pg_data_t *pgdat, unsigned long size,
> -				   unsigned long align, unsigned long goal)
> -{
> -	return __alloc_bootmem_node(pgdat, size, align, goal);
> -}
> -
> -
> -/**
> - * __alloc_bootmem_low - allocate low boot memory
> - * @size: size of the request in bytes
> - * @align: alignment of the region
> - * @goal: preferred starting address of the region
> - *
> - * The goal is dropped if it can not be satisfied and the allocation will
> - * fall back to memory below @goal.
> - *
> - * Allocation may happen on any node in the system.
> - *
> - * The function panics if the request can not be satisfied.
> - *
> - * Return: address of the allocated region.
> - */
> -void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
> -				  unsigned long goal)
> -{
> -	return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT);
> -}
> -- 
> 2.7.4
> 

-- 
Michal Hocko
SUSE Labs

  reply	other threads:[~2018-09-06  8:56 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-05 15:59 [RFC PATCH 00/29] mm: remove bootmem allocator Mike Rapoport
2018-09-05 15:59 ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 01/29] mips: switch to NO_BOOTMEM Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 02/29] mm: remove CONFIG_NO_BOOTMEM Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 03/29] mm: remove CONFIG_HAVE_MEMBLOCK Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-19  9:04   ` Jonathan Cameron
2018-09-19  9:04     ` Jonathan Cameron
2018-09-19  9:04     ` Jonathan Cameron
2018-09-19 10:34     ` Mike Rapoport
2018-09-19 10:34       ` Mike Rapoport
2018-09-19 10:34       ` Mike Rapoport
2018-09-19 10:34       ` Mike Rapoport
2018-09-19 10:45       ` Jonathan Cameron
2018-09-19 10:45         ` Jonathan Cameron
2018-09-19 10:45         ` Jonathan Cameron
2018-09-19 10:55         ` Mike Rapoport
2018-09-19 10:55           ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 04/29] mm: remove bootmem allocator implementation Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:30   ` Michal Hocko
2018-09-06  7:30     ` Michal Hocko
2018-09-06  8:31     ` Michal Hocko
2018-09-06  8:31       ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 05/29] mm: nobootmem: remove dead code Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 06/29] memblock: rename memblock_alloc{_nid,_try_nid} to memblock_phys_alloc* Mike Rapoport
2018-09-05 15:59   ` [RFC PATCH 06/29] memblock: rename memblock_alloc{_nid, _try_nid} " Mike Rapoport
2018-09-05 15:59   ` [RFC PATCH 06/29] memblock: rename memblock_alloc{_nid,_try_nid} " Mike Rapoport
2018-09-06  7:35   ` Michal Hocko
2018-09-06  7:35     ` [RFC PATCH 06/29] memblock: rename memblock_alloc{_nid, _try_nid} " Michal Hocko
2018-09-06  7:35     ` [RFC PATCH 06/29] memblock: rename memblock_alloc{_nid,_try_nid} " Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 07/29] memblock: remove _virt from APIs returning virtual address Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-05 17:04   ` Rob Herring
2018-09-05 17:04     ` Rob Herring
2018-09-05 17:20     ` Mike Rapoport
2018-09-05 17:20       ` Mike Rapoport
2018-09-06  7:28       ` Michal Hocko
2018-09-06  7:28         ` Michal Hocko
2018-09-06 12:43         ` Mike Rapoport
2018-09-06 12:43           ` Mike Rapoport
2018-09-06 13:01           ` Michal Hocko
2018-09-06 13:01             ` Michal Hocko
2018-09-06 13:39             ` Mike Rapoport
2018-09-06 13:39               ` Mike Rapoport
2018-09-06 13:46               ` Michal Hocko
2018-09-06 13:46                 ` Michal Hocko
2018-09-07  8:42                 ` Mike Rapoport
2018-09-07  8:42                   ` Mike Rapoport
2018-09-07  8:47                   ` Michal Hocko
2018-09-07  8:47                     ` Michal Hocko
2018-09-07  9:19                     ` Mike Rapoport
2018-09-07  9:19                       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 08/29] memblock: replace alloc_bootmem_align with memblock_alloc Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:39   ` Michal Hocko
2018-09-06  7:39     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 09/29] memblock: replace alloc_bootmem_low with memblock_alloc_low Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:41   ` Michal Hocko
2018-09-06  7:41     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 10/29] memblock: replace __alloc_bootmem_node_nopanic with memblock_alloc_try_nid_nopanic Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:49   ` Michal Hocko
2018-09-06  7:49     ` [RFC PATCH 10/29] memblock: replace __alloc_bootmem_node_nopanic with memblock_alloc_try_nid_nop Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 11/29] memblock: replace alloc_bootmem_pages_nopanic with memblock_alloc_nopanic Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:53   ` Michal Hocko
2018-09-06  7:53     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 12/29] memblock: replace alloc_bootmem_low with memblock_alloc_low Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:55   ` Michal Hocko
2018-09-06  7:55     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 13/29] memblock: replace __alloc_bootmem_nopanic with memblock_alloc_from_nopanic Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  7:57   ` Michal Hocko
2018-09-06  7:57     ` Michal Hocko
2018-09-06 12:44     ` Mike Rapoport
2018-09-06 12:44       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 14/29] memblock: add align parameter to memblock_alloc_node() Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:06   ` Michal Hocko
2018-09-06  8:06     ` Michal Hocko
2018-09-06 12:49     ` Mike Rapoport
2018-09-06 12:49       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 15/29] memblock: replace alloc_bootmem_pages_node with memblock_alloc_node Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:08   ` Michal Hocko
2018-09-06  8:08     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 16/29] memblock: replace __alloc_bootmem_node with appropriate memblock_ API Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:38   ` Michal Hocko
2018-09-06  8:38     ` Michal Hocko
2018-09-06 12:50     ` Mike Rapoport
2018-09-06 12:50       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 17/29] memblock: replace alloc_bootmem_node with memblock_alloc_node Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:41   ` Michal Hocko
2018-09-06  8:41     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 18/29] memblock: replace alloc_bootmem_low_pages with memblock_alloc_low Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:43   ` Michal Hocko
2018-09-06  8:43     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 19/29] memblock: replace alloc_bootmem_pages with memblock_alloc Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:44   ` Michal Hocko
2018-09-06  8:44     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 20/29] memblock: replace __alloc_bootmem with memblock_alloc_from Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:52   ` Michal Hocko
2018-09-06  8:52     ` Michal Hocko
2018-09-06 12:58     ` Mike Rapoport
2018-09-06 12:58       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 21/29] memblock: replace alloc_bootmem with memblock_alloc Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:55   ` Michal Hocko
2018-09-06  8:55     ` Michal Hocko
2018-09-06 13:14     ` Mike Rapoport
2018-09-06 13:14       ` Mike Rapoport
2018-09-05 15:59 ` [RFC PATCH 22/29] mm: nobootmem: remove bootmem allocation APIs Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:56   ` Michal Hocko [this message]
2018-09-06  8:56     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 23/29] memblock: replace free_bootmem{_node} with memblock_free Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  8:57   ` Michal Hocko
2018-09-06  8:57     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 24/29] memblock: replace free_bootmem_late with memblock_free_late Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  9:02   ` Michal Hocko
2018-09-06  9:02     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 25/29] memblock: rename free_all_bootmem to memblock_free_all Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  9:04   ` Michal Hocko
2018-09-06  9:04     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 26/29] memblock: rename __free_pages_bootmem to memblock_free_pages Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  9:06   ` Michal Hocko
2018-09-06  9:06     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 27/29] mm: remove nobootmem Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  9:08   ` Michal Hocko
2018-09-06  9:08     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 28/29] memblock: replace BOOTMEM_ALLOC_* with MEMBLOCK variants Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  9:08   ` Michal Hocko
2018-09-06  9:08     ` Michal Hocko
2018-09-05 15:59 ` [RFC PATCH 29/29] mm: remove include/linux/bootmem.h Mike Rapoport
2018-09-05 15:59   ` Mike Rapoport
2018-09-06  2:33 ` [RFC PATCH 00/29] mm: remove bootmem allocator Greentime Hu
2018-09-06  2:33   ` Greentime Hu
2018-09-06  2:33   ` Greentime Hu
2018-09-06 13:30   ` Mike Rapoport
2018-09-06 13:30     ` Mike Rapoport
2018-09-06 13:30     ` Mike Rapoport
2018-09-06  9:15 ` Michal Hocko
2018-09-06  9:15   ` Michal Hocko
2018-09-06 13:04   ` Pasha Tatashin
2018-09-06 13:04     ` Pasha Tatashin
2018-09-06 13:04     ` Pasha Tatashin
2018-09-06 13:21     ` Mike Rapoport
2018-09-06 13:21       ` Mike Rapoport
2018-09-06 13:16   ` Mike Rapoport
2018-09-06 13:16     ` Mike Rapoport

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=20180906085607.GG14951@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=paul.burton@mips.com \
    --cc=rppt@linux.vnet.ibm.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    /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.