[PATCHv4 1/2] powerpc/pseries: group lmb operation and memblock's

Laurent Dufour ldufour at linux.ibm.com
Mon Aug 3 09:52:44 EDT 2020


> @@ -603,6 +606,8 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
>         }
>
>         lmb_set_nid(lmb);
> +       lmb->flags |= DRCONF_MEM_ASSIGNED;
> +
>         block_sz = memory_block_size_bytes();
>
>         /* Add the memory */

Since the lmb->flags is now set earlier, you should unset it in the case the 
call to __add_memory() fails, something like:

@@ -614,6 +614,7 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
  	rc = __add_memory(lmb->nid, lmb->base_addr, block_sz);
  	if (rc) {
  		invalidate_lmb_associativity_index(lmb);
+		lmb->flags &= ~DRCONF_MEM_ASSIGNED;
  		return rc;
  	}

> @@ -614,11 +619,14 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
>
>         rc = dlpar_online_lmb(lmb);
>         if (rc) {
> -               __remove_memory(lmb->nid, lmb->base_addr, block_sz);
> +               int nid = lmb->nid;
> +               phys_addr_t base_addr = lmb->base_addr;
> +
>                 invalidate_lmb_associativity_index(lmb);
>                 lmb_clear_nid(lmb);
> -       } else {
> -               lmb->flags |= DRCONF_MEM_ASSIGNED;
> +               lmb->flags &= ~DRCONF_MEM_ASSIGNED;
> +
> +               __remove_memory(nid, base_addr, block_sz);
>         }
>
>         return rc;



More information about the kexec mailing list