mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-06-29 23:43:21 -04:00
virtio: fatures, fixes
A huge patchset supporting vq resize using the new vq reset capability. Features, fixes, cleanups all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmL2F9APHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRp00QIAKpxyu+zCtrdDuh68DsNn1Cu0y0PXG336ySy MA1ck/bv94MZBIbI/Bnn3T1jDmUqTFHJiwaGz/aZ5gGAplZiejhH5Ds3SYjHckaa MKeJ4FTXin9RESP+bXhv4BgZ+ju3KHHkf1jw3TAdVKQ7Nma1u4E6f8nprYEi0TI0 7gLUYenqzS7X1+v9O3rEvPr7tSbAKXYGYpV82sSjHIb9YPQx5luX1JJIZade8A25 mTt5hG1dP1ugUm1NEBPQHjSvdrvO3L5Ahy0My2Bkd77+tOlNF4cuMPt2NS/6+Pgd n6oMt3GXqVvw5RxZyY8dpknH5kofZhjgFyZXH0l+aNItfHUs7t0= =rIo2 -----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: - A huge patchset supporting vq resize using the new vq reset capability - Features, fixes, and cleanups all over the place * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (88 commits) vdpa/mlx5: Fix possible uninitialized return value vdpa_sim_blk: add support for discard and write-zeroes vdpa_sim_blk: add support for VIRTIO_BLK_T_FLUSH vdpa_sim_blk: make vdpasim_blk_check_range usable by other requests vdpa_sim_blk: check if sector is 0 for commands other than read or write vdpa_sim: Implement suspend vdpa op vhost-vdpa: uAPI to suspend the device vhost-vdpa: introduce SUSPEND backend feature bit vdpa: Add suspend operation virtio-blk: Avoid use-after-free on suspend/resume virtio_vdpa: support the arg sizes of find_vqs() vhost-vdpa: Call ida_simple_remove() when failed vDPA: fix 'cast to restricted le16' warnings in vdpa.c vDPA: !FEATURES_OK should not block querying device config space vDPA/ifcvf: support userspace to query features and MQ of a management device vDPA/ifcvf: get_config_size should return a value no greater than dev implementation vhost scsi: Allow user to control num virtqueues vhost-scsi: Fix max number of virtqueues vdpa/mlx5: Support different address spaces for control and data vdpa/mlx5: Implement susupend virtqueue callback ...
This commit is contained in:
commit
7a53e17acc
51 changed files with 2171 additions and 556 deletions
|
@ -210,6 +210,53 @@ struct vduse_vq_eventfd {
|
|||
*/
|
||||
#define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
|
||||
|
||||
/**
|
||||
* struct vduse_iova_umem - userspace memory configuration for one IOVA region
|
||||
* @uaddr: start address of userspace memory, it must be aligned to page size
|
||||
* @iova: start of the IOVA region
|
||||
* @size: size of the IOVA region
|
||||
* @reserved: for future use, needs to be initialized to zero
|
||||
*
|
||||
* Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM
|
||||
* ioctls to register/de-register userspace memory for IOVA regions
|
||||
*/
|
||||
struct vduse_iova_umem {
|
||||
__u64 uaddr;
|
||||
__u64 iova;
|
||||
__u64 size;
|
||||
__u64 reserved[3];
|
||||
};
|
||||
|
||||
/* Register userspace memory for IOVA regions */
|
||||
#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
|
||||
|
||||
/* De-register the userspace memory. Caller should set iova and size field. */
|
||||
#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
|
||||
|
||||
/**
|
||||
* struct vduse_iova_info - information of one IOVA region
|
||||
* @start: start of the IOVA region
|
||||
* @last: last of the IOVA region
|
||||
* @capability: capability of the IOVA regsion
|
||||
* @reserved: for future use, needs to be initialized to zero
|
||||
*
|
||||
* Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of
|
||||
* one IOVA region.
|
||||
*/
|
||||
struct vduse_iova_info {
|
||||
__u64 start;
|
||||
__u64 last;
|
||||
#define VDUSE_IOVA_CAP_UMEM (1 << 0)
|
||||
__u64 capability;
|
||||
__u64 reserved[3];
|
||||
};
|
||||
|
||||
/*
|
||||
* Find the first IOVA region that overlaps with the range [start, last]
|
||||
* and return some information on it. Caller should set start and last fields.
|
||||
*/
|
||||
#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
|
||||
|
||||
/* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */
|
||||
|
||||
/**
|
||||
|
|
|
@ -171,4 +171,13 @@
|
|||
#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, \
|
||||
struct vhost_vring_state)
|
||||
|
||||
/* Suspend a device so it does not process virtqueue requests anymore
|
||||
*
|
||||
* After the return of ioctl the device must preserve all the necessary state
|
||||
* (the virtqueue vring base plus the possible device specific states) that is
|
||||
* required for restoring in the future. The device must not change its
|
||||
* configuration after that point.
|
||||
*/
|
||||
#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -161,5 +161,7 @@ struct vhost_vdpa_iova_range {
|
|||
* message
|
||||
*/
|
||||
#define VHOST_BACKEND_F_IOTLB_ASID 0x3
|
||||
/* Device can be suspended */
|
||||
#define VHOST_BACKEND_F_SUSPEND 0x4
|
||||
|
||||
#endif
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
* rest are per-device feature bits.
|
||||
*/
|
||||
#define VIRTIO_TRANSPORT_F_START 28
|
||||
#define VIRTIO_TRANSPORT_F_END 38
|
||||
#define VIRTIO_TRANSPORT_F_END 41
|
||||
|
||||
#ifndef VIRTIO_CONFIG_NO_LEGACY
|
||||
/* Do we get callbacks when the ring is completely used, even if we've
|
||||
|
@ -98,4 +98,9 @@
|
|||
* Does the device support Single Root I/O Virtualization?
|
||||
*/
|
||||
#define VIRTIO_F_SR_IOV 37
|
||||
|
||||
/*
|
||||
* This feature indicates that the driver can reset a queue individually.
|
||||
*/
|
||||
#define VIRTIO_F_RING_RESET 40
|
||||
#endif /* _UAPI_LINUX_VIRTIO_CONFIG_H */
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
#define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow
|
||||
* Steering */
|
||||
#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */
|
||||
|
||||
#define VIRTIO_NET_F_NOTF_COAL 53 /* Guest can handle notifications coalescing */
|
||||
#define VIRTIO_NET_F_HASH_REPORT 57 /* Supports hash report */
|
||||
#define VIRTIO_NET_F_RSS 60 /* Supports RSS RX steering */
|
||||
#define VIRTIO_NET_F_RSC_EXT 61 /* extended coalescing info */
|
||||
|
@ -355,4 +355,36 @@ struct virtio_net_hash_config {
|
|||
#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
|
||||
#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
|
||||
|
||||
/*
|
||||
* Control notifications coalescing.
|
||||
*
|
||||
* Request the device to change the notifications coalescing parameters.
|
||||
*
|
||||
* Available with the VIRTIO_NET_F_NOTF_COAL feature bit.
|
||||
*/
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL 6
|
||||
/*
|
||||
* Set the tx-usecs/tx-max-packets patameters.
|
||||
* tx-usecs - Maximum number of usecs to delay a TX notification.
|
||||
* tx-max-packets - Maximum number of packets to send before a TX notification.
|
||||
*/
|
||||
struct virtio_net_ctrl_coal_tx {
|
||||
__le32 tx_max_packets;
|
||||
__le32 tx_usecs;
|
||||
};
|
||||
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
|
||||
|
||||
/*
|
||||
* Set the rx-usecs/rx-max-packets patameters.
|
||||
* rx-usecs - Maximum number of usecs to delay a RX notification.
|
||||
* rx-max-frames - Maximum number of packets to receive before a RX notification.
|
||||
*/
|
||||
struct virtio_net_ctrl_coal_rx {
|
||||
__le32 rx_max_packets;
|
||||
__le32 rx_usecs;
|
||||
};
|
||||
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
|
||||
|
||||
#endif /* _UAPI_LINUX_VIRTIO_NET_H */
|
||||
|
|
|
@ -202,6 +202,8 @@ struct virtio_pci_cfg_cap {
|
|||
#define VIRTIO_PCI_COMMON_Q_AVAILHI 44
|
||||
#define VIRTIO_PCI_COMMON_Q_USEDLO 48
|
||||
#define VIRTIO_PCI_COMMON_Q_USEDHI 52
|
||||
#define VIRTIO_PCI_COMMON_Q_NDATA 56
|
||||
#define VIRTIO_PCI_COMMON_Q_RESET 58
|
||||
|
||||
#endif /* VIRTIO_PCI_NO_MODERN */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue