[PATCH v1 00/10] move memory module align to PostParse time

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Nov 12 21:53:39 UTC 2020



On 11/12/20 8:28 AM, Michal Privoznik wrote:
> On 11/11/20 11:07 PM, Daniel Henrique Barboza wrote:
>> Hi,
>>
>> This is a work that I intended to do after pSeries NVDIMM changes
>> I made in commit v6.7.0-302-gd3f3c2c97f. The reasoning is that
>> if ppc64 NVDIMM alignment can be done in PostParse time, regular
>> ppc64 DIMMs alignment can also be done the same way. After that
>> I realized that the same logic can be applied to x86 as well,
>> and then I started to see where we could eliminate explicit
>> align calls.
>>
>> The end result is that a bug that affects pSeries the most
>> was found and fixed in patch 02, and now we're able to reflect
>> the exact memory being used by the guest in the live XML since
>> the alignment is now done in parse time. The series can be
>> fetched from:
>>
>> https://gitlab.com/danielhb/libvirt/-/tree/memory_modules_postparse_v1
>>
>> NOTE: I worked with the x86 logic based on what I could assert
>> from the code itself, i.e. the aligment mechanics (2MiB align for
>> mem modules, 1MiB align for total memory) are related to QEMU
>> internals, not being hypervisor-agnostic. If someone with authority can
>> guarantee that the alignment restrictions for x86 are applicable
>> to all hypervisors (like in the pSeries case), let me know and
>> I'll respin the series putting the x86 code in
>> virDomainMemoryDefPostParse().
>>
>>
>> Daniel Henrique Barboza (10):
>>    domain_conf.c: handle all ppc64 dimms in
>>      virDomainNVDimmAlignSizePseries
>>    qemu_domain.c: align memory modules before calculating 'initialmem'
>>    domain_conf.c: align pSeries mem modules in
>>      virDomainMemoryDefPostParse()
>>    qemu_domain.c: simplify qemuDomainGetMemoryModuleSizeAlignment()
>>    qemu_domain.c: align x86 memory module in post parse time
>>    qemu_domain.c: move size check for mem modules after alignment
>>    qemu_hotplug.c: avoid aligning the mem obj in
>>      qemuDomainDetachPrepMemory()
>>    qemu_hotplug.c: avoid aligning the mem obj in qemuDomainAttachMemory()
>>    qemu_domain.c: remove qemuDomainMemoryDeviceAlignSize()
>>    NEWS.rs: document memory alignment improvements
>>
>>   NEWS.rst                                      |  14 +++
>>   src/conf/domain_conf.c                        |  25 ++++-
>>   src/conf/domain_conf.h                        |   2 +-
>>   src/libvirt_private.syms                      |   2 +-
>>   src/qemu/qemu_domain.c                        | 106 +++++++-----------
>>   src/qemu/qemu_domain.h                        |   2 -
>>   src/qemu/qemu_hotplug.c                       |   9 +-
>>   tests/qemuxml2argvdata/hugepages-nvdimm.xml   |   2 +-
>>   .../memory-hotplug-nvdimm-access.xml          |   2 +-
>>   .../memory-hotplug-nvdimm-align.xml           |   2 +-
>>   .../memory-hotplug-nvdimm-label.xml           |   2 +-
>>   .../memory-hotplug-nvdimm-pmem.xml            |   2 +-
>>   .../memory-hotplug-nvdimm-readonly.xml        |   2 +-
>>   .../memory-hotplug-nvdimm.xml                 |   2 +-
>>   .../memory-hotplug-ppc64-nonuma.args          |   2 +-
>>   tests/qemuxml2argvdata/pages-dimm-discard.xml |   2 +-
>>   .../memory-hotplug-dimm.xml                   |   4 +-
>>   17 files changed, 92 insertions(+), 90 deletions(-)
>>
> 
> Reviewed-by: Michal Privoznik <mprivozn at redhat.com>


Thanks for the review!


> 
> but perhaps you want Andrea to look into it too.


Of course. Andrea, not sure if you want to review the whole series so here's
the gist: we already have the ppc64 NVDIMM alignment being done in PostParse time,
so I started to move all ppc64 memory module alignment to PostParse as well. In
the end I figured I could also move the alignment for x86 as well. Do you see any
potential problem with this design change?



Thanks,


DHB



> 
> Michal
> 




More information about the libvir-list mailing list