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