Messages in this thread | | | Date | Wed, 3 Apr 2019 10:01:16 +0200 | From | Oscar Salvador <> | Subject | Re: [PATCH 0/4] mm,memory_hotplug: allocate memmap from hotadded memory |
| |
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
| |