@@ -67,6 +67,15 @@ 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;
@@ -108,6 +117,11 @@ 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);
@@ -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,
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 | 14 ++++++++++++++ include/hw/virtio/vhost-user.h | 6 ++++++ 2 files changed, 20 insertions(+)