File d2b77608-libxl-maxmem-fix.patch of Package libvirt.8364

commit d2b77608e9e9c23416a9ac93a50054348cb51653
Author: Jim Fehlig <>
Date:   Mon Jan 16 10:51:40 2017 -0700

    libxl: fix reporting of maximum memory
    The libxl driver reports different values of maximum memory depending
    on state of a domain. If inactive, maximum memory value is reported
    correctly. When active, maximum memory is derived from max_pages value
    returned by the XEN_SYSCTL_getdomaininfolist sysctl operation. But
    max_pages can be changed by toolstacks and does not necessarily
    represent the maximum memory a domain can use during its active
    A better location for determining a domain's maximum memory is the
    /local/domain/<id>/memory/static-max node in xenstore. This value
    is set from the libxl_domain_build_info.max_memkb field when creating
    the domain. Currently it cannot be changed nor can its value be
    exceeded by a balloon operation. From libvirt's perspective, always
    reporting maximum memory with virDomainDefGetMemoryTotal() will produce
    the same results as reading the static-max node in xenstore.
    Signed-off-by: Jim Fehlig <>

Index: libvirt-2.0.0/src/libxl/libxl_driver.c
--- libvirt-2.0.0.orig/src/libxl/libxl_driver.c
+++ libvirt-2.0.0/src/libxl/libxl_driver.c
@@ -1551,10 +1551,10 @@ libxlDomainGetInfo(virDomainPtr dom, vir
     if (virDomainGetInfoEnsureACL(dom->conn, vm->def) < 0)
         goto cleanup;
+    info->maxMem = virDomainDefGetMemoryTotal(vm->def);
     if (!virDomainObjIsActive(vm)) {
         info->cpuTime = 0;
         info->memory = vm->def->mem.cur_balloon;
-        info->maxMem = virDomainDefGetMemoryTotal(vm->def);
     } else {
@@ -1566,7 +1566,6 @@ libxlDomainGetInfo(virDomainPtr dom, vir
         info->cpuTime = d_info.cpu_time;
         info->memory = d_info.current_memkb;
-        info->maxMem = d_info.max_memkb;
@@ -5078,7 +5077,7 @@ libxlDomainMemoryStats(virDomainPtr dom,
         goto endjob;
     mem = d_info.current_memkb;
-    maxmem = d_info.max_memkb;
+    maxmem = virDomainDefGetMemoryTotal(vm->def);
openSUSE Build Service is sponsored by