OSDN Git Service

powerpc/pseries: Remove call to memblock_add()
authorNathan Fontenot <nfont@linux.vnet.ibm.com>
Wed, 29 Jun 2016 17:20:30 +0000 (12:20 -0500)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 15 Jul 2016 10:18:37 +0000 (20:18 +1000)
The call to memblock_add is not needed, this is already done by
memory_add(). This patch removes this call which shrinks
dlpar_add_lmb_memory() enough that it can be merged into dlpar_add_lmb().

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/pseries/hotplug-memory.c

index 8baad18..43f7beb 100644 (file)
@@ -588,36 +588,11 @@ static int dlpar_memory_remove_by_index(u32 drc_index, struct property *prop)
 
 #endif /* CONFIG_MEMORY_HOTREMOVE */
 
-static int dlpar_add_lmb_memory(struct of_drconf_cell *lmb)
+static int dlpar_add_lmb(struct of_drconf_cell *lmb)
 {
        unsigned long block_sz;
        int nid, rc;
 
-       block_sz = memory_block_size_bytes();
-
-       /* Find the node id for this address */
-       nid = memory_add_physaddr_to_nid(lmb->base_addr);
-
-       /* Add the memory */
-       rc = add_memory(nid, lmb->base_addr, block_sz);
-       if (rc)
-               return rc;
-
-       /* Register this block of memory */
-       rc = memblock_add(lmb->base_addr, block_sz);
-       if (rc) {
-               remove_memory(nid, lmb->base_addr, block_sz);
-               return rc;
-       }
-
-       lmb->flags |= DRCONF_MEM_ASSIGNED;
-       return 0;
-}
-
-static int dlpar_add_lmb(struct of_drconf_cell *lmb)
-{
-       int rc;
-
        if (lmb->flags & DRCONF_MEM_ASSIGNED)
                return -EINVAL;
 
@@ -633,10 +608,18 @@ static int dlpar_add_lmb(struct of_drconf_cell *lmb)
                return rc;
        }
 
-       rc = dlpar_add_lmb_memory(lmb);
+       block_sz = memory_block_size_bytes();
+
+       /* Find the node id for this address */
+       nid = memory_add_physaddr_to_nid(lmb->base_addr);
+
+       /* Add the memory */
+       rc = add_memory(nid, lmb->base_addr, block_sz);
        if (rc) {
                dlpar_remove_device_tree_lmb(lmb);
                dlpar_release_drc(lmb->drc_index);
+       } else {
+               lmb->flags |= DRCONF_MEM_ASSIGNED;
        }
 
        return rc;