powerpc/mm/drmem: Fix unexpected flag value in ibm,dynamic-memory-v2
authorBharata B Rao <bharata@linux.vnet.ibm.com>
Wed, 21 Feb 2018 10:36:26 +0000 (16:06 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 23 Feb 2018 05:45:51 +0000 (16:45 +1100)
commit2f7d03e0511991f124455682cc94094eaa0981ea
tree7f3d3cd8c69e5e9a3efa0a17388461d0a798c873
parent083b20907185b076f21c265b30fe5b5f24c03d8c
powerpc/mm/drmem: Fix unexpected flag value in ibm,dynamic-memory-v2

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().

Fixes: 2b31e3aec1db ("powerpc/drmem: Add support for ibm, dynamic-memory-v2 property")
Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/drmem.c