We implement the SparseRamHandler interface and properly communicate changes by notifying listeners - especially in all scenarios - when memory becomes usable by the guest - when memory becomes unusable by the guest (and we discard memory)
Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: "Michael S. Tsirkin" <m...@redhat.com> Cc: Alex Williamson <alex.william...@redhat.com> Cc: Wei Yang <richardw.y...@linux.intel.com> Cc: Dr. David Alan Gilbert <dgilb...@redhat.com> Cc: Igor Mammedov <imamm...@redhat.com> Cc: Pankaj Gupta <pankaj.gupta.li...@gmail.com> Cc: Peter Xu <pet...@redhat.com> Signed-off-by: David Hildenbrand <da...@redhat.com> --- hw/virtio/virtio-mem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index e23969eaed..efeff7c64c 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -531,7 +531,7 @@ static void virtio_mem_device_realize(DeviceState *dev, Error **errp) return; } - if (ram_block_discard_require(true)) { + if (ram_block_discard_type_require(RAM_BLOCK_DISCARD_T_COORDINATED, true)) { error_setg(errp, "Discarding RAM is disabled"); return; } @@ -539,7 +539,7 @@ static void virtio_mem_device_realize(DeviceState *dev, Error **errp) ret = ram_block_discard_range(rb, 0, qemu_ram_get_used_length(rb)); if (ret) { error_setg_errno(errp, -ret, "Unexpected error discarding RAM"); - ram_block_discard_require(false); + ram_block_discard_type_require(RAM_BLOCK_DISCARD_T_COORDINATED, false); return; } @@ -579,7 +579,7 @@ static void virtio_mem_device_unrealize(DeviceState *dev) virtio_del_queue(vdev, 0); virtio_cleanup(vdev); g_free(vmem->bitmap); - ram_block_discard_require(false); + ram_block_discard_type_require(RAM_BLOCK_DISCARD_T_COORDINATED, false); } static int virtio_mem_restore_unplugged(VirtIOMEM *vmem) -- 2.26.2