Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
Pull virtio updates from Michael Tsirkin: - vdpa generic device type support - more virtio hardening for broken devices (but on the same theme, revert some virtio hotplug hardening patches - they were misusing some interrupt flags and had to be reverted) - RSS support in virtio-net - max device MTU support in mlx5 vdpa - akcipher support in virtio-crypto - shared IRQ support in ifcvf vdpa - a minor performance improvement in vhost - enable virtio mem for ARM64 - beginnings of advance dma support - cleanups, fixes all over the place * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (33 commits) vdpa/mlx5: Avoid processing works if workqueue was destroyed vhost: handle error while adding split ranges to iotlb vdpa: support exposing the count of vqs to userspace vdpa: change the type of nvqs to u32 vdpa: support exposing the config size to userspace vdpa/mlx5: re-create forwarding rules after mac modified virtio: pci: check bar values read from virtio config space Revert "virtio_pci: harden MSI-X interrupts" Revert "virtio-pci: harden INTX interrupts" drivers/net/virtio_net: Added RSS hash report control. drivers/net/virtio_net: Added RSS hash report. drivers/net/virtio_net: Added basic RSS support. drivers/net/virtio_net: Fixed padded vheader to use v1 with hash. virtio: use virtio_device_ready() in virtio_device_restore() tools/virtio: compile with -pthread tools/virtio: fix after premapped buf support virtio_ring: remove flags check for unmap packed indirect desc virtio_ring: remove flags check for unmap split indirect desc virtio_ring: rename vring_unmap_state_packed() to vring_unmap_extra_packed() net/mlx5: Add support for configuring max device MTU ...
This commit is contained in:
@@ -150,4 +150,11 @@
|
||||
/* Get the valid iova range */
|
||||
#define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, \
|
||||
struct vhost_vdpa_iova_range)
|
||||
|
||||
/* Get the config size */
|
||||
#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
|
||||
|
||||
/* Get the count of all virtqueues */
|
||||
#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -82,6 +82,12 @@
|
||||
/* This feature indicates support for the packed virtqueue layout. */
|
||||
#define VIRTIO_F_RING_PACKED 34
|
||||
|
||||
/*
|
||||
* Inorder feature indicates that all buffers are used by the device
|
||||
* in the same order in which they have been made available.
|
||||
*/
|
||||
#define VIRTIO_F_IN_ORDER 35
|
||||
|
||||
/*
|
||||
* This feature indicates that memory accesses by the driver and the
|
||||
* device are ordered in a way described by the platform.
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define VIRTIO_CRYPTO_SERVICE_HASH 1
|
||||
#define VIRTIO_CRYPTO_SERVICE_MAC 2
|
||||
#define VIRTIO_CRYPTO_SERVICE_AEAD 3
|
||||
#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
|
||||
|
||||
#define VIRTIO_CRYPTO_OPCODE(service, op) (((service) << 8) | (op))
|
||||
|
||||
@@ -57,6 +58,10 @@ struct virtio_crypto_ctrl_header {
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
|
||||
#define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
|
||||
__le32 opcode;
|
||||
__le32 algo;
|
||||
__le32 flag;
|
||||
@@ -180,6 +185,58 @@ struct virtio_crypto_aead_create_session_req {
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_rsa_session_para {
|
||||
#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
|
||||
#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
|
||||
__le32 padding_algo;
|
||||
|
||||
#define VIRTIO_CRYPTO_RSA_NO_HASH 0
|
||||
#define VIRTIO_CRYPTO_RSA_MD2 1
|
||||
#define VIRTIO_CRYPTO_RSA_MD3 2
|
||||
#define VIRTIO_CRYPTO_RSA_MD4 3
|
||||
#define VIRTIO_CRYPTO_RSA_MD5 4
|
||||
#define VIRTIO_CRYPTO_RSA_SHA1 5
|
||||
#define VIRTIO_CRYPTO_RSA_SHA256 6
|
||||
#define VIRTIO_CRYPTO_RSA_SHA384 7
|
||||
#define VIRTIO_CRYPTO_RSA_SHA512 8
|
||||
#define VIRTIO_CRYPTO_RSA_SHA224 9
|
||||
__le32 hash_algo;
|
||||
};
|
||||
|
||||
struct virtio_crypto_ecdsa_session_para {
|
||||
#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
|
||||
__le32 curve_id;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_AKCIPHER 0
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
|
||||
__le32 algo;
|
||||
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
|
||||
__le32 keytype;
|
||||
__le32 keylen;
|
||||
|
||||
union {
|
||||
struct virtio_crypto_rsa_session_para rsa;
|
||||
struct virtio_crypto_ecdsa_session_para ecdsa;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_create_session_req {
|
||||
struct virtio_crypto_akcipher_session_para para;
|
||||
__u8 padding[36];
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_session_para {
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
|
||||
@@ -247,6 +304,8 @@ struct virtio_crypto_op_ctrl_req {
|
||||
mac_create_session;
|
||||
struct virtio_crypto_aead_create_session_req
|
||||
aead_create_session;
|
||||
struct virtio_crypto_akcipher_create_session_req
|
||||
akcipher_create_session;
|
||||
struct virtio_crypto_destroy_session_req
|
||||
destroy_session;
|
||||
__u8 padding[56];
|
||||
@@ -266,6 +325,14 @@ struct virtio_crypto_op_header {
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
|
||||
#define VIRTIO_CRYPTO_AEAD_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_SIGN \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_VERIFY \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
|
||||
__le32 opcode;
|
||||
/* algo should be service-specific algorithms */
|
||||
__le32 algo;
|
||||
@@ -390,6 +457,16 @@ struct virtio_crypto_aead_data_req {
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_para {
|
||||
__le32 src_data_len;
|
||||
__le32 dst_data_len;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_data_req {
|
||||
struct virtio_crypto_akcipher_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
/* The request of the data virtqueue's packet */
|
||||
struct virtio_crypto_op_data_req {
|
||||
struct virtio_crypto_op_header header;
|
||||
@@ -399,6 +476,7 @@ struct virtio_crypto_op_data_req {
|
||||
struct virtio_crypto_hash_data_req hash_req;
|
||||
struct virtio_crypto_mac_data_req mac_req;
|
||||
struct virtio_crypto_aead_data_req aead_req;
|
||||
struct virtio_crypto_akcipher_data_req akcipher_req;
|
||||
__u8 padding[48];
|
||||
} u;
|
||||
};
|
||||
@@ -408,6 +486,8 @@ struct virtio_crypto_op_data_req {
|
||||
#define VIRTIO_CRYPTO_BADMSG 2
|
||||
#define VIRTIO_CRYPTO_NOTSUPP 3
|
||||
#define VIRTIO_CRYPTO_INVSESS 4 /* Invalid session id */
|
||||
#define VIRTIO_CRYPTO_NOSPC 5 /* no free session ID */
|
||||
#define VIRTIO_CRYPTO_KEY_REJECTED 6 /* Signature verification failed */
|
||||
|
||||
/* The accelerator hardware is ready */
|
||||
#define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
|
||||
@@ -438,7 +518,7 @@ struct virtio_crypto_config {
|
||||
__le32 max_cipher_key_len;
|
||||
/* Maximum length of authenticated key */
|
||||
__le32 max_auth_key_len;
|
||||
__le32 reserve;
|
||||
__le32 akcipher_algo;
|
||||
/* Maximum size of each crypto request's content */
|
||||
__le64 max_size;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user