vhost: clear desc, avail and used addresses on setting new mem table
This fixes queue handling for QEMU 2.12 which is sending new memory table but resetting only some queues Fixes #339 Change-Id: Ic971725261720d7459e49a4f14bc15c2f2a77b1a Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Reviewed-on: https://review.gerrithub.io/420372 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Chen Wang <chenx.wang@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
911c12c657
commit
37e6827a85
@ -584,6 +584,7 @@ vhost_setup_mem_table(struct virtio_net *dev)
|
||||
{
|
||||
struct VhostUserMemory memory = dev->mem_table;
|
||||
struct rte_vhost_mem_region *reg;
|
||||
struct vhost_virtqueue *vq;
|
||||
void *mmap_addr;
|
||||
uint64_t mmap_size;
|
||||
uint64_t mmap_offset;
|
||||
@ -597,6 +598,17 @@ vhost_setup_mem_table(struct virtio_net *dev)
|
||||
dev->mem = NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < dev->nr_vring; i++) {
|
||||
vq = dev->virtqueue[i];
|
||||
/* Those addresses won't be valid anymore in host address space
|
||||
* after setting new mem table. Initiator need to resend these
|
||||
* addresses.
|
||||
*/
|
||||
vq->desc = NULL;
|
||||
vq->avail = NULL;
|
||||
vq->used = NULL;
|
||||
}
|
||||
|
||||
dev->nr_guest_pages = 0;
|
||||
if (!dev->guest_pages) {
|
||||
dev->max_guest_pages = 8;
|
||||
|
Loading…
Reference in New Issue
Block a user