diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index d97a0ce24e..8f77e8fc58 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8544,7 +8544,11 @@ qemuDomainUpdateMemoryDeviceInfo(virDomainObj *vm, switch (mem->model) { case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM: - mem->currentsize = VIR_DIV_UP(dimm->size, 1024); + case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM: + if (mem->model == VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM) { + mem->currentsize = VIR_DIV_UP(dimm->size, 1024); + } + mem->address = dimm->address; break; case VIR_DOMAIN_MEMORY_MODEL_DIMM: @@ -8554,7 +8558,6 @@ qemuDomainUpdateMemoryDeviceInfo(virDomainObj *vm, mem->info.addr.dimm.base = dimm->address; break; - case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 745d83e2b6..9ee8d19f03 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7268,6 +7268,7 @@ qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon, case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_NVDIMM: case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM: + case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM: /* While 'id' attribute is marked as optional in QEMU's QAPI * specification, Libvirt always sets it. Thus we can fail if not * present. */ @@ -7308,13 +7309,21 @@ qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon, return -1; } - } else if (model == VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM) { + } else if (model == VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM || + model == VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM) { if (virJSONValueObjectGetNumberUlong(dimminfo, "size", &meminfo->size) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("malformed/missing size in virtio memory info")); return -1; } + + if (virJSONValueObjectGetNumberUlong(dimminfo, "memaddr", + &meminfo->address) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("malformed/missing memaddr in virtio memory info")); + return -1; + } } break; @@ -7339,7 +7348,6 @@ qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon, } break; - case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM: case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: /* type not handled yet */