@@ -412,7 +412,6 @@ static int vhost_vdpa_net_cvq_start(NetClientState *nc)
s = DO_UPCAST(VhostVDPAState, nc, nc);
v = &s->vhost_vdpa;
- v->shadow_data = s->always_svq;
v->shadow_vqs_enabled = s->always_svq;
s->vhost_vdpa.address_space_id = VHOST_VDPA_GUEST_PA_ASID;
@@ -482,6 +481,12 @@ out:
v->iova_range.last);
}
+ /*
+ * Memory listener is registered against CVQ vhost device, but different
+ * ASID may enable individually SVQ. Let's copy data vqs value here.
+ */
+ v->shadow_data = s0->vhost_vdpa.shadow_data;
+
r = vhost_vdpa_cvq_map_buf(&s->vhost_vdpa, s->cvq_cmd_out_buffer,
vhost_vdpa_net_cvq_cmd_page_len(), false);
if (unlikely(r < 0)) {
This allows to passthrough or shadow the data depending on migration state in next patches. Signed-off-by: Eugenio PĂ©rez <eperezma@redhat.com> --- net/vhost-vdpa.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)