[dpdk-dev] [dpdk-users] IGB_UIO: PCI Resources Management

Alejandro Lucero alejandro.lucero at netronome.com
Thu Jan 19 21:33:53 CET 2017


On Thu, Jan 19, 2017 at 4:36 PM, Ferruh Yigit <ferruh.yigit at intel.com>
wrote:

> On 1/13/2017 11:10 AM, Alejandro Lucero wrote:
> > I completely misread the patch, and I wrongly thought that code was
> > linked to module removal, but I see this is not about that, but about
> > releasing the /dev/uio file calling release function, what is done by
> > the kernel when the process exits.
> >
> > So yes, the patch avoids the problem I talked about.
> >
> > However, calling that specific ixgbe driver function will break other
> > devices relying on igb_uio. What about implementing a notifier chain for
> > this? The igb_uio code would be agnostic and each interested driver,
> > like ixgbe or nfp_net, could execute the specific port close code when
> > the notifier chain triggers.
>
> Can you please elaborate, how can this be done?
> This is kernel code, and interested drivers are in userspace. This patch
> benefit from Linux kernel driver of same device.
>
>
The patch seems to add  a function to the ixgve_vf kernel driver which will
be called from igb_uio. The patch does not show the usual path to the
kernel ethernet drivers because, I guess, it is a patch for a specific
software build. So the interested drivers are not in user space, and a
driver, igb_uio, calling a userspace function? No way.

Any netdev driver interested to close ports, those left working by a
crashed DPDK app, could register a notifier like this:


int device_notifier(struct notifier_block *nb, unsigned long action, void
*data) {

...
    if (action == NETDEV_GOING_DOWN) {

...
}


struct notifier_block device_nb = {
   .notifier_call =device_notifier,
};

...

register_netdev_notifer(&device_nb);

...


Inside igb_uio, something like this:

raw_notifier_call_chain(&netdev_chain, val, dev);

which would trigger the invocation of all registered notifier functions.

Please, note that this is just a possibility, and the notifier chain to use
could not be the best one, same for the event NETDEV_GOING_DOWN.

Also, how can the drivers know if that event is for them?, This is
something to work on.

Because UIO is part of the kernel, maybe it could be pushed a specific
chain for this purpose if we can not use any currently available.


> >
> >
> > On Fri, Jan 13, 2017 at 5:33 AM, Tan, Jianfeng <jianfeng.tan at intel.com
> > <mailto:jianfeng.tan at intel.com>> wrote:
> >
> >
> >
> >     > -----Original Message-----
> >     > From: Yigit, Ferruh
> >     > Sent: Friday, January 13, 2017 10:05 AM
> >     > To: Tan, Jianfeng; Alejandro Lucero
> >     > Cc: Gregory Etelson; dev; users at dpdk.org <mailto:users at dpdk.org>
> >     > Subject: Re: [dpdk-users] [dpdk-dev] IGB_UIO: PCI Resources
> Management
> >     >
> >     > On 1/13/2017 1:51 AM, Tan, Jianfeng wrote:
> >     > >
> >     > >
> >     > >> -----Original Message-----
> >     > >> From: users [mailto:users-bounces at dpdk.org
> >     <mailto:users-bounces at dpdk.org>] On Behalf Of Ferruh Yigit
> >     > >> Sent: Thursday, January 12, 2017 8:22 PM
> >     > >> To: Alejandro Lucero
> >     > >> Cc: Gregory Etelson; dev; users at dpdk.org <mailto:users at dpdk.org
> >
> >     > >> Subject: Re: [dpdk-users] [dpdk-dev] IGB_UIO: PCI Resources
> >     > Management
> >     > >>
> >     > >> On 1/12/2017 12:12 PM, Alejandro Lucero wrote:
> >     > >>>
> >     > >>>
> >     > >>> On Thu, Jan 12, 2017 at 11:55 AM, Ferruh Yigit
> >     <ferruh.yigit at intel.com <mailto:ferruh.yigit at intel.com>
> >     > >>> <mailto:ferruh.yigit at intel.com
> >     <mailto:ferruh.yigit at intel.com>>> wrote:
> >     > >>>
> >     > >>>     On 12/9/2016 8:54 AM, Gregory Etelson wrote:
> >     > >>>     > Hello,
> >     > >>>     >
> >     > >>>     > IGB_UIO driver does not close port PCI activities after
> >     DPDK process
> >     > >> exits.
> >     > >>>     > DPDK API provides rte_eth_dev_close() to manage port PCI,
> >     > >>>     > but it can be skipped if process receives SIGKILL signal
> >     > >>>
> >     > >>>     I guess I understand the problem.
> >     > >>>
> >     > >>>
> >     > >>> This is a known problem, but it is not just a UIO problem, and
> >     this
> >     > >>> patch does not solve it, maybe it just solves part of it.
> >     > >>>
> >     > >>> In fact, a DPDK program crashing could imply the NIC DMAing
> >     after that
> >     > >>> and after that memory was assigned to another program.
> >     > >>
> >     > >> Yes.
> >     > >> Can there be a way to stop NIC DMA, (or prevent it access to mem
> >     > >> anymore) when app crashes?
> >     > >> I think that is what this patch is looking for.
> >     > >
> >     > > If I understand it correctly, you are looking for this patch?
> >     > > http://dpdk.org/dev/patchwork/patch/17495/
> >     <http://dpdk.org/dev/patchwork/patch/17495/>
> >     > >
> >     >
> >     > That is good, thanks Jianfeng, I will check it.
> >     >
> >     > btw, patch's current state is rejected, which is by mistake, it
> >     seems I
> >     > confused it with "iomem and ioport mapping" patch, sorry about it,
> I
> >     > will update its status immediately.
> >
> >     No problem at all. This patch is rejected as it's based on "iomem
> >     and ioport mapping" patch. As "iomem and ioport mapping" patch has
> >     backward compatibility issue, we need to figure out a way to
> >     resubmit this patch without changing the original "iomem and ioport
> >     mapping" in igb_uio.
> >
> >     Thanks,
> >     Jianfeng
> >
> >
>
>


More information about the dev mailing list