diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f1623f1d180c28ec2186a8795ac2d750463279ff..355821cfb44c5cca6329242871327e3e369b6e87 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -12205,19 +12205,6 @@ virDomainDefParseXML(xmlDocPtr xml, def->memballoon = memballoon; VIR_FREE(nodes); - } else { - if (def->virtType == VIR_DOMAIN_VIRT_XEN || - def->virtType == VIR_DOMAIN_VIRT_QEMU || - def->virtType == VIR_DOMAIN_VIRT_KQEMU || - def->virtType == VIR_DOMAIN_VIRT_KVM) { - virDomainMemballoonDefPtr memballoon; - if (VIR_ALLOC(memballoon) < 0) - goto error; - memballoon->model = def->virtType == VIR_DOMAIN_VIRT_XEN ? - VIR_DOMAIN_MEMBALLOON_MODEL_XEN : - VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO; - def->memballoon = memballoon; - } } /* Parse the RNG device */ diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7f4d17d126457ac8065f2a32a1d8028935f94e62..926030122e951138639e6920efea8176db0638c9 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -784,6 +784,16 @@ qemuDomainDefPostParse(virDomainDefPtr def, return -1; } } + + if (!def->memballoon) { + virDomainMemballoonDefPtr memballoon; + if (VIR_ALLOC(memballoon) < 0) + return -1; + + memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO; + def->memballoon = memballoon; + } + return 0; } diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index cb64de65c29c6b7e66242e7a7074f849a95725b5..6cb4f4fc31800e316671dd55946c660ec0c7ccd9 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -340,6 +340,15 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, STRNEQ(def->os.type, "hvm")) dev->data.chr->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN; + if (!def->memballoon) { + virDomainMemballoonDefPtr memballoon; + if (VIR_ALLOC(memballoon) < 0) + return -1; + + memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_XEN; + def->memballoon = memballoon; + } + return 0; }