[dpdk-dev] i40e igb_uio: reset pci on process exit

Gregory Etelson gregory at weka.io
Mon May 29 12:01:06 CEST 2017


I still have to support Red Hat 6.x. These system do not have VFIO 
IGB_UIO is the only option there.

Also, there was a discussion that claimed IGB_UIO has better performance than VFIO.
http://dpdk.org/ml/archives/dev/2014-August/004609.html

Regards,
Gregory

 
On Monday, 29 May 2017 12:48:59 IDT Shijith Thotton wrote:
> On Fri, May 26, 2017 at 07:14:55PM +0300, Gregory Etelson wrote:
> >    I did not look into VFIO driver yet
> > 
> >     
> > 
> >    Regards,
> > 
> >    Gregory
> > 
> >     
> > 
> >    On Friday, 26 May 2017 18:53:21 IDT Stephen Hemminger wrote:
> > 
> >    > On Fri, 26 May 2017 09:17:33 +0300
> > 
> >    > Gregory Etelson <gregory at weka.io> wrote:
> > 
> >    >
> > 
> >    > > Thank you.
> > 
> >    > >
> > 
> >    > > Regards,
> > 
> >    > > Gregory
> > 
> >    > >
> > 
> >    > > On Friday, 26 May 2017 09:05:11 IDT Shijith Thotton wrote:
> > 
> >    > > > On Fri, May 26, 2017 at 07:30:58AM +0300, Gregory Etelson wrote:
> > 
> >    > > >
> > 
> >    > > > Hi Gregory,
> > 
> >    > > >
> > 
> >    > > > The patch is useful for LiquidIO PMD as we can avoid VF FLR request
> >    to
> > 
> >    > > > PF. One comment inline..
> > 
> >    > > >
> > 
> >    > > > [..]
> > 
> >    > > > > > >
> > 
> >    > > > > > > +static int
> > 
> >    > > > > > > +igbuio_pci_release(struct uio_info *info, struct inode
> >    *inode)
> > 
> >    > > > > > > +{
> > 
> >    > > > > > > + int ret;
> > 
> >    > > > > > > + struct rte_uio_pci_dev *udev = info->priv;
> > 
> >    > > > > > > + struct pci_dev *dev = udev->pdev;
> > 
> >    > > > > > > + ret = __pci_reset_function(dev);
> > 
> >    > > >
> > 
> >    > > > s/__pci_reset_function/pci_reset_function
> > 
> >    > > >
> > 
> >    > > > > > > + dev_info(&dev->dev, "pci_reset_function %s \n",
> > 
> >    > > > > > > + ret == 0 ? "succeded" : "failed");
> > 
> >    > > > > > > + return 0;
> > 
> >    > > > > > > +}
> > 
> >    > > > [..]
> > 
> >    > > >
> > 
> >    > > > Thanks,
> > 
> >    > > > Shijith
> > 
> >    > > >
> > 
> >    > >
> > 
> >    >
> > 
> >    > What does VFIO do?
> > 
> >    >
> > 
> >    > It looks like in vfio case pci_enable is held off until open and
> >    pci_disable is done
> > 
> >    > on close. There are other things that may need to be done to make close
> >    work
> > 
> >    > correctly. Like turning of msix. Also reset may not always be possible.
> >
> 
> Better follow VFIO as Stephen advised. VFIO does pci reset inside open[1] and
> tries to reset device during release[2]. 
> 
> 1. elixir.free-electrons.com/linux/latest/source/drivers/vfio/pci/vfio_pci.c#L229
> 2. elixir.free-electrons.com/linux/latest/source/drivers/vfio/pci/vfio_pci.c#L361
> 
> static int
> igbuio_pci_open(struct uio_info *info, struct inode *inode)
> {
>        struct rte_uio_pci_dev *udev = info->priv;
>        struct pci_dev *dev = udev->pdev;
> 
>        return pci_reset_function(dev);
> }
> 
> and.. 
> 	udev->info.open = igbuio_pci_open;
> 
> 



More information about the dev mailing list