mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
vhost: multiqueue support
This patch lets vhost support multiqueue. The idea is simple, just launching multiple threads of vhost and let each of vhost thread processing a subset of the virtqueues of the device. After this change each emulated device can have multiple vhost threads as its backend. To do this, a virtqueue index were introduced to record to first virtqueue that will be handled by this vhost_net device. Based on this and nvqs, vhost could calculate its relative index to setup vhost_net device. Since we may have many vhost/net devices for a virtio-net device. The setting of guest notifiers were moved out of the starting/stopping of a specific vhost thread. The vhost_net_{start|stop}() were renamed to vhost_net_{start|stop}_one(), and a new vhost_net_{start|stop}() were introduced to configure the guest notifiers and start/stop all vhost/vhost_net devices. Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
264986e2c8
commit
a9f98bb5eb
5 changed files with 120 additions and 58 deletions
|
@ -130,14 +130,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
|
|||
return;
|
||||
}
|
||||
n->vhost_started = 1;
|
||||
r = vhost_net_start(tap_get_vhost_net(nc->peer), &n->vdev);
|
||||
r = vhost_net_start(&n->vdev, nc, 1);
|
||||
if (r < 0) {
|
||||
error_report("unable to start vhost net: %d: "
|
||||
"falling back on userspace virtio", -r);
|
||||
n->vhost_started = 0;
|
||||
}
|
||||
} else {
|
||||
vhost_net_stop(tap_get_vhost_net(nc->peer), &n->vdev);
|
||||
vhost_net_stop(&n->vdev, nc, 1);
|
||||
n->vhost_started = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue