virtio: features, fixes, cleanups
resume support in vdpa/solidrun structure size optimizations in virtio_pci new pds_vdpa driver immediate initialization mechanism for vdpa/ifcvf interrupt bypass for vdpa/mlx5 multiple worker support for vhost viirtio net in Intel F2000X-PL support for vdpa/ifcvf fixes, cleanups all over the place Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmSi95cPHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRpJ58H/A++mwjLsoiJ/3xgf2S2Fn0p0lkgxg61LrjD Q9p8zstG/BndRvv018XcJKoklaHpb4WcmNctKRNZJ6BjPj+ZwdADuSzoaUNurPD4 M3s/nXVWvg7/2FifGDpCzQpyw0MR0Ip6/yqtdTl4vuLZGxI1nNGDfYbDgc3vZeCp pYTLsl/XUPzix4iJouEQqy5rmlUia3IE751aECrdk58z17lDo/Znar4hsXF0acQY +G6C/MNZQgf1rtJIl901h54W8rAoubxeda80uXSQk9fDyPG/wZYh2wFBGPi9qYa+ 9E+tOgHprMZ7G5GEopDdd19UctuW7M+YXPWZa1ijp8EZXmMpzuo= =5tdF -----END PGP SIGNATURE----- Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost Pull virtio updates from Michael Tsirkin: - resume support in vdpa/solidrun - structure size optimizations in virtio_pci - new pds_vdpa driver - immediate initialization mechanism for vdpa/ifcvf - interrupt bypass for vdpa/mlx5 - multiple worker support for vhost - viirtio net in Intel F2000X-PL support for vdpa/ifcvf - fixes, cleanups all over the place * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (48 commits) vhost: Make parameter name match of vhost_get_vq_desc() vduse: fix NULL pointer dereference vhost: Allow worker switching while work is queueing vhost_scsi: add support for worker ioctls vhost: allow userspace to create workers vhost: replace single worker pointer with xarray vhost: add helper to parse userspace vring state/file vhost: remove vhost_work_queue vhost_scsi: flush IO vqs then send TMF rsp vhost_scsi: convert to vhost_vq_work_queue vhost_scsi: make SCSI cmd completion per vq vhost_sock: convert to vhost_vq_work_queue vhost: convert poll work to be vq based vhost: take worker or vq for flushing vhost: take worker or vq instead of dev for queueing vhost, vhost_net: add helper to check if vq has work vhost: add vhost_worker pointer to vhost_virtqueue vhost: dynamically allocate vhost_worker vhost: create worker at end of vhost_dev_set_owner virtio_bt: call scheduler when we free unused buffs ...
This commit is contained in:
commit
a8d70602b1
42 changed files with 2777 additions and 358 deletions
|
|
@ -45,6 +45,25 @@
|
|||
#define VHOST_SET_LOG_BASE _IOW(VHOST_VIRTIO, 0x04, __u64)
|
||||
/* Specify an eventfd file descriptor to signal on log write. */
|
||||
#define VHOST_SET_LOG_FD _IOW(VHOST_VIRTIO, 0x07, int)
|
||||
/* By default, a device gets one vhost_worker that its virtqueues share. This
|
||||
* command allows the owner of the device to create an additional vhost_worker
|
||||
* for the device. It can later be bound to 1 or more of its virtqueues using
|
||||
* the VHOST_ATTACH_VRING_WORKER command.
|
||||
*
|
||||
* This must be called after VHOST_SET_OWNER and the caller must be the owner
|
||||
* of the device. The new thread will inherit caller's cgroups and namespaces,
|
||||
* and will share the caller's memory space. The new thread will also be
|
||||
* counted against the caller's RLIMIT_NPROC value.
|
||||
*
|
||||
* The worker's ID used in other commands will be returned in
|
||||
* vhost_worker_state.
|
||||
*/
|
||||
#define VHOST_NEW_WORKER _IOR(VHOST_VIRTIO, 0x8, struct vhost_worker_state)
|
||||
/* Free a worker created with VHOST_NEW_WORKER if it's not attached to any
|
||||
* virtqueue. If userspace is not able to call this for workers its created,
|
||||
* the kernel will free all the device's workers when the device is closed.
|
||||
*/
|
||||
#define VHOST_FREE_WORKER _IOW(VHOST_VIRTIO, 0x9, struct vhost_worker_state)
|
||||
|
||||
/* Ring setup. */
|
||||
/* Set number of descriptors in ring. This parameter can not
|
||||
|
|
@ -70,6 +89,18 @@
|
|||
#define VHOST_VRING_BIG_ENDIAN 1
|
||||
#define VHOST_SET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x13, struct vhost_vring_state)
|
||||
#define VHOST_GET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x14, struct vhost_vring_state)
|
||||
/* Attach a vhost_worker created with VHOST_NEW_WORKER to one of the device's
|
||||
* virtqueues.
|
||||
*
|
||||
* This will replace the virtqueue's existing worker. If the replaced worker
|
||||
* is no longer attached to any virtqueues, it can be freed with
|
||||
* VHOST_FREE_WORKER.
|
||||
*/
|
||||
#define VHOST_ATTACH_VRING_WORKER _IOW(VHOST_VIRTIO, 0x15, \
|
||||
struct vhost_vring_worker)
|
||||
/* Return the vring worker's ID */
|
||||
#define VHOST_GET_VRING_WORKER _IOWR(VHOST_VIRTIO, 0x16, \
|
||||
struct vhost_vring_worker)
|
||||
|
||||
/* The following ioctls use eventfd file descriptors to signal and poll
|
||||
* for events. */
|
||||
|
|
|
|||
|
|
@ -47,6 +47,22 @@ struct vhost_vring_addr {
|
|||
__u64 log_guest_addr;
|
||||
};
|
||||
|
||||
struct vhost_worker_state {
|
||||
/*
|
||||
* For VHOST_NEW_WORKER the kernel will return the new vhost_worker id.
|
||||
* For VHOST_FREE_WORKER this must be set to the id of the vhost_worker
|
||||
* to free.
|
||||
*/
|
||||
unsigned int worker_id;
|
||||
};
|
||||
|
||||
struct vhost_vring_worker {
|
||||
/* vring index */
|
||||
unsigned int index;
|
||||
/* The id of the vhost_worker returned from VHOST_NEW_WORKER */
|
||||
unsigned int worker_id;
|
||||
};
|
||||
|
||||
/* no alignment requirement */
|
||||
struct vhost_iotlb_msg {
|
||||
__u64 iova;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue