[dpdk-dev] [PATCH v3 1/2] vhost: Add callback and private data for vhost PMD

Panu Matilainen pmatilai at redhat.com
Tue Nov 10 11:05:17 CET 2015


On 11/10/2015 11:48 AM, Tetsuya Mukawa wrote:
> On 2015/11/10 16:16, Panu Matilainen wrote:
>> On 11/10/2015 05:13 AM, Tetsuya Mukawa wrote:
>>> On 2015/11/10 3:16, Aaron Conole wrote:
>>>> Greetings,
>>>>
>>>> Tetsuya Mukawa <mukawa at igel.co.jp> writes:
>>>>> These variables are needed to be able to manage one of virtio devices
>>>>> using both vhost library APIs and vhost PMD.
>>>>> For example, if vhost PMD uses current callback handler and private
>>>>> data
>>>>> provided by vhost library, A DPDK application that links vhost library
>>>>> cannot use some of vhost library APIs. To avoid it, callback and
>>>>> private
>>>>> data for vhost PMD are needed.
>>>>>
>>>>> Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp>
>>>>> ---
>>>>>    lib/librte_vhost/rte_vhost_version.map        |  6 +++
>>>>>    lib/librte_vhost/rte_virtio_net.h             |  3 ++
>>>>>    lib/librte_vhost/vhost_user/virtio-net-user.c | 13 +++----
>>>>>    lib/librte_vhost/virtio-net.c                 | 56
>>>>> +++++++++++++++++++++++++--
>>>>>    lib/librte_vhost/virtio-net.h                 |  4 +-
>>>>>    5 files changed, 70 insertions(+), 12 deletions(-)
>>>>>
>>>>> diff --git a/lib/librte_vhost/rte_vhost_version.map
>>>>> b/lib/librte_vhost/rte_vhost_version.map
>>>>> index 3d8709e..00a9ce5 100644
>>>>> --- a/lib/librte_vhost/rte_vhost_version.map
>>>>> +++ b/lib/librte_vhost/rte_vhost_version.map
>>>>> @@ -20,3 +20,9 @@ DPDK_2.1 {
>>>>>        rte_vhost_driver_unregister;
>>>>>
>>>>>    } DPDK_2.0;
>>>>> +
>>>>> +DPDK_2.2 {
>>>>> +    global:
>>>>> +
>>>>> +    rte_vhost_driver_pmd_callback_register;
>>>>> +} DPDK_2.1;
>>>>> diff --git a/lib/librte_vhost/rte_virtio_net.h
>>>>> b/lib/librte_vhost/rte_virtio_net.h
>>>>> index 5687452..3ef6e58 100644
>>>>> --- a/lib/librte_vhost/rte_virtio_net.h
>>>>> +++ b/lib/librte_vhost/rte_virtio_net.h
>>>>> @@ -128,6 +128,7 @@ struct virtio_net {
>>>>>        char            ifname[IF_NAME_SZ];    /**< Name of the tap
>>>>> device or socket path. */
>>>>>        uint32_t        virt_qp_nb;    /**< number of queue pair we
>>>>> have allocated */
>>>>>        void            *priv;        /**< private context */
>>>>> +    void            *pmd_priv;    /**< private context for vhost
>>>>> PMD */
>>>>>        struct vhost_virtqueue    *virtqueue[VHOST_MAX_QUEUE_PAIRS *
>>>>> 2];    /**< Contains all virtqueue information. */
>>>>>    } __rte_cache_aligned;
>>>> Sorry if I'm missing something, but this is an ABI breaker, isn't it? I
>>>> think this needs the RTE_NEXT_ABI tag around it.
>>>
>>> Hi Aaron,
>>>
>>> Thanks for reviewing. Yes, your are correct.
>>> I guess I can implement vhost PMD without this variable, so I will
>>> remove it.
>>
>> No need to.
>>
>> The librte_vhost ABI has already been broken during the DPDK 2.2 cycle
>> by the multiqueue changes, but that's okay since it was announced
>> during 2.1 cycle (in commit 3c848bd7b1c6f4f681b833322a748fdefbb5fb2d).
>>
>> What is missing right now is bumping the library version, and that
>> must happen before 2.2 is released.
>>
>>      - Panu -
>>
>>
>
> Hi Panu,
>
> Thank you so much. Let me make sure what you mean.
> I guess I need to add RTE_NEXT_ABI tags where pmd_priv is used. This is
> because we don't break DPDK-2.1 ABI.
> Anyway, the tag will be removed when DPDK-2.2 is released, then we can
> use vhost PMD.
> Is this correct?

Not quite. Because the ABI has already been broken between 2.1 and 2.2, 
you can ride the same wave without messing with NEXT_ABI and such.

Like said, librte_vhost is pending a LIBABIVER bump to 2, but that is 
regardless of this patch.

	- Panu -



More information about the dev mailing list