linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Nathan Lynch <nathanl@linux.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: tyreld@linux.ibm.com, srikar@linux.vnet.ibm.com,
	ego@linux.vnet.ibm.com, npiggin@gmail.com,
	svaidy@linux.vnet.ibm.com
Subject: [PATCH 18/18] powerpc/pseries: remove obsolete memory hotplug DT notifier code
Date: Fri, 12 Jun 2020 00:12:38 -0500	[thread overview]
Message-ID: <20200612051238.1007764-19-nathanl@linux.ibm.com> (raw)
In-Reply-To: <20200612051238.1007764-1-nathanl@linux.ibm.com>

pseries_update_drconf_memory() runs from a DT notifier in response to
an update to the ibm,dynamic-memory property of the
/ibm,dynamic-reconfiguration-memory node. This property is an older
less compact format than the ibm,dynamic-memory-v2 property used in
most currently supported firmwares. There has never been an equivalent
function for the v2 property.

pseries_update_drconf_memory() compares the 'assigned' flag for each
LMB in the old vs new properties and adds or removes the block
accordingly. However it appears to be of no actual utility:

* Partition suspension and PRRNs are specified only to change LMBs'
  NUMA affinity information. This notifier should be a no-op for those
  scenarios since the assigned flags should not change.

* The memory hotplug/DLPAR path has a hack which short-circuits
  execution of the notifier:
     dlpar_memory()
        ...
        rtas_hp_event = true;
        drmem_update_dt()
           of_update_property()
              pseries_memory_notifier()
                 pseries_update_drconf_memory()
                    if (rtas_hp_event) return;

So this code only makes sense as a relic of the time when more of the
DLPAR workflow took place in user space. I don't see a purpose for it
now.

Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
---
 .../platforms/pseries/hotplug-memory.c        | 65 +------------------
 1 file changed, 1 insertion(+), 64 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
index 67ece3ac9ac2..73a5dcd977e1 100644
--- a/arch/powerpc/platforms/pseries/hotplug-memory.c
+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
@@ -22,8 +22,6 @@
 #include <asm/drmem.h>
 #include "pseries.h"
 
-static bool rtas_hp_event;
-
 unsigned long pseries_memory_block_size(void)
 {
 	struct device_node *np;
@@ -871,11 +869,8 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog)
 		break;
 	}
 
-	if (!rc) {
-		rtas_hp_event = true;
+	if (!rc)
 		rc = drmem_update_dt();
-		rtas_hp_event = false;
-	}
 
 	unlock_device_hotplug();
 	return rc;
@@ -911,60 +906,6 @@ static int pseries_add_mem_node(struct device_node *np)
 	return (ret < 0) ? -EINVAL : 0;
 }
 
-static int pseries_update_drconf_memory(struct of_reconfig_data *pr)
-{
-	struct of_drconf_cell_v1 *new_drmem, *old_drmem;
-	unsigned long memblock_size;
-	u32 entries;
-	__be32 *p;
-	int i, rc = -EINVAL;
-
-	if (rtas_hp_event)
-		return 0;
-
-	memblock_size = pseries_memory_block_size();
-	if (!memblock_size)
-		return -EINVAL;
-
-	if (!pr->old_prop)
-		return 0;
-
-	p = (__be32 *) pr->old_prop->value;
-	if (!p)
-		return -EINVAL;
-
-	/* The first int of the property is the number of lmb's described
-	 * by the property. This is followed by an array of of_drconf_cell
-	 * entries. Get the number of entries and skip to the array of
-	 * of_drconf_cell's.
-	 */
-	entries = be32_to_cpu(*p++);
-	old_drmem = (struct of_drconf_cell_v1 *)p;
-
-	p = (__be32 *)pr->prop->value;
-	p++;
-	new_drmem = (struct of_drconf_cell_v1 *)p;
-
-	for (i = 0; i < entries; i++) {
-		if ((be32_to_cpu(old_drmem[i].flags) & DRCONF_MEM_ASSIGNED) &&
-		    (!(be32_to_cpu(new_drmem[i].flags) & DRCONF_MEM_ASSIGNED))) {
-			rc = pseries_remove_memblock(
-				be64_to_cpu(old_drmem[i].base_addr),
-						     memblock_size);
-			break;
-		} else if ((!(be32_to_cpu(old_drmem[i].flags) &
-			    DRCONF_MEM_ASSIGNED)) &&
-			    (be32_to_cpu(new_drmem[i].flags) &
-			    DRCONF_MEM_ASSIGNED)) {
-			rc = memblock_add(be64_to_cpu(old_drmem[i].base_addr),
-					  memblock_size);
-			rc = (rc < 0) ? -EINVAL : 0;
-			break;
-		}
-	}
-	return rc;
-}
-
 static int pseries_memory_notifier(struct notifier_block *nb,
 				   unsigned long action, void *data)
 {
@@ -978,10 +919,6 @@ static int pseries_memory_notifier(struct notifier_block *nb,
 	case OF_RECONFIG_DETACH_NODE:
 		err = pseries_remove_mem_node(rd->dn);
 		break;
-	case OF_RECONFIG_UPDATE_PROPERTY:
-		if (!strcmp(rd->prop->name, "ibm,dynamic-memory"))
-			err = pseries_update_drconf_memory(rd);
-		break;
 	}
 	return notifier_from_errno(err);
 }
