[dpdk-dev] [PATCH 05/21] vhost: add support to slave requests channel
Maxime Coquelin
maxime.coquelin at redhat.com
Tue Sep 5 10:18:33 CEST 2017
On 09/05/2017 06:19 AM, Tiwei Bie wrote:
> On Thu, Aug 31, 2017 at 11:50:07AM +0200, Maxime Coquelin wrote:
>> Currently, only QEMU sends requests, the backend sends
>> replies. In some cases, the backend may need to send
>> requests to QEMU, like IOTLB miss events when IOMMU is
>> supported.
>>
>> This patch introduces a new channel for such requests.
>> QEMU sends a file descriptor of a new socket using
>> VHOST_USER_SET_SLAVE_REQ_FD.
>>
>> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
>> ---
>> lib/librte_vhost/vhost.h | 2 ++
>> lib/librte_vhost/vhost_user.c | 27 +++++++++++++++++++++++++++
>> lib/librte_vhost/vhost_user.h | 10 +++++++++-
>> 3 files changed, 38 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
>> index 18ad69c85..2340b0c2a 100644
>> --- a/lib/librte_vhost/vhost.h
>> +++ b/lib/librte_vhost/vhost.h
>> @@ -196,6 +196,8 @@ struct virtio_net {
>> uint32_t nr_guest_pages;
>> uint32_t max_guest_pages;
>> struct guest_page *guest_pages;
>> +
>> + int slave_req_fd;
>> } __rte_cache_aligned;
>>
>>
>> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
>> index 8984dcb6a..7b3c2f32a 100644
>> --- a/lib/librte_vhost/vhost_user.c
>> +++ b/lib/librte_vhost/vhost_user.c
>> @@ -76,6 +76,7 @@ static const char *vhost_message_str[VHOST_USER_MAX] = {
>> [VHOST_USER_SET_VRING_ENABLE] = "VHOST_USER_SET_VRING_ENABLE",
>> [VHOST_USER_SEND_RARP] = "VHOST_USER_SEND_RARP",
>> [VHOST_USER_NET_SET_MTU] = "VHOST_USER_NET_SET_MTU",
>> + [VHOST_USER_SET_SLAVE_REQ_FD] = "VHOST_USER_SET_SLAVE_REQ_FD",
>> };
>>
>> static uint64_t
>> @@ -122,6 +123,11 @@ vhost_backend_cleanup(struct virtio_net *dev)
>> munmap((void *)(uintptr_t)dev->log_addr, dev->log_size);
>> dev->log_addr = 0;
>> }
>> +
>> + if (dev->slave_req_fd >= 0) {
>> + close(dev->slave_req_fd);
>> + dev->slave_req_fd = -1;
>
> The slave_req_fd should also be initialized to -1 when allocating
> the virtio_net structure. Currently, it's missing.
Good catch, thanks for spotting this.
Maxime
> Best regards,
> Tiwei Bie
>
More information about the dev
mailing list