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

Yuanhan Liu yuanhan.liu at linux.intel.com
Thu Nov 19 07:31:37 CET 2015


On Thu, Nov 19, 2015 at 02:58:56PM +0900, Tetsuya Mukawa wrote:
> On 2015/11/19 14:45, Yuanhan Liu wrote:
> > On Thu, Nov 19, 2015 at 02:14:13PM +0900, Tetsuya Mukawa wrote:
> >> On 2015/11/19 12:33, Yuanhan Liu wrote:
> >>> On Thu, Nov 19, 2015 at 12:13:38PM +0900, Tetsuya Mukawa wrote:
> >>>> On 2015/11/19 11:18, Yuanhan Liu wrote:
> >>>>> On Thu, Nov 19, 2015 at 11:03:50AM +0900, Tetsuya Mukawa wrote:
> >>>>>> On 2015/11/17 22:29, Yuanhan Liu wrote:
> >>>>>>> On Fri, Nov 13, 2015 at 02:20:30PM +0900, Tetsuya Mukawa wrote:
> >>>>>>>> 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.
> >>>>>>> Can you be more specific about this?
> >>>>>>>
> >>>>>>> 	--yliu
> >>>>>> How about like below?
> >>>>>>
> >>>>>> commit log:
> >>>>>> Currently, when virtio device is created and destroyed, vhost library
> >>>>>> will call one of callback handlers.
> >>>>>> The vhost PMD need to use this pair of callback handlers to know which
> >>>>>> virtio devices are connected actually.
> >>>>>> Because we can register only one pair of callbacks to vhost library, if
> >>>>>> the PMD use it, DPDK applications
> >>>>>> cannot have a way to know the events.
> >>>>> Will (and why) the two co-exist at same time?
> >>>> Yes it is. Sure, I will describe below in commit log.
> >>>>
> >>>> Because we cannot map some of vhost library APIs to ethdev APIs, in some
> >>>> cases, we still
> >>>> need to use vhost library APIs for a port created by the vhost PMD. One
> >>>> of example is
> >>>> rte_vhost_enable_guest_notification().
> >>> I don't get it why it has something to do with a standalone PMD callback.
> >>> And if you don't call rte_vhost_enable_guest_notification() inside vhost
> >>> PMD, where else can you call that? I mean, you can't start vhost-pmd
> >>> and vhost-swithc in the mean time, right?
> >> No it's not true, even after connecting to virtio-net device, you can
> >> change the flag.
> >> It's just a hint for virtio-net driver, and it will be used while queuing.
> >> (We may be able to change the flag, even while sending or receiving packets)
> >>
> >>> And, pmd callback and the old notify callback will not exist at same
> >>> time in one case, right? If so, why is that needed?
> >>>
> >>> BTW, if it's a MUST, would you provide a specific example?
> >> Actually, this patch is not a MUST.
> >>
> >> But still the users need callback handlers to know when virtio-net
> >> device is connected or disconnected.
> >> This is because the user can call rte_vhost_enable_guest_notification()
> >> only while connection is established.
> > What does "the user" mean? Is there a second user of vhost lib besides
> > vhost PMD, that he has to interact with those connected devices? If so,
> > how?
> 
> Sorry, my English is wrong.
> Not a second user.
> 
> For example, If DPDK application has a port created by vhost PMD, then
> needs to call rte_vhost_enable_guest_notification() to the port.

So, you are mixing the usage of vhost PMD and vhost lib in a DPDK
application? Say,

        DPDK application
               start_vhost_pmd
                      rte_vhost_driver_pmd_callback_register
               rte_vhost_driver_callback_register

I know little about PMD, and not quite sure it's a good combo.

Huawei, comments?

	--yliu

> DPDK application needs to know when virtio-net device is connected or
> disconnected, because the function is only valid while connecting.
> But without callback handler, DPDK application cannot know it.
> 
> This is what I wanted to explain.
> 
> Thanks,
> Tetsuya
> 
> > 	--yliu
> >> Probably we can use link status changed callback of the PMD for this
> >> purpose.
> >> (The vhost PMD will notice DPDK application using link status callback)
> >>
> >> But I am not sure whether we need to implement link status changed
> >> callback for this purpose.
> >> While processing this callback handler, the users will only calls vhost
> >> library APIs that ethdev API cannot map, or store some variables related
> >> with vhost library.
> >> If so, this callback handler itself is specific for using vhost library.
> >> And it may be ok that callback itself is implemented as one of vhost
> >> library APIs.
> >>
> >> Tetsuya
> >>
> >>> 	--yliu
> >>>> Thanks,
> >>>> Tetsuya
> >>>>
> >>>>
> >>>>> 	--yliu
> >>>>>
> >>>>>> This may break legacy DPDK
> >>>>>> applications that uses vhost library.
> >>>>>> To prevent it, this patch adds one more pair of callbacks to vhost
> >>>>>> library especially for the vhost PMD.
> >>>>>> With the patch, legacy applications can use the vhost PMD even if they
> >>>>>> need additional specific handling
> >>>>>> for virtio device creation and destruction.
> >>>>>> For example, legacy application can call
> >>>>>> rte_vhost_enable_guest_notification() in callbacks to change setting.
> >>>>>>
> >>>>>> Tetsuya


More information about the dev mailing list