vhost: support IOTLB miss slave requests
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
This commit is contained in:
parent
f72c2ad63a
commit
01a4bb55f9
@ -1168,3 +1168,29 @@ vhost_user_msg_handler(int vid, int fd)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
vhost_user_iotlb_miss(struct virtio_net *dev, uint64_t iova, uint8_t perm)
|
||||
{
|
||||
int ret;
|
||||
struct VhostUserMsg msg = {
|
||||
.request = (enum VhostUserRequest)VHOST_USER_SLAVE_IOTLB_MSG,
|
||||
.flags = VHOST_USER_VERSION,
|
||||
.size = sizeof(msg.payload.iotlb),
|
||||
.payload.iotlb = {
|
||||
.iova = iova,
|
||||
.perm = perm,
|
||||
.type = VHOST_IOTLB_MISS,
|
||||
},
|
||||
};
|
||||
|
||||
ret = send_vhost_message(dev->slave_req_fd, &msg);
|
||||
if (ret < 0) {
|
||||
RTE_LOG(ERR, VHOST_CONFIG,
|
||||
"Failed to send IOTLB miss message (%d)\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -85,6 +85,7 @@ typedef enum VhostUserRequest {
|
||||
|
||||
typedef enum VhostUserSlaveRequest {
|
||||
VHOST_USER_SLAVE_NONE = 0,
|
||||
VHOST_USER_SLAVE_IOTLB_MSG = 1,
|
||||
VHOST_USER_SLAVE_MAX
|
||||
} VhostUserSlaveRequest;
|
||||
|
||||
@ -122,6 +123,7 @@ typedef struct VhostUserMsg {
|
||||
struct vhost_vring_addr addr;
|
||||
VhostUserMemory memory;
|
||||
VhostUserLog log;
|
||||
struct vhost_iotlb_msg iotlb;
|
||||
} payload;
|
||||
int fds[VHOST_MEMORY_MAX_NREGIONS];
|
||||
} __attribute((packed)) VhostUserMsg;
|
||||
@ -134,6 +136,7 @@ typedef struct VhostUserMsg {
|
||||
|
||||
/* vhost_user.c */
|
||||
int vhost_user_msg_handler(int vid, int fd);
|
||||
int vhost_user_iotlb_miss(struct virtio_net *dev, uint64_t iova, uint8_t perm);
|
||||
|
||||
/* socket.c */
|
||||
int read_fd_message(int sockfd, char *buf, int buflen, int *fds, int fd_num);
|
||||
|
Loading…
Reference in New Issue
Block a user