On Wed, 03 Feb 2016 16:42:21 +0100 Markus Armbruster <arm...@redhat.com> wrote:
> Eric Blake <ebl...@redhat.com> writes: > > > On 01/27/2016 11:51 PM, Vladimir Sementsov-Ogievskiy wrote: > >> NVDIMM for now is planned to use as a backing store for DAX filesystem > >> in the guest and thus this memory is excluded from guest memory > >> management and LRUs. > >> > >> In this case libvirt running QEMU along with configured balloon almost > >> immediately inflates balloon and effectively kill the guest as > >> qemu counts nvdimm as part of the ram. > >> > >> Counting dimm devices as part of the ram for ballooning was started from > >> commit 463756d03: > >> virtio-balloon: Fix balloon not working correctly when hotplug memory > >> > >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > >> Signed-off-by: Denis V. Lunev <d...@openvz.org> > >> CC: Stefan Hajnoczi <stefa...@redhat.com> > >> CC: Xiao Guangrong <guangrong.x...@linux.intel.com> > >> CC: "Michael S. Tsirkin" <m...@redhat.com> > >> CC: Igor Mammedov <imamm...@redhat.com> > >> CC: Eric Blake <ebl...@redhat.com> > >> CC: Markus Armbruster <arm...@redhat.com> > >> --- > > > >> @@ -308,7 +309,9 @@ static ram_addr_t get_current_ram_size(void) > >> if (value) { > >> switch (value->type) { > >> case MEMORY_DEVICE_INFO_KIND_DIMM: > >> - size += value->u.dimm->size; > >> + if (strcmp(value->u.dimm->type, TYPE_NVDIMM)) { > > > > If you fix 2/3 to use a QAPI enum, then this will be an integer compare > > instead of a strcmp(). > > Another option is to add a flag to the subtypes of TYPE_PC_DIMM, set it > for the subtypes that should be counted here, and accumulate the sizes > of devices where the flag is set. Requires iterating directly over the > devices here (like qmp_pc_dimm_device_list() does under the hood) rather > than the MemoryDeviceInfoList returned by qmp_pc_dimm_device_list(), I'd rather not add flag to TYPE_PC_DIMM state/class as its purely balloon qemu/guest driver limit and not related to [pc-|nv]in general. Lets whitelist balloon supported type here.