Resend [PATCH] powerpc/hotplug-mem: Fix aa_index match bug for hotplug

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Resend [PATCH] powerpc/hotplug-mem: Fix aa_index match bug for hotplug

Michael Bringmann

When adding or removing memory, the aa_index (affinity value) for the
memblock must also be converted to match the endianness of the rest
of the 'ibm,dynamic-memory' property.  Otherwise, subsequent retrieval
of the attribute will likely lead to non-existent nodes, followed by
using the default node in the code inappropriately.

Note: This is a bug that we would likely want to see fixed in stable
      circa v4.1+.

Signed-off-by: Michael Bringmann <[hidden email]>
---
 arch/powerpc/platforms/pseries/hotplug-memory.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
index e104c71..1fb162b 100644
--- a/arch/powerpc/platforms/pseries/hotplug-memory.c
+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
@@ -124,6 +124,7 @@ static struct property *dlpar_clone_drconf_property(struct device_node *dn)
  for (i = 0; i < num_lmbs; i++) {
  lmbs[i].base_addr = be64_to_cpu(lmbs[i].base_addr);
  lmbs[i].drc_index = be32_to_cpu(lmbs[i].drc_index);
+ lmbs[i].aa_index = be32_to_cpu(lmbs[i].aa_index);
  lmbs[i].flags = be32_to_cpu(lmbs[i].flags);
  }
 
@@ -147,6 +148,7 @@ static void dlpar_update_drconf_property(struct device_node *dn,
  for (i = 0; i < num_lmbs; i++) {
  lmbs[i].base_addr = cpu_to_be64(lmbs[i].base_addr);
  lmbs[i].drc_index = cpu_to_be32(lmbs[i].drc_index);
+ lmbs[i].aa_index = cpu_to_be32(lmbs[i].aa_index);
  lmbs[i].flags = cpu_to_be32(lmbs[i].flags);
  }
 

Reply | Threaded
Open this post in threaded view
|

Re: Resend [PATCH] powerpc/hotplug-mem: Fix aa_index match bug for hotplug

Michael Ellerman-2
Michael Bringmann <[hidden email]> writes:

> When adding or removing memory, the aa_index (affinity value) for the
> memblock must also be converted to match the endianness of the rest
> of the 'ibm,dynamic-memory' property.  Otherwise, subsequent retrieval
> of the attribute will likely lead to non-existent nodes, followed by
> using the default node in the code inappropriately.
>
> Note: This is a bug that we would likely want to see fixed in stable
>       circa v4.1+.

I merged this a week ago:

https://lists.ozlabs.org/pipermail/linuxppc-dev/2017-June/158426.html

It was annotated:

Fixes: 5f97b2a0d176 ("powerpc/pseries: Implement memory hotplug add in the kernel")
Cc: [hidden email] # v4.1+

cheers