linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix
@ 2018-02-21 10:36 Bharata B Rao
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Bharata B Rao @ 2018-02-21 10:36 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: nfont, mwb, Bharata B Rao

Patch 1 fixes a bug that results in unexpected flag bit in
ibm,dynamic-memory-v2 DT property and wrong number of entries
getting created in the same property during hotplug.

Patch 2 can be optionally considered. It renames DRMEM_LMB_RESERVED
to DRMEM_LMB_ISOLATED. May be it could be renamed to even more
appropriate name.

Bharata B Rao (2):
  powerpc,drmem: Fix unexpected flag value in ibm,dynamic-memory-v2
  powerpc,drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED

 arch/powerpc/include/asm/drmem.h                | 14 ++++-----
 arch/powerpc/mm/drmem.c                         |  8 ++---
 arch/powerpc/platforms/pseries/hotplug-memory.c | 40 ++++++++++++-------------
 3 files changed, 31 insertions(+), 31 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2
  2018-02-21 10:36 [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Bharata B Rao
@ 2018-02-21 10:36 ` Bharata B Rao
  2018-02-21 11:48   ` Michael Ellerman
                     ` (2 more replies)
  2018-02-21 10:36 ` [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED Bharata B Rao
  2018-02-21 12:27 ` [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Balbir Singh
  2 siblings, 3 replies; 11+ messages in thread
From: Bharata B Rao @ 2018-02-21 10:36 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: nfont, mwb, Bharata B Rao

Memory addtion and removal by count and indexed-count methods
temporarily mark the LMBs that are being added/removed by a special
flag value DRMEM_LMB_RESERVED. Accessing flags value directly at
a few places without proper accessor method is causing two unexpected
side-effects:

- DRMEM_LMB_RESERVED bit is becoming part of the flags word of
  drconf_cell_v2 entries in ibm,dynamic-memory-v2 DT property.
- This results in extra drconf_cell entries in ibm,dynamic-memory-v2.
  For example if 1G memory is added, it leads to one entry for 3 LMBs
  and 1 separate entry for the last LMB. All the 4 LMBs should be
  defined by one entry here.

Fix this by always accessing the flags by its accessor method
drmem_lmb_flags().

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
---
 arch/powerpc/mm/drmem.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
index 916844f..3f18036 100644
--- a/arch/powerpc/mm/drmem.c
+++ b/arch/powerpc/mm/drmem.c
@@ -98,7 +98,7 @@ static void init_drconf_v2_cell(struct of_drconf_cell_v2 *dr_cell,
 	dr_cell->base_addr = cpu_to_be64(lmb->base_addr);
 	dr_cell->drc_index = cpu_to_be32(lmb->drc_index);
 	dr_cell->aa_index = cpu_to_be32(lmb->aa_index);
-	dr_cell->flags = cpu_to_be32(lmb->flags);
+	dr_cell->flags = cpu_to_be32(drmem_lmb_flags(lmb));
 }
 
 static int drmem_update_dt_v2(struct device_node *memory,
@@ -121,7 +121,7 @@ static int drmem_update_dt_v2(struct device_node *memory,
 		}
 
 		if (prev_lmb->aa_index != lmb->aa_index ||
-		    prev_lmb->flags != lmb->flags)
+		    drmem_lmb_flags(prev_lmb) != drmem_lmb_flags(lmb))
 			lmb_sets++;
 
 		prev_lmb = lmb;
@@ -150,7 +150,7 @@ static int drmem_update_dt_v2(struct device_node *memory,
 		}
 
 		if (prev_lmb->aa_index != lmb->aa_index ||
-		    prev_lmb->flags != lmb->flags) {
+		    drmem_lmb_flags(prev_lmb) != drmem_lmb_flags(lmb)) {
 			/* end of one set, start of another */
 			dr_cell->seq_lmbs = cpu_to_be32(seq_lmbs);
 			dr_cell++;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED
  2018-02-21 10:36 [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Bharata B Rao
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
@ 2018-02-21 10:36 ` Bharata B Rao
  2018-02-22 13:52   ` Nathan Fontenot
  2022-03-11 17:09   ` Christophe Leroy
  2018-02-21 12:27 ` [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Balbir Singh
  2 siblings, 2 replies; 11+ messages in thread
From: Bharata B Rao @ 2018-02-21 10:36 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: nfont, mwb, Bharata B Rao

Memory hotplug code uses a temporary LMB flags bit DRMEM_LMB_RESERVED
to mark the LMB which is currently undergoing hotplug or unplug.
It is easy to confuse DRMEM_LMB_RESERVED to mean the LMB is reserved
for which a separate flag bit already exists DRCONF_MEM_RESERVED. Since
both DRMEM_LMB_RESERVED and DRCONF_MEM_RESERVED operate on the same
LMB flags word, rename the former to DRMEM_LMB_ISOLATED.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/drmem.h                | 14 ++++-----
 arch/powerpc/mm/drmem.c                         |  2 +-
 arch/powerpc/platforms/pseries/hotplug-memory.c | 40 ++++++++++++-------------
 3 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/arch/powerpc/include/asm/drmem.h b/arch/powerpc/include/asm/drmem.h
index ce242b9..b3fa3f7 100644
--- a/arch/powerpc/include/asm/drmem.h
+++ b/arch/powerpc/include/asm/drmem.h
@@ -72,21 +72,21 @@ static inline u32 drmem_lmb_size(void)
 	return drmem_info->lmb_size;
 }
 
-#define DRMEM_LMB_RESERVED	0x80000000
+#define DRMEM_LMB_ISOLATED	0x80000000
 
-static inline void drmem_mark_lmb_reserved(struct drmem_lmb *lmb)
+static inline void drmem_mark_lmb_isolated(struct drmem_lmb *lmb)
 {
-	lmb->flags |= DRMEM_LMB_RESERVED;
+	lmb->flags |= DRMEM_LMB_ISOLATED;
 }
 
-static inline void drmem_remove_lmb_reservation(struct drmem_lmb *lmb)
+static inline void drmem_remove_lmb_isolation(struct drmem_lmb *lmb)
 {
-	lmb->flags &= ~DRMEM_LMB_RESERVED;
+	lmb->flags &= ~DRMEM_LMB_ISOLATED;
 }
 
-static inline bool drmem_lmb_reserved(struct drmem_lmb *lmb)
+static inline bool drmem_lmb_isolated(struct drmem_lmb *lmb)
 {
-	return lmb->flags & DRMEM_LMB_RESERVED;
+	return lmb->flags & DRMEM_LMB_ISOLATED;
 }
 
 u64 drmem_lmb_memory_max(void);
diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
index 3f18036..652bf3a 100644
--- a/arch/powerpc/mm/drmem.c
+++ b/arch/powerpc/mm/drmem.c
@@ -35,7 +35,7 @@ static u32 drmem_lmb_flags(struct drmem_lmb *lmb)
 	 * Return the value of the lmb flags field minus the reserved
 	 * bit used internally for hotplug processing.
 	 */
-	return lmb->flags & ~DRMEM_LMB_RESERVED;
+	return lmb->flags & ~DRMEM_LMB_ISOLATED;
 }
 
 static struct property *clone_property(struct property *prop, u32 prop_sz)
diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
index c1578f5..2f5ca29 100644
--- a/arch/powerpc/platforms/pseries/hotplug-memory.c
+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
@@ -467,7 +467,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
 		/* Mark this lmb so we can add it later if all of the
 		 * requested LMBs cannot be removed.
 		 */
-		drmem_mark_lmb_reserved(lmb);
+		drmem_mark_lmb_isolated(lmb);
 
 		lmbs_removed++;
 		if (lmbs_removed == lmbs_to_remove)
@@ -478,7 +478,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
 		pr_err("Memory hot-remove failed, adding LMB's back\n");
 
 		for_each_drmem_lmb(lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			rc = dlpar_add_lmb(lmb);
@@ -486,20 +486,20 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
 				pr_err("Failed to add LMB back, drc index %x\n",
 				       lmb->drc_index);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 
 		rc = -EINVAL;
 	} else {
 		for_each_drmem_lmb(lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			dlpar_release_drc(lmb->drc_index);
 			pr_info("Memory at %llx was hot-removed\n",
 				lmb->base_addr);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 		rc = 0;
 	}
@@ -608,7 +608,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
 		if (rc)
 			break;
 
-		drmem_mark_lmb_reserved(lmb);
+		drmem_mark_lmb_isolated(lmb);
 	}
 
 	if (rc) {
@@ -616,7 +616,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
 
 
 		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			rc = dlpar_add_lmb(lmb);
@@ -624,19 +624,19 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
 				pr_err("Failed to add LMB, drc index %x\n",
 				       lmb->drc_index);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 		rc = -EINVAL;
 	} else {
 		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			dlpar_release_drc(lmb->drc_index);
 			pr_info("Memory at %llx (drc index %x) was hot-removed\n",
 				lmb->base_addr, lmb->drc_index);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 	}
 
@@ -760,7 +760,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
 		/* Mark this lmb so we can remove it later if all of the
 		 * requested LMBs cannot be added.
 		 */
-		drmem_mark_lmb_reserved(lmb);
+		drmem_mark_lmb_isolated(lmb);
 
 		lmbs_added++;
 		if (lmbs_added == lmbs_to_add)
@@ -771,7 +771,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
 		pr_err("Memory hot-add failed, removing any added LMBs\n");
 
 		for_each_drmem_lmb(lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			rc = dlpar_remove_lmb(lmb);
@@ -781,17 +781,17 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
 			else
 				dlpar_release_drc(lmb->drc_index);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 		rc = -EINVAL;
 	} else {
 		for_each_drmem_lmb(lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			pr_info("Memory at %llx (drc index %x) was hot-added\n",
 				lmb->base_addr, lmb->drc_index);
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 		rc = 0;
 	}
@@ -874,14 +874,14 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
 			break;
 		}
 
-		drmem_mark_lmb_reserved(lmb);
+		drmem_mark_lmb_isolated(lmb);
 	}
 
 	if (rc) {
 		pr_err("Memory indexed-count-add failed, removing any added LMBs\n");
 
 		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			rc = dlpar_remove_lmb(lmb);
@@ -891,17 +891,17 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
 			else
 				dlpar_release_drc(lmb->drc_index);
 
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 		rc = -EINVAL;
 	} else {
 		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
-			if (!drmem_lmb_reserved(lmb))
+			if (!drmem_lmb_isolated(lmb))
 				continue;
 
 			pr_info("Memory at %llx (drc index %x) was hot-added\n",
 				lmb->base_addr, lmb->drc_index);
-			drmem_remove_lmb_reservation(lmb);
+			drmem_remove_lmb_isolation(lmb);
 		}
 	}
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
@ 2018-02-21 11:48   ` Michael Ellerman
  2018-02-21 13:36     ` Bharata B Rao
  2018-02-22 13:51   ` Nathan Fontenot
  2018-02-26  5:35   ` [RFC, v0, " Michael Ellerman
  2 siblings, 1 reply; 11+ messages in thread
From: Michael Ellerman @ 2018-02-21 11:48 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev; +Cc: nfont, mwb, Bharata B Rao

Bharata B Rao <bharata@linux.vnet.ibm.com> writes:

> Memory addtion and removal by count and indexed-count methods
> temporarily mark the LMBs that are being added/removed by a special
> flag value DRMEM_LMB_RESERVED. Accessing flags value directly at
> a few places without proper accessor method is causing two unexpected
> side-effects:
>
> - DRMEM_LMB_RESERVED bit is becoming part of the flags word of
>   drconf_cell_v2 entries in ibm,dynamic-memory-v2 DT property.
> - This results in extra drconf_cell entries in ibm,dynamic-memory-v2.
>   For example if 1G memory is added, it leads to one entry for 3 LMBs
>   and 1 separate entry for the last LMB. All the 4 LMBs should be
>   defined by one entry here.
>
> Fix this by always accessing the flags by its accessor method
> drmem_lmb_flags().
>
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>

Presumably:

  Fixes: 2b31e3aec1db ("powerpc/drmem: Add support for ibm, dynamic-memory-v2 property")

?

cheers

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix
  2018-02-21 10:36 [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Bharata B Rao
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
  2018-02-21 10:36 ` [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED Bharata B Rao
@ 2018-02-21 12:27 ` Balbir Singh
  2018-02-21 13:41   ` Bharata B Rao
  2 siblings, 1 reply; 11+ messages in thread
From: Balbir Singh @ 2018-02-21 12:27 UTC (permalink / raw)
  To: Bharata B Rao
  Cc: open list:LINUX FOR POWERPC (32-BIT AND 64-BIT),
	Nathan Fontenot, Michael Bringmann

On Wed, Feb 21, 2018 at 9:36 PM, Bharata B Rao
<bharata@linux.vnet.ibm.com> wrote:
> Patch 1 fixes a bug that results in unexpected flag bit in
> ibm,dynamic-memory-v2 DT property and wrong number of entries
> getting created in the same property during hotplug.
>

Could you please elaborate on what this means? Is there a test case -
how do we reproduce this?

Balbir Singh.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2
  2018-02-21 11:48   ` Michael Ellerman
@ 2018-02-21 13:36     ` Bharata B Rao
  0 siblings, 0 replies; 11+ messages in thread
From: Bharata B Rao @ 2018-02-21 13:36 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: linuxppc-dev, nfont, mwb

On Wed, Feb 21, 2018 at 10:48:18PM +1100, Michael Ellerman wrote:
> Bharata B Rao <bharata@linux.vnet.ibm.com> writes:
> 
> > Memory addtion and removal by count and indexed-count methods
> > temporarily mark the LMBs that are being added/removed by a special
> > flag value DRMEM_LMB_RESERVED. Accessing flags value directly at
> > a few places without proper accessor method is causing two unexpected
> > side-effects:
> >
> > - DRMEM_LMB_RESERVED bit is becoming part of the flags word of
> >   drconf_cell_v2 entries in ibm,dynamic-memory-v2 DT property.
> > - This results in extra drconf_cell entries in ibm,dynamic-memory-v2.
> >   For example if 1G memory is added, it leads to one entry for 3 LMBs
> >   and 1 separate entry for the last LMB. All the 4 LMBs should be
> >   defined by one entry here.
> >
> > Fix this by always accessing the flags by its accessor method
> > drmem_lmb_flags().
> >
> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> 
> Presumably:
> 
>   Fixes: 2b31e3aec1db ("powerpc/drmem: Add support for ibm, dynamic-memory-v2 property")

Yes.

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix
  2018-02-21 12:27 ` [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Balbir Singh
@ 2018-02-21 13:41   ` Bharata B Rao
  0 siblings, 0 replies; 11+ messages in thread
From: Bharata B Rao @ 2018-02-21 13:41 UTC (permalink / raw)
  To: Balbir Singh
  Cc: open list:LINUX FOR POWERPC (32-BIT AND 64-BIT),
	Nathan Fontenot, Michael Bringmann

On Wed, Feb 21, 2018 at 11:27:20PM +1100, Balbir Singh wrote:
> On Wed, Feb 21, 2018 at 9:36 PM, Bharata B Rao
> <bharata@linux.vnet.ibm.com> wrote:
> > Patch 1 fixes a bug that results in unexpected flag bit in
> > ibm,dynamic-memory-v2 DT property and wrong number of entries
> > getting created in the same property during hotplug.
> >
> 
> Could you please elaborate on what this means?

Described in 1/2 patch.

> Is there a test case -
> how do we reproduce this?

Hotplug some memory and check the entries in ibm,dynamic-memory-v2 and also
check the flags there, you will see DRMEM_LMB_RESERVED set, which
shouldn't be set.

You would need QEMU which supports ibm,dynamic-memory-v2. I have posted
the initial patches for that at:

http://lists.gnu.org/archive/html/qemu-ppc/2018-02/msg00236.html

Regards,
Bharata.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
  2018-02-21 11:48   ` Michael Ellerman
@ 2018-02-22 13:51   ` Nathan Fontenot
  2018-02-26  5:35   ` [RFC, v0, " Michael Ellerman
  2 siblings, 0 replies; 11+ messages in thread
From: Nathan Fontenot @ 2018-02-22 13:51 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev; +Cc: mwb

On 02/21/2018 04:36 AM, Bharata B Rao wrote:
> Memory addtion and removal by count and indexed-count methods
> temporarily mark the LMBs that are being added/removed by a special
> flag value DRMEM_LMB_RESERVED. Accessing flags value directly at
> a few places without proper accessor method is causing two unexpected
> side-effects:
> 
> - DRMEM_LMB_RESERVED bit is becoming part of the flags word of
>   drconf_cell_v2 entries in ibm,dynamic-memory-v2 DT property.
> - This results in extra drconf_cell entries in ibm,dynamic-memory-v2.
>   For example if 1G memory is added, it leads to one entry for 3 LMBs
>   and 1 separate entry for the last LMB. All the 4 LMBs should be
>   defined by one entry here.
> 
> Fix this by always accessing the flags by its accessor method
> drmem_lmb_flags().
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>

Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>

> ---
>  arch/powerpc/mm/drmem.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
> index 916844f..3f18036 100644
> --- a/arch/powerpc/mm/drmem.c
> +++ b/arch/powerpc/mm/drmem.c
> @@ -98,7 +98,7 @@ static void init_drconf_v2_cell(struct of_drconf_cell_v2 *dr_cell,
>  	dr_cell->base_addr = cpu_to_be64(lmb->base_addr);
>  	dr_cell->drc_index = cpu_to_be32(lmb->drc_index);
>  	dr_cell->aa_index = cpu_to_be32(lmb->aa_index);
> -	dr_cell->flags = cpu_to_be32(lmb->flags);
> +	dr_cell->flags = cpu_to_be32(drmem_lmb_flags(lmb));
>  }
> 
>  static int drmem_update_dt_v2(struct device_node *memory,
> @@ -121,7 +121,7 @@ static int drmem_update_dt_v2(struct device_node *memory,
>  		}
> 
>  		if (prev_lmb->aa_index != lmb->aa_index ||
> -		    prev_lmb->flags != lmb->flags)
> +		    drmem_lmb_flags(prev_lmb) != drmem_lmb_flags(lmb))
>  			lmb_sets++;
> 
>  		prev_lmb = lmb;
> @@ -150,7 +150,7 @@ static int drmem_update_dt_v2(struct device_node *memory,
>  		}
> 
>  		if (prev_lmb->aa_index != lmb->aa_index ||
> -		    prev_lmb->flags != lmb->flags) {
> +		    drmem_lmb_flags(prev_lmb) != drmem_lmb_flags(lmb)) {
>  			/* end of one set, start of another */
>  			dr_cell->seq_lmbs = cpu_to_be32(seq_lmbs);
>  			dr_cell++;
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED
  2018-02-21 10:36 ` [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED Bharata B Rao
@ 2018-02-22 13:52   ` Nathan Fontenot
  2022-03-11 17:09   ` Christophe Leroy
  1 sibling, 0 replies; 11+ messages in thread
From: Nathan Fontenot @ 2018-02-22 13:52 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev; +Cc: mwb

On 02/21/2018 04:36 AM, Bharata B Rao wrote:
> Memory hotplug code uses a temporary LMB flags bit DRMEM_LMB_RESERVED
> to mark the LMB which is currently undergoing hotplug or unplug.
> It is easy to confuse DRMEM_LMB_RESERVED to mean the LMB is reserved
> for which a separate flag bit already exists DRCONF_MEM_RESERVED. Since
> both DRMEM_LMB_RESERVED and DRCONF_MEM_RESERVED operate on the same
> LMB flags word, rename the former to DRMEM_LMB_ISOLATED.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>

Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>

> ---
>  arch/powerpc/include/asm/drmem.h                | 14 ++++-----
>  arch/powerpc/mm/drmem.c                         |  2 +-
>  arch/powerpc/platforms/pseries/hotplug-memory.c | 40 ++++++++++++-------------
>  3 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/drmem.h b/arch/powerpc/include/asm/drmem.h
> index ce242b9..b3fa3f7 100644
> --- a/arch/powerpc/include/asm/drmem.h
> +++ b/arch/powerpc/include/asm/drmem.h
> @@ -72,21 +72,21 @@ static inline u32 drmem_lmb_size(void)
>  	return drmem_info->lmb_size;
>  }
> 
> -#define DRMEM_LMB_RESERVED	0x80000000
> +#define DRMEM_LMB_ISOLATED	0x80000000
> 
> -static inline void drmem_mark_lmb_reserved(struct drmem_lmb *lmb)
> +static inline void drmem_mark_lmb_isolated(struct drmem_lmb *lmb)
>  {
> -	lmb->flags |= DRMEM_LMB_RESERVED;
> +	lmb->flags |= DRMEM_LMB_ISOLATED;
>  }
> 
> -static inline void drmem_remove_lmb_reservation(struct drmem_lmb *lmb)
> +static inline void drmem_remove_lmb_isolation(struct drmem_lmb *lmb)
>  {
> -	lmb->flags &= ~DRMEM_LMB_RESERVED;
> +	lmb->flags &= ~DRMEM_LMB_ISOLATED;
>  }
> 
> -static inline bool drmem_lmb_reserved(struct drmem_lmb *lmb)
> +static inline bool drmem_lmb_isolated(struct drmem_lmb *lmb)
>  {
> -	return lmb->flags & DRMEM_LMB_RESERVED;
> +	return lmb->flags & DRMEM_LMB_ISOLATED;
>  }
> 
>  u64 drmem_lmb_memory_max(void);
> diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
> index 3f18036..652bf3a 100644
> --- a/arch/powerpc/mm/drmem.c
> +++ b/arch/powerpc/mm/drmem.c
> @@ -35,7 +35,7 @@ static u32 drmem_lmb_flags(struct drmem_lmb *lmb)
>  	 * Return the value of the lmb flags field minus the reserved
>  	 * bit used internally for hotplug processing.
>  	 */
> -	return lmb->flags & ~DRMEM_LMB_RESERVED;
> +	return lmb->flags & ~DRMEM_LMB_ISOLATED;
>  }
> 
>  static struct property *clone_property(struct property *prop, u32 prop_sz)
> diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
> index c1578f5..2f5ca29 100644
> --- a/arch/powerpc/platforms/pseries/hotplug-memory.c
> +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
> @@ -467,7 +467,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>  		/* Mark this lmb so we can add it later if all of the
>  		 * requested LMBs cannot be removed.
>  		 */
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
> 
>  		lmbs_removed++;
>  		if (lmbs_removed == lmbs_to_remove)
> @@ -478,7 +478,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>  		pr_err("Memory hot-remove failed, adding LMB's back\n");
> 
>  		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			rc = dlpar_add_lmb(lmb);
> @@ -486,20 +486,20 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>  				pr_err("Failed to add LMB back, drc index %x\n",
>  				       lmb->drc_index);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
> 
>  		rc = -EINVAL;
>  	} else {
>  		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			dlpar_release_drc(lmb->drc_index);
>  			pr_info("Memory at %llx was hot-removed\n",
>  				lmb->base_addr);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  		rc = 0;
>  	}
> @@ -608,7 +608,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
>  		if (rc)
>  			break;
> 
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>  	}
> 
>  	if (rc) {
> @@ -616,7 +616,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
> 
> 
>  		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			rc = dlpar_add_lmb(lmb);
> @@ -624,19 +624,19 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
>  				pr_err("Failed to add LMB, drc index %x\n",
>  				       lmb->drc_index);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  		rc = -EINVAL;
>  	} else {
>  		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			dlpar_release_drc(lmb->drc_index);
>  			pr_info("Memory at %llx (drc index %x) was hot-removed\n",
>  				lmb->base_addr, lmb->drc_index);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  	}
> 
> @@ -760,7 +760,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>  		/* Mark this lmb so we can remove it later if all of the
>  		 * requested LMBs cannot be added.
>  		 */
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
> 
>  		lmbs_added++;
>  		if (lmbs_added == lmbs_to_add)
> @@ -771,7 +771,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>  		pr_err("Memory hot-add failed, removing any added LMBs\n");
> 
>  		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			rc = dlpar_remove_lmb(lmb);
> @@ -781,17 +781,17 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>  			else
>  				dlpar_release_drc(lmb->drc_index);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  		rc = -EINVAL;
>  	} else {
>  		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			pr_info("Memory at %llx (drc index %x) was hot-added\n",
>  				lmb->base_addr, lmb->drc_index);
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  		rc = 0;
>  	}
> @@ -874,14 +874,14 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
>  			break;
>  		}
> 
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>  	}
> 
>  	if (rc) {
>  		pr_err("Memory indexed-count-add failed, removing any added LMBs\n");
> 
>  		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			rc = dlpar_remove_lmb(lmb);
> @@ -891,17 +891,17 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
>  			else
>  				dlpar_release_drc(lmb->drc_index);
> 
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  		rc = -EINVAL;
>  	} else {
>  		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>  				continue;
> 
>  			pr_info("Memory at %llx (drc index %x) was hot-added\n",
>  				lmb->base_addr, lmb->drc_index);
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>  		}
>  	}
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC, v0, 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2
  2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
  2018-02-21 11:48   ` Michael Ellerman
  2018-02-22 13:51   ` Nathan Fontenot
