From: Mike Rapoport <rppt@linux.ibm.com>
To: openrisc@lists.librecores.org
Subject: [OpenRISC] [PATCH 06/21] memblock: memblock_phys_alloc_try_nid(): don't panic
Date: Wed, 16 Jan 2019 15:44:06 +0200 [thread overview]
Message-ID: <1547646261-32535-7-git-send-email-rppt@linux.ibm.com> (raw)
In-Reply-To: <1547646261-32535-1-git-send-email-rppt@linux.ibm.com>
The memblock_phys_alloc_try_nid() function tries to allocate memory from
the requested node and then falls back to allocation from any node in the
system. The memblock_alloc_base() fallback used by this function panics if
the allocation fails.
Replace the memblock_alloc_base() fallback with the direct call to
memblock_alloc_range_nid() and update the memblock_phys_alloc_try_nid()
callers to check the returned value and panic in case of error.
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
---
arch/arm64/mm/numa.c | 4 ++++
arch/powerpc/mm/numa.c | 4 ++++
mm/memblock.c | 4 +++-
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c
index ae34e3a..2c61ea4 100644
--- a/arch/arm64/mm/numa.c
+++ b/arch/arm64/mm/numa.c
@@ -237,6 +237,10 @@ static void __init setup_node_data(int nid, u64 start_pfn, u64 end_pfn)
pr_info("Initmem setup node %d [<memory-less node>]\n", nid);
nd_pa = memblock_phys_alloc_try_nid(nd_size, SMP_CACHE_BYTES, nid);
+ if (!nd_pa)
+ panic("Cannot allocate %zu bytes for node %d data\n",
+ nd_size, nid);
+
nd = __va(nd_pa);
/* report and initialize */
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 270cefb..8f2bbe1 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -788,6 +788,10 @@ static void __init setup_node_data(int nid, u64 start_pfn, u64 end_pfn)
int tnid;
nd_pa = memblock_phys_alloc_try_nid(nd_size, SMP_CACHE_BYTES, nid);
+ if (!nd_pa)
+ panic("Cannot allocate %zu bytes for node %d data\n",
+ nd_size, nid);
+
nd = __va(nd_pa);
/* report and initialize */
diff --git a/mm/memblock.c b/mm/memblock.c
index f019aee..8aabb1b 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1393,7 +1393,9 @@ phys_addr_t __init memblock_phys_alloc_try_nid(phys_addr_t size, phys_addr_t ali
if (res)
return res;
- return memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ACCESSIBLE);
+ return memblock_alloc_range_nid(size, align, 0,
+ MEMBLOCK_ALLOC_ACCESSIBLE,
+ NUMA_NO_NODE, MEMBLOCK_NONE);
}
/**
--
2.7.4
next prev parent reply other threads:[~2019-01-16 13:44 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-16 13:44 [OpenRISC] [PATCH 00/21] Refine memblock API Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 01/21] openrisc: prefer memblock APIs returning virtual address Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 02/21] powerpc: use memblock functions " Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 03/21] memblock: replace memblock_alloc_base(ANYWHERE) with memblock_phys_alloc Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 04/21] memblock: drop memblock_alloc_base_nid() Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 05/21] memblock: emphasize that memblock_alloc_range() returns a physical address Mike Rapoport
2019-01-16 13:44 ` Mike Rapoport [this message]
2019-01-16 13:44 ` [OpenRISC] [PATCH 07/21] memblock: memblock_phys_alloc(): don't panic Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 08/21] memblock: drop __memblock_alloc_base() Mike Rapoport
2019-01-16 15:15 ` Rob Herring
2019-01-16 13:44 ` [OpenRISC] [PATCH 09/21] memblock: drop memblock_alloc_base() Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 10/21] memblock: refactor internal allocation functions Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 11/21] memblock: make memblock_find_in_range_node() and choose_memblock_flags() static Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 12/21] arch: use memblock_alloc() instead of memblock_alloc_from(size, align, 0) Mike Rapoport
2019-01-18 17:53 ` Paul Burton
2019-01-16 13:44 ` [OpenRISC] [PATCH 13/21] arch: don't memset(0) memory returned by memblock_alloc() Mike Rapoport
2019-01-16 14:17 ` Geert Uytterhoeven
2019-01-16 13:44 ` [OpenRISC] [PATCH 14/21] ia64: add checks for the return value of memblock_alloc*() Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 15/21] sparc: " Mike Rapoport
2019-01-16 17:21 ` David Miller
2019-01-16 13:44 ` [OpenRISC] [PATCH 16/21] mm/percpu: " Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 17/21] init/main: " Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 18/21] swiotlb: " Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 19/21] treewide: " Mike Rapoport
2019-01-16 14:27 ` Geert Uytterhoeven
2019-01-16 15:13 ` Mike Rapoport
2019-01-16 14:32 ` [OpenRISC] [Xen-devel] " Juergen Gross
2019-01-16 15:18 ` [OpenRISC] " Rob Herring
2019-01-17 7:06 ` Guo Ren
2019-01-18 8:43 ` Heiko Carstens
2019-01-18 18:02 ` Paul Burton
2019-01-16 13:44 ` [OpenRISC] [PATCH 20/21] memblock: memblock_alloc_try_nid: don't panic Mike Rapoport
2019-01-16 13:44 ` [OpenRISC] [PATCH 21/21] memblock: drop memblock_alloc_*_nopanic() variants Mike Rapoport
2019-01-17 9:28 ` Petr Mladek
2019-01-18 8:42 ` Greg Kroah-Hartman
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=1547646261-32535-7-git-send-email-rppt@linux.ibm.com \
--to=rppt@linux.ibm.com \
--cc=openrisc@lists.librecores.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