mirror of https://github.com/xemu-project/xemu.git
vhost-vdpa: Set discarding of RAM broken when initializing the backend
Similar to VFIO, vDPA will go ahead an map+pin all guest memory. Memory that used to be discarded will get re-populated and if we discard+re-access memory after mapping+pinning, the pages mapped into the vDPA IOMMU will go out of sync with the actual pages mapped into the user space page tables. Set discarding of RAM broken such that: - virtio-mem and vhost-vdpa run mutually exclusive - virtio-balloon is inhibited and no memory discards will get issued In the future, we might be able to support coordinated discarding of RAM as used by virtio-mem and already supported by vfio via the RamDiscardManager. Acked-by: Jason Wang <jasowang@redhat.com> Cc: Jason Wang <jasowang@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Cindy Lu <lulu@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20211027130324.59791-1-david@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
This commit is contained in:
parent
44d3d89814
commit
e1c1915bef
|
@ -331,6 +331,17 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void *opaque, Error **errp)
|
|||
struct vhost_vdpa *v;
|
||||
assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA);
|
||||
trace_vhost_vdpa_init(dev, opaque);
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Similar to VFIO, we end up pinning all guest memory and have to
|
||||
* disable discarding of RAM.
|
||||
*/
|
||||
ret = ram_block_discard_disable(true);
|
||||
if (ret) {
|
||||
error_report("Cannot set discarding of RAM broken");
|
||||
return ret;
|
||||
}
|
||||
|
||||
v = opaque;
|
||||
v->dev = dev;
|
||||
|
@ -442,6 +453,8 @@ static int vhost_vdpa_cleanup(struct vhost_dev *dev)
|
|||
memory_listener_unregister(&v->listener);
|
||||
|
||||
dev->opaque = NULL;
|
||||
ram_block_discard_disable(false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue