Re: [PATCH 0/4] mm,memory_hotplug: allocate memmap from hotadded memory
From: Oscar Salvador
Date: Wed Apr 03 2019 - 04:01:20 EST
On Tue, Apr 02, 2019 at 02:48:45PM +0200, Michal Hocko wrote:
> So what is going to happen when you hotadd two memblocks. The first one
> holds memmaps and then you want to hotremove (not just offline) it?
If you hot-add two memblocks, this means that either:
a) you hot-add a 256MB-memory-device (128MB per memblock)
b) you hot-add two 128MB-memory-device
Either way, hot-removing only works for memory-device as a whole, so
there is no problem.
Vmemmaps are created per hot-added operations, this means that
vmemmaps will be created for the hot-added range.
And since hot-add/hot-remove operations works with the same granularity,
there is no problem.
E.g:
# (qemu) object_add memory-backend-ram,id=ram0,size=128M
# (qemu) device_add pc-dimm,id=dimm0,memdev=ram0,node=1
# (qemu) object_add memory-backend-ram,id=ram1,size=512M
# (qemu) device_add pc-dimm,id=dimm1,memdev=ram1,node=1
# (qemu) object_add memory-backend-ram,id=ram2,size=1G
# (qemu) device_add pc-dimm,id=dimm2,memdev=ram2,node=1
These are three hot-add operations.
Each hot-add operation will create use vmemmaps to hold the memmap for
its hot-added sections.
--
Oscar Salvador
SUSE L3