Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
Pull virtio updates from Michael Tsirkin: - device feature provisioning in ifcvf, mlx5 - new SolidNET driver - support for zoned block device in virtio blk - numa support in virtio pmem - VIRTIO_F_RING_RESET support in vhost-net - more debugfs entries in mlx5 - resume support in vdpa - completion batching in virtio blk - cleanup of dma api use in vdpa - now simulating more features in vdpa-sim - documentation, features, fixes all over the place * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (64 commits) vdpa/mlx5: support device features provisioning vdpa/mlx5: make MTU/STATUS presence conditional on feature bits vdpa: validate device feature provisioning against supported class vdpa: validate provisioned device features against specified attribute vdpa: conditionally read STATUS in config space vdpa: fix improper error message when adding vdpa dev vdpa/mlx5: Initialize CVQ iotlb spinlock vdpa/mlx5: Don't clear mr struct on destroy MR vdpa/mlx5: Directly assign memory key tools/virtio: enable to build with retpoline vringh: fix a typo in comments for vringh_kiov vhost-vdpa: print warning when vhost_vdpa_alloc_domain fails scsi: virtio_scsi: fix handling of kmalloc failure vdpa: Fix a couple of spelling mistakes in some messages vhost-net: support VIRTIO_F_RING_RESET vhost-scsi: convert sysfs snprintf and sprintf to sysfs_emit vdpa: mlx5: support per virtqueue dma device vdpa: set dma mask for vDPA device virtio-vdpa: support per vq dma device vdpa: introduce get_vq_dma_device() ...
This commit is contained in:
@@ -180,4 +180,12 @@
|
||||
*/
|
||||
#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
|
||||
|
||||
/* Resume a device so it can resume processing virtqueue requests
|
||||
*
|
||||
* After the return of this ioctl the device will have restored all the
|
||||
* necessary states and it is fully operational to continue processing the
|
||||
* virtqueue descriptors.
|
||||
*/
|
||||
#define VHOST_VDPA_RESUME _IO(VHOST_VIRTIO, 0x7E)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -163,5 +163,7 @@ struct vhost_vdpa_iova_range {
|
||||
#define VHOST_BACKEND_F_IOTLB_ASID 0x3
|
||||
/* Device can be suspended */
|
||||
#define VHOST_BACKEND_F_SUSPEND 0x4
|
||||
/* Device can be resumed */
|
||||
#define VHOST_BACKEND_F_RESUME 0x5
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#define VIRTIO_BLK_F_DISCARD 13 /* DISCARD is supported */
|
||||
#define VIRTIO_BLK_F_WRITE_ZEROES 14 /* WRITE ZEROES is supported */
|
||||
#define VIRTIO_BLK_F_SECURE_ERASE 16 /* Secure Erase is supported */
|
||||
#define VIRTIO_BLK_F_ZONED 17 /* Zoned block device */
|
||||
|
||||
/* Legacy feature bits */
|
||||
#ifndef VIRTIO_BLK_NO_LEGACY
|
||||
@@ -137,6 +138,16 @@ struct virtio_blk_config {
|
||||
/* Secure erase commands must be aligned to this number of sectors. */
|
||||
__virtio32 secure_erase_sector_alignment;
|
||||
|
||||
/* Zoned block device characteristics (if VIRTIO_BLK_F_ZONED) */
|
||||
struct virtio_blk_zoned_characteristics {
|
||||
__le32 zone_sectors;
|
||||
__le32 max_open_zones;
|
||||
__le32 max_active_zones;
|
||||
__le32 max_append_sectors;
|
||||
__le32 write_granularity;
|
||||
__u8 model;
|
||||
__u8 unused2[3];
|
||||
} zoned;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
@@ -174,6 +185,27 @@ struct virtio_blk_config {
|
||||
/* Secure erase command */
|
||||
#define VIRTIO_BLK_T_SECURE_ERASE 14
|
||||
|
||||
/* Zone append command */
|
||||
#define VIRTIO_BLK_T_ZONE_APPEND 15
|
||||
|
||||
/* Report zones command */
|
||||
#define VIRTIO_BLK_T_ZONE_REPORT 16
|
||||
|
||||
/* Open zone command */
|
||||
#define VIRTIO_BLK_T_ZONE_OPEN 18
|
||||
|
||||
/* Close zone command */
|
||||
#define VIRTIO_BLK_T_ZONE_CLOSE 20
|
||||
|
||||
/* Finish zone command */
|
||||
#define VIRTIO_BLK_T_ZONE_FINISH 22
|
||||
|
||||
/* Reset zone command */
|
||||
#define VIRTIO_BLK_T_ZONE_RESET 24
|
||||
|
||||
/* Reset All zones command */
|
||||
#define VIRTIO_BLK_T_ZONE_RESET_ALL 26
|
||||
|
||||
#ifndef VIRTIO_BLK_NO_LEGACY
|
||||
/* Barrier before this op. */
|
||||
#define VIRTIO_BLK_T_BARRIER 0x80000000
|
||||
@@ -193,6 +225,72 @@ struct virtio_blk_outhdr {
|
||||
__virtio64 sector;
|
||||
};
|
||||
|
||||
/*
|
||||
* Supported zoned device models.
|
||||
*/
|
||||
|
||||
/* Regular block device */
|
||||
#define VIRTIO_BLK_Z_NONE 0
|
||||
/* Host-managed zoned device */
|
||||
#define VIRTIO_BLK_Z_HM 1
|
||||
/* Host-aware zoned device */
|
||||
#define VIRTIO_BLK_Z_HA 2
|
||||
|
||||
/*
|
||||
* Zone descriptor. A part of VIRTIO_BLK_T_ZONE_REPORT command reply.
|
||||
*/
|
||||
struct virtio_blk_zone_descriptor {
|
||||
/* Zone capacity */
|
||||
__le64 z_cap;
|
||||
/* The starting sector of the zone */
|
||||
__le64 z_start;
|
||||
/* Zone write pointer position in sectors */
|
||||
__le64 z_wp;
|
||||
/* Zone type */
|
||||
__u8 z_type;
|
||||
/* Zone state */
|
||||
__u8 z_state;
|
||||
__u8 reserved[38];
|
||||
};
|
||||
|
||||
struct virtio_blk_zone_report {
|
||||
__le64 nr_zones;
|
||||
__u8 reserved[56];
|
||||
struct virtio_blk_zone_descriptor zones[];
|
||||
};
|
||||
|
||||
/*
|
||||
* Supported zone types.
|
||||
*/
|
||||
|
||||
/* Conventional zone */
|
||||
#define VIRTIO_BLK_ZT_CONV 1
|
||||
/* Sequential Write Required zone */
|
||||
#define VIRTIO_BLK_ZT_SWR 2
|
||||
/* Sequential Write Preferred zone */
|
||||
#define VIRTIO_BLK_ZT_SWP 3
|
||||
|
||||
/*
|
||||
* Zone states that are available for zones of all types.
|
||||
*/
|
||||
|
||||
/* Not a write pointer (conventional zones only) */
|
||||
#define VIRTIO_BLK_ZS_NOT_WP 0
|
||||
/* Empty */
|
||||
#define VIRTIO_BLK_ZS_EMPTY 1
|
||||
/* Implicitly Open */
|
||||
#define VIRTIO_BLK_ZS_IOPEN 2
|
||||
/* Explicitly Open */
|
||||
#define VIRTIO_BLK_ZS_EOPEN 3
|
||||
/* Closed */
|
||||
#define VIRTIO_BLK_ZS_CLOSED 4
|
||||
/* Read-Only */
|
||||
#define VIRTIO_BLK_ZS_RDONLY 13
|
||||
/* Full */
|
||||
#define VIRTIO_BLK_ZS_FULL 14
|
||||
/* Offline */
|
||||
#define VIRTIO_BLK_ZS_OFFLINE 15
|
||||
|
||||
/* Unmap this range (only valid for write zeroes command) */
|
||||
#define VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP 0x00000001
|
||||
|
||||
@@ -219,4 +317,11 @@ struct virtio_scsi_inhdr {
|
||||
#define VIRTIO_BLK_S_OK 0
|
||||
#define VIRTIO_BLK_S_IOERR 1
|
||||
#define VIRTIO_BLK_S_UNSUPP 2
|
||||
|
||||
/* Error codes that are specific to zoned block devices */
|
||||
#define VIRTIO_BLK_S_ZONE_INVALID_CMD 3
|
||||
#define VIRTIO_BLK_S_ZONE_UNALIGNED_WP 4
|
||||
#define VIRTIO_BLK_S_ZONE_OPEN_RESOURCE 5
|
||||
#define VIRTIO_BLK_S_ZONE_ACTIVE_RESOURCE 6
|
||||
|
||||
#endif /* _LINUX_VIRTIO_BLK_H */
|
||||
|
||||
Reference in New Issue
Block a user