[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [RESEND Patch v1 09/37] vhost-pci-slave/msg: VHOST_USER_GET_PROTOCOL_FEATURES
Add a new protocol feature, VHOST_USER_PROTOCOL_F_VHOST_PCI. This feature indicates the support of the vhost-pci extension for inter-vm communiaction. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- hw/virtio/vhost-pci-slave.c | 16 ++++++++++++++++ include/hw/virtio/vhost-user.h | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/hw/virtio/vhost-pci-slave.c b/hw/virtio/vhost-pci-slave.c index 68ab4ec..05255d1 100644 --- a/hw/virtio/vhost-pci-slave.c +++ b/hw/virtio/vhost-pci-slave.c @@ -62,6 +62,16 @@ static void vp_slave_event(void *opaque, int event) } } +static int vp_slave_get_protocol_features(CharBackend *chr_be, + VhostUserMsg *msg) +{ + msg->payload.u64 = VHOST_USER_PROTOCOL_FEATURES; + msg->size = sizeof(msg->payload.u64); + msg->flags |= VHOST_USER_REPLY_MASK; + + return vp_slave_write(chr_be, msg); +} + static int vp_slave_can_read(void *opaque) { return VHOST_USER_HDR_SIZE; @@ -105,6 +115,12 @@ static void vp_slave_read(void *opaque, const uint8_t *buf, int size) case VHOST_USER_SET_FEATURES: vp_slave_set_features(&msg); break; + case VHOST_USER_GET_PROTOCOL_FEATURES: + ret = vp_slave_get_protocol_features(chr_be, &msg); + if (ret < 0) { + goto err_handling; + } + break; default: error_report("vhost-pci-slave does not support msg request = %d", msg.request); diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index 8d43ffc..ad5eac9 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -11,12 +11,18 @@ enum VhostUserProtocolFeature { VHOST_USER_PROTOCOL_F_LOG_SHMFD = 1, VHOST_USER_PROTOCOL_F_RARP = 2, VHOST_USER_PROTOCOL_F_REPLY_ACK = 3, + VHOST_USER_PROTOCOL_F_VHOST_PCI = 4, VHOST_USER_PROTOCOL_F_MAX }; #define VHOST_USER_PROTOCOL_FEATURE_MASK ((1 << VHOST_USER_PROTOCOL_F_MAX) - 1) +#define VHOST_USER_PROTOCOL_FEATURES ((1ULL << VHOST_USER_PROTOCOL_F_MQ) | \ + (1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD) | \ + (1ULL << VHOST_USER_PROTOCOL_F_RARP) | \ + (1ULL << VHOST_USER_PROTOCOL_F_VHOST_PCI)) + typedef enum VhostUserRequest { VHOST_USER_NONE = 0, VHOST_USER_GET_FEATURES = 1, -- 2.7.4
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]