@ 2018-02-26  5:35   ` Michael Ellerman
  2 siblings, 0 replies; 11+ messages in thread
From: Michael Ellerman @ 2018-02-26  5:35 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev; +Cc: nfont, mwb, Bharata B Rao

On Wed, 2018-02-21 at 10:36:26 UTC, Bharata B Rao wrote:
> Memory addtion and removal by count and indexed-count methods
> temporarily mark the LMBs that are being added/removed by a special
> flag value DRMEM_LMB_RESERVED. Accessing flags value directly at
> a few places without proper accessor method is causing two unexpected
> side-effects:
> 
> - DRMEM_LMB_RESERVED bit is becoming part of the flags word of
>   drconf_cell_v2 entries in ibm,dynamic-memory-v2 DT property.
> - This results in extra drconf_cell entries in ibm,dynamic-memory-v2.
>   For example if 1G memory is added, it leads to one entry for 3 LMBs
>   and 1 separate entry for the last LMB. All the 4 LMBs should be
>   defined by one entry here.
> 
> Fix this by always accessing the flags by its accessor method
> drmem_lmb_flags().
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>

Applied to powerpc fixes, thanks.

https://git.kernel.org/powerpc/c/2f7d03e0511991f124455682cc9409

cheers

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED
  2018-02-21 10:36 ` [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED Bharata B Rao
  2018-02-22 13:52   ` Nathan Fontenot
@ 2022-03-11 17:09   ` Christophe Leroy
  1 sibling, 0 replies; 11+ messages in thread
From: Christophe Leroy @ 2022-03-11 17:09 UTC (permalink / raw)
  To: Bharata B Rao, linuxppc-dev; +Cc: nfont, mwb



Le 21/02/2018 à 11:36, Bharata B Rao a écrit :
> Memory hotplug code uses a temporary LMB flags bit DRMEM_LMB_RESERVED
> to mark the LMB which is currently undergoing hotplug or unplug.
> It is easy to confuse DRMEM_LMB_RESERVED to mean the LMB is reserved
> for which a separate flag bit already exists DRCONF_MEM_RESERVED. Since
> both DRMEM_LMB_RESERVED and DRCONF_MEM_RESERVED operate on the same
> LMB flags word, rename the former to DRMEM_LMB_ISOLATED.

Nothing has happened since this RFC was posted, we still have it as 
'new' in patchwork and it doesn't apply.

I'll flag it as 'RFC' so we keep it in our RFC history.

Christophe

> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> ---
>   arch/powerpc/include/asm/drmem.h                | 14 ++++-----
>   arch/powerpc/mm/drmem.c                         |  2 +-
>   arch/powerpc/platforms/pseries/hotplug-memory.c | 40 ++++++++++++-------------
>   3 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/drmem.h b/arch/powerpc/include/asm/drmem.h
> index ce242b9..b3fa3f7 100644
> --- a/arch/powerpc/include/asm/drmem.h
> +++ b/arch/powerpc/include/asm/drmem.h
> @@ -72,21 +72,21 @@ static inline u32 drmem_lmb_size(void)
>   	return drmem_info->lmb_size;
>   }
>   
> -#define DRMEM_LMB_RESERVED	0x80000000
> +#define DRMEM_LMB_ISOLATED	0x80000000
>   
> -static inline void drmem_mark_lmb_reserved(struct drmem_lmb *lmb)
> +static inline void drmem_mark_lmb_isolated(struct drmem_lmb *lmb)
>   {
> -	lmb->flags |= DRMEM_LMB_RESERVED;
> +	lmb->flags |= DRMEM_LMB_ISOLATED;
>   }
>   
> -static inline void drmem_remove_lmb_reservation(struct drmem_lmb *lmb)
> +static inline void drmem_remove_lmb_isolation(struct drmem_lmb *lmb)
>   {
> -	lmb->flags &= ~DRMEM_LMB_RESERVED;
> +	lmb->flags &= ~DRMEM_LMB_ISOLATED;
>   }
>   
> -static inline bool drmem_lmb_reserved(struct drmem_lmb *lmb)
> +static inline bool drmem_lmb_isolated(struct drmem_lmb *lmb)
>   {
> -	return lmb->flags & DRMEM_LMB_RESERVED;
> +	return lmb->flags & DRMEM_LMB_ISOLATED;
>   }
>   
>   u64 drmem_lmb_memory_max(void);
> diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
> index 3f18036..652bf3a 100644
> --- a/arch/powerpc/mm/drmem.c
> +++ b/arch/powerpc/mm/drmem.c
> @@ -35,7 +35,7 @@ static u32 drmem_lmb_flags(struct drmem_lmb *lmb)
>   	 * Return the value of the lmb flags field minus the reserved
>   	 * bit used internally for hotplug processing.
>   	 */
> -	return lmb->flags & ~DRMEM_LMB_RESERVED;
> +	return lmb->flags & ~DRMEM_LMB_ISOLATED;
>   }
>   
>   static struct property *clone_property(struct property *prop, u32 prop_sz)
> diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
> index c1578f5..2f5ca29 100644
> --- a/arch/powerpc/platforms/pseries/hotplug-memory.c
> +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
> @@ -467,7 +467,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>   		/* Mark this lmb so we can add it later if all of the
>   		 * requested LMBs cannot be removed.
>   		 */
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>   
>   		lmbs_removed++;
>   		if (lmbs_removed == lmbs_to_remove)
> @@ -478,7 +478,7 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>   		pr_err("Memory hot-remove failed, adding LMB's back\n");
>   
>   		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			rc = dlpar_add_lmb(lmb);
> @@ -486,20 +486,20 @@ static int dlpar_memory_remove_by_count(u32 lmbs_to_remove)
>   				pr_err("Failed to add LMB back, drc index %x\n",
>   				       lmb->drc_index);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   
>   		rc = -EINVAL;
>   	} else {
>   		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			dlpar_release_drc(lmb->drc_index);
>   			pr_info("Memory at %llx was hot-removed\n",
>   				lmb->base_addr);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   		rc = 0;
>   	}
> @@ -608,7 +608,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
>   		if (rc)
>   			break;
>   
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>   	}
>   
>   	if (rc) {
> @@ -616,7 +616,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
>   
>   
>   		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			rc = dlpar_add_lmb(lmb);
> @@ -624,19 +624,19 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)
>   				pr_err("Failed to add LMB, drc index %x\n",
>   				       lmb->drc_index);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   		rc = -EINVAL;
>   	} else {
>   		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			dlpar_release_drc(lmb->drc_index);
>   			pr_info("Memory at %llx (drc index %x) was hot-removed\n",
>   				lmb->base_addr, lmb->drc_index);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   	}
>   
> @@ -760,7 +760,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>   		/* Mark this lmb so we can remove it later if all of the
>   		 * requested LMBs cannot be added.
>   		 */
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>   
>   		lmbs_added++;
>   		if (lmbs_added == lmbs_to_add)
> @@ -771,7 +771,7 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>   		pr_err("Memory hot-add failed, removing any added LMBs\n");
>   
>   		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			rc = dlpar_remove_lmb(lmb);
> @@ -781,17 +781,17 @@ static int dlpar_memory_add_by_count(u32 lmbs_to_add)
>   			else
>   				dlpar_release_drc(lmb->drc_index);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   		rc = -EINVAL;
>   	} else {
>   		for_each_drmem_lmb(lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			pr_info("Memory at %llx (drc index %x) was hot-added\n",
>   				lmb->base_addr, lmb->drc_index);
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   		rc = 0;
>   	}
> @@ -874,14 +874,14 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
>   			break;
>   		}
>   
> -		drmem_mark_lmb_reserved(lmb);
> +		drmem_mark_lmb_isolated(lmb);
>   	}
>   
>   	if (rc) {
>   		pr_err("Memory indexed-count-add failed, removing any added LMBs\n");
>   
>   		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			rc = dlpar_remove_lmb(lmb);
> @@ -891,17 +891,17 @@ static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index)
>   			else
>   				dlpar_release_drc(lmb->drc_index);
>   
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   		rc = -EINVAL;
>   	} else {
>   		for_each_drmem_lmb_in_range(lmb, start_lmb, end_lmb) {
> -			if (!drmem_lmb_reserved(lmb))
> +			if (!drmem_lmb_isolated(lmb))
>   				continue;
>   
>   			pr_info("Memory at %llx (drc index %x) was hot-added\n",
>   				lmb->base_addr, lmb->drc_index);
> -			drmem_remove_lmb_reservation(lmb);
> +			drmem_remove_lmb_isolation(lmb);
>   		}
>   	}
>   

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-03-11 17:10 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21 10:36 [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Bharata B Rao
2018-02-21 10:36 ` [RFC PATCH v0 1/2] powerpc, drmem: Fix unexpected flag value in ibm, dynamic-memory-v2 Bharata B Rao
2018-02-21 11:48   ` Michael Ellerman
2018-02-21 13:36     ` Bharata B Rao
2018-02-22 13:51   ` Nathan Fontenot
2018-02-26  5:35   ` [RFC, v0, " Michael Ellerman
2018-02-21 10:36 ` [RFC PATCH v0 2/2] powerpc, drmem: Rename DRMEM_LMB_RESERVED to DRMEM_LMB_ISOLATED Bharata B Rao
2018-02-22 13:52   ` Nathan Fontenot
2022-03-11 17:09   ` Christophe Leroy
2018-02-21 12:27 ` [RFC PATCH v0 0/2] ibm,dynamic-memory-v2 fix Balbir Singh
2018-02-21 13:41   ` Bharata B Rao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).