> -----Original Message-----
> From: David Marchand <david.march...@redhat.com>
> Sent: Friday, July 1, 2022 15:22
> To: Huang, Wei <wei.hu...@intel.com>
> Cc: Xu, Rosen <rosen...@intel.com>; Zhang, Tianfei <tianfei.zh...@intel.com>;
> dev@dpdk.org; Ray Kinsella <m...@ashroe.eu>
> Subject: Re: [PATCH] doc: announce some raw/ifpga API removal
> 
> On Fri, Jul 1, 2022 at 9:16 AM Huang, Wei <wei.hu...@intel.com> wrote:
> > > What is the PCI bus used for, in this application?
> > >
> > In this application, target PCI device is Intel FPGA, it supports some
> > special operation like removing it from PCI bus and rescanning it back from 
> > PCI
> bus, So there are two things need to be done directly on rte_pci_bus:
> > 1. Rescan PCI bus
> >      pci_bus->bus.scan()
> > 2. Get pci_dev by specified PCI address, and remove it
> >     TAILQ_FOREACH(pci_dev, &pci_bus->device_list, next) {
> >         if (!rte_pci_addr_cmp(&pci_dev->addr, &addr))
> >                 return pci_dev;
> >     }
> >     ....
> >     pci_drv = pci_dev->driver;
> >     pci_drv->remove(pci_dev);
> 
> Can't this application use rte_dev_remove and rte_dev_probe?
> If not, we should add the missing parts in the API.
> 
Both rte_dev_remove and rte_dev_probe need rte_device pointer. In this 
application, it only know the device's PCI address, is there an
existing API to get the rte_pci_device pointer by its PCI address ?

For PCI rescan, I know there is an API called rte_bus_scan(), which seems to be 
able to replace pci_bus->bus.scan(). But is it reasonable to scan all buses
when I want to only scan PCI ?
Why I need to rescan PCI bus, the answer is current PCI scan only add PCI 
device to rte_pci_bus when it is bound to kernel driver. In our case, a FPGA
may not bind to any driver, this application bind vfio-pci to it and call bus 
scan to add it to rte_pci_bus.
> 
> --
> David Marchand

Reply via email to