-- 
2.25.4


  parent reply	other threads:[~2020-06-12  5:44 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-12  5:12 [PATCH 00/18] remove extended cede offline mode and bogus topology update code Nathan Lynch
2020-06-12  5:12 ` [PATCH 01/18] powerpc/pseries: remove cede offline state for CPUs Nathan Lynch
2020-06-12  5:12 ` [PATCH 02/18] powerpc/rtas: don't online CPUs for partition suspend Nathan Lynch
2020-06-12  5:12 ` [PATCH 03/18] powerpc/numa: remove ability to enable topology updates Nathan Lynch
2020-06-23 16:23   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 04/18] powerpc/numa: remove unreachable topology update code Nathan Lynch
2020-06-23 16:24   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 05/18] powerpc/numa: make vphn_enabled, prrn_enabled flags const Nathan Lynch
2020-06-23 16:24   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 06/18] powerpc/numa: remove unreachable topology timer code Nathan Lynch
2020-06-23 16:25   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 07/18] powerpc/numa: remove unreachable topology workqueue code Nathan Lynch
2020-06-23 16:26   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 08/18] powerpc/numa: remove vphn_enabled and prrn_enabled internal flags Nathan Lynch
2020-06-23 16:27   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 09/18] powerpc/numa: stub out numa_update_cpu_topology() Nathan Lynch
2020-06-23 16:27   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 10/18] powerpc/numa: remove timed_topology_update() Nathan Lynch
2020-06-23 16:28   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 11/18] powerpc/numa: remove start/stop_topology_update() Nathan Lynch
2020-06-23 16:28   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 12/18] powerpc/rtasd: simplify handle_rtas_event(), emit message on events Nathan Lynch
2020-06-23 16:30   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 13/18] powerpc/numa: remove prrn_is_enabled() Nathan Lynch
2020-06-23 16:31   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 14/18] powerpc/numa: remove arch_update_cpu_topology Nathan Lynch
2020-06-23 16:32   ` Srikar Dronamraju
2020-06-12  5:12 ` [PATCH 15/18] powerpc/pseries: remove prrn special case from DT update path Nathan Lynch
2020-06-12  5:12 ` [PATCH 16/18] powerpc/pseries: remove memory "re-add" implementation Nathan Lynch
2020-06-12  5:12 ` [PATCH 17/18] powerpc/pseries: remove dlpar_cpu_readd() Nathan Lynch
2020-06-12  5:12 ` Nathan Lynch [this message]
2020-07-16 12:56 ` [PATCH 00/18] remove extended cede offline mode and bogus topology update code Michael Ellerman

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=20200612051238.1007764-19-nathanl@linux.ibm.com \
    --to=nathanl@linux.ibm.com \
    --cc=ego@linux.vnet.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=npiggin@gmail.com \
    --cc=srikar@linux.vnet.ibm.com \
    --cc=svaidy@linux.vnet.ibm.com \
    --cc=tyreld@linux.ibm.com \
    /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;
as well as URLs for NNTP newsgroup(s).