[PATCH v2] powerpc/pseries: Fix maximum memory value

Aravinda Prasad aravinda at linux.vnet.ibm.com
Thu Jul 4 21:30:16 AEST 2019

On Thursday 04 July 2019 04:43 PM, Michael Ellerman wrote:
> "Naveen N. Rao" <naveen.n.rao at linux.vnet.ibm.com> writes:
>> Nathan Lynch wrote:
>>> Aravinda Prasad <aravinda at linux.vnet.ibm.com> writes:
>>>> Calculating the maximum memory based on the number of lmbs
>>>> and lmb size does not account for the RMA region. Hence
>>>> use memory_hotplug_max(), which already accounts for the
>>>> RMA region, to fetch the maximum memory value. Thanks to
>>>> Nathan Lynch for suggesting the memory_hotplug_max()
>>>> function.
>>> Well, I hope I haven't led you astray... will it give you the desired
>>> result on a kernel configured without memory hotplug support, booted in
>>> an LPAR with some huge pages configured?
>>> If so, then
>>> Acked-by: Nathan Lynch <nathanl at linux.ibm.com>
>>> It would likely help with review and future maintenance if the semantics
>>> and intended use of the MaxMem field are made a little more
>>> explicit. For example, is it supposed to include persistent memory?
>>> Perhaps a follow-up patch could address this. Or maybe I'm overthinking
>>> it.
>> This was primarily aimed to replicate what AIX lparstat does and 
>> documentation (*) just says:
>>   Maximum Memory
>>       Maximum possible amount of Memory.
>> I think this mirrors the maximum memory value set in the LPAR profile, 
>> and this provides a way to obtain that value from within the LPAR.
> But the doc string for memory_hotplug_max() says:
>  * memory_hotplug_max - return max address of memory that may be added
> ie. maximum *address* not maximum *amount*.
> Possibly it turns out to be the same value, but that is just because you
> have no holes in your layout.
> So I don't think this patch is correct.

memory_hotplug_max (in one of the cases) is taking the value from
"ibm,lrdr-capacity" and according to PAPR:

PAPR section C.6.3.1 ibm,lrdr-capacity:

"The phys (of size #address-cells) communicates the maximum address in
bytes and therefore, the most memory that can be allocated to this

On other cases memory_hotplug_max() is calculating based on the number
of lmbs assigned to the partition, so should still give max mem value

> cheers


More information about the Linuxppc-dev mailing list