aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Rapoport <rppt@linux.vnet.ibm.com>2018-10-30 18:08:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-10-31 11:54:15 -0400
commit3bb1f80ee6873e8be6cb57eec4926e9647e88ea7 (patch)
treec28860c6dee1c9ba9f3fddb61b46387ef3db49f6
parentccfa2a0f2e8581a68715aaad5ad0fb56daf7db43 (diff)
memblock: replace alloc_bootmem_node with memblock_alloc_node
Both functions attempt to allocate memory with specified alignment from a particular node. If the allocation from that node fails, they both fall back to allocating from any node in the system. Usage of native memblock API eliminates the nobootmem translation layer. Link: http://lkml.kernel.org/r/1536927045-23536-18-git-send-email-rppt@linux.vnet.ibm.com Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Chris Zankel <chris@zankel.net> Cc: "David S. Miller" <davem@davemloft.net> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greentime Hu <green.hu@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Guan Xuetao <gxt@pku.edu.cn> Cc: Ingo Molnar <mingo@redhat.com> Cc: "James E.J. Bottomley" <jejb@parisc-linux.org> Cc: Jonas Bonn <jonas@southpole.se> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Ley Foon Tan <lftan@altera.com> Cc: Mark Salter <msalter@redhat.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Matt Turner <mattst88@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Michal Simek <monstr@monstr.eu> Cc: Palmer Dabbelt <palmer@sifive.com> Cc: Paul Burton <paul.burton@mips.com> Cc: Richard Kuo <rkuo@codeaurora.org> Cc: Richard Weinberger <richard@nod.at> Cc: Rich Felker <dalias@libc.org> Cc: Russell King <linux@armlinux.org.uk> Cc: Serge Semin <fancer.lancer@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--arch/alpha/kernel/pci_iommu.c4
-rw-r--r--arch/ia64/sn/kernel/io_common.c7
-rw-r--r--arch/ia64/sn/kernel/setup.c4
3 files changed, 6 insertions, 9 deletions
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index 6923b0d9c1e1..b52d76fd534e 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -74,7 +74,7 @@ iommu_arena_new_node(int nid, struct pci_controller *hose, dma_addr_t base,
74 74
75#ifdef CONFIG_DISCONTIGMEM 75#ifdef CONFIG_DISCONTIGMEM
76 76
77 arena = alloc_bootmem_node(NODE_DATA(nid), sizeof(*arena)); 77 arena = memblock_alloc_node(sizeof(*arena), align, nid);
78 if (!NODE_DATA(nid) || !arena) { 78 if (!NODE_DATA(nid) || !arena) {
79 printk("%s: couldn't allocate arena from node %d\n" 79 printk("%s: couldn't allocate arena from node %d\n"
80 " falling back to system-wide allocation\n", 80 " falling back to system-wide allocation\n",
@@ -82,7 +82,7 @@ iommu_arena_new_node(int nid, struct pci_controller *hose, dma_addr_t base,
82 arena = alloc_bootmem(sizeof(*arena)); 82 arena = alloc_bootmem(sizeof(*arena));
83 } 83 }
84 84
85 arena->ptes = __alloc_bootmem_node(NODE_DATA(nid), mem_size, align, 0); 85 arena->ptes = memblock_alloc_node(sizeof(*arena), align, nid);
86 if (!NODE_DATA(nid) || !arena->ptes) { 86 if (!NODE_DATA(nid) || !arena->ptes) {
87 printk("%s: couldn't allocate arena ptes from node %d\n" 87 printk("%s: couldn't allocate arena ptes from node %d\n"
88 " falling back to system-wide allocation\n", 88 " falling back to system-wide allocation\n",
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index 102aabad6d20..8b05d5581615 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -385,16 +385,13 @@ void __init hubdev_init_node(nodepda_t * npda, cnodeid_t node)
385{ 385{
386 struct hubdev_info *hubdev_info; 386 struct hubdev_info *hubdev_info;
387 int size; 387 int size;
388 pg_data_t *pg;
389 388
390 size = sizeof(struct hubdev_info); 389 size = sizeof(struct hubdev_info);
391 390
392 if (node >= num_online_nodes()) /* Headless/memless IO nodes */ 391 if (node >= num_online_nodes()) /* Headless/memless IO nodes */
393 pg = NODE_DATA(0); 392 node = 0;
394 else
395 pg = NODE_DATA(node);
396 393
397 hubdev_info = (struct hubdev_info *)alloc_bootmem_node(pg, size); 394 hubdev_info = (struct hubdev_info *)memblock_alloc_node(size, 0, node);
398 395
399 npda->pdinfo = (void *)hubdev_info; 396 npda->pdinfo = (void *)hubdev_info;
400} 397}
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 5f6b6b48c1d5..ab2564f95199 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -511,7 +511,7 @@ static void __init sn_init_pdas(char **cmdline_p)
511 */ 511 */
512 for_each_online_node(cnode) { 512 for_each_online_node(cnode) {
513 nodepdaindr[cnode] = 513 nodepdaindr[cnode] =
514 alloc_bootmem_node(NODE_DATA(cnode), sizeof(nodepda_t)); 514 memblock_alloc_node(sizeof(nodepda_t), 0, cnode);
515 memset(nodepdaindr[cnode]->phys_cpuid, -1, 515 memset(nodepdaindr[cnode]->phys_cpuid, -1,
516 sizeof(nodepdaindr[cnode]->phys_cpuid)); 516 sizeof(nodepdaindr[cnode]->phys_cpuid));
517 spin_lock_init(&nodepdaindr[cnode]->ptc_lock); 517 spin_lock_init(&nodepdaindr[cnode]->ptc_lock);
@@ -522,7 +522,7 @@ static void __init sn_init_pdas(char **cmdline_p)
522 */ 522 */
523 for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++) 523 for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++)
524 nodepdaindr[cnode] = 524 nodepdaindr[cnode] =
525 alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t)); 525 memblock_alloc_node(sizeof(nodepda_t), 0, 0);
526 526
527 /* 527 /*
528 * Now copy the array of nodepda pointers to each nodepda. 528 * Now copy the array of nodepda pointers to each nodepda.