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
next prev parent 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: linkBe 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.