Thanks, I have worked with Chenbo to address this issue before. After enable the `ALLOW_INTERNAL_API` option, it works now with SPDK.
Another issue raised by Jim Harris is that for distro packaged DPDK, since this option isn't enabled by default, this will not allow SPDK to use the distro packaged DPDK after this release. > -----Original Message----- > From: David Marchand <david.march...@redhat.com> > Sent: Friday, October 8, 2021 3:08 PM > To: Liu, Changpeng <changpeng....@intel.com> > Cc: Xia, Chenbo <chenbo....@intel.com>; Harris, James R > <james.r.har...@intel.com>; dev@dpdk.org; c...@dpdk.org; Aaron Conole > <acon...@redhat.com>; dpdklab <dpdk...@iol.unh.edu>; Zawadzki, Tomasz > <tomasz.zawad...@intel.com>; alexey...@mellanox.com > Subject: Re: [dpdk-dev] [PATCH v2 0/7] Removal of PCI bus ABIs > > Hello, > > On Fri, Oct 8, 2021 at 8:15 AM Liu, Changpeng <changpeng....@intel.com> wrote: > > > > I tried the above DPDK patches, and got the following errors: > > > > pci.c:115:7: error: call to ‘rte_pci_read_config’ declared with attribute > > error: > Symbol is not public ABI > > 115 | rc = rte_pci_read_config(dev->dev_handle, value, len, offset); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > pci.c: In function ‘cfg_write_rte’: > > pci.c:125:7: error: call to ‘rte_pci_write_config’ declared with attribute > > error: > Symbol is not public ABI > > 125 | rc = rte_pci_write_config(dev->dev_handle, value, len, offset); > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > pci.c: In function ‘register_rte_driver’: > > pci.c:375:2: error: call to ‘rte_pci_register’ declared with attribute > > error: > Symbol is not public ABI > > 375 | rte_pci_register(&driver->driver); > > I should have got this warning... but compilation passed fine for me. > Happy you tested it. > > > > > We may use the new added API to replace rte_pci_write_config and > rte_pci_read_config, but SPDK > > do require rte_pci_register(). > > Since SPDK has a PCI driver, you'll need to compile code that calls > those PCI driver internal API with ALLOW_INTERNAL_API defined. > You can probably add a #define ALLOW_INTERNAL_API first thing (it's > important to have it defined before including any dpdk header) in > pci.c > > Another option, is to add it to lib/env_dpdk/env.mk:ENV_CFLAGS = > $(DPDK_INC) -DALLOW_EXPERIMENTAL_API. > > Can someone from SPDK take over this and sync with Chenbo? > > > Thanks. > > -- > David Marchand