]> git.hungrycats.org Git - linux/commitdiff
powerpc/hotplug-mem: Fix missing endian conversion of aa_index
authorMichael Bringmann <mwb@linux.vnet.ibm.com>
Mon, 22 May 2017 20:44:37 +0000 (15:44 -0500)
committerSasha Levin <alexander.levin@verizon.com>
Mon, 26 Jun 2017 02:02:19 +0000 (22:02 -0400)
[ Upstream commit dc421b200f91930c9c6a9586810ff8c232cf10fc ]

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.

Fixes: 5f97b2a0d176 ("powerpc/pseries: Implement memory hotplug add in the kernel")
Cc: stable@vger.kernel.org # v4.1+
Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
arch/powerpc/platforms/pseries/hotplug-memory.c

index 0ced387e14638f2a711fbca784ab621ac9121b1d..68049b2d7d7ca60788b507b2b77c74731e8c7ffc 100644 (file)
@@ -111,6 +111,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);
        }
 
@@ -554,6 +555,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);
        }