On Thu, 26 Jun 2025 18:40:08 -0700 "dimon.zhao" <dimon.z...@nebula-matrix.com> wrote:
> + > +static int nbl_eth_dev_init(struct rte_eth_dev *eth_dev) > +{ > + const struct nbl_adapter *adapter = ETH_DEV_TO_NBL_DEV_PF_PRIV(eth_dev); > + int ret; > + > + PMD_INIT_FUNC_TRACE(); > + ret = nbl_core_init(adapter, eth_dev); > + if (ret) { > + NBL_LOG(INFO, "core init failed ret %d", ret); > + goto eth_init_failed; > + } > + > + ret = nbl_core_start(adapter); > + if (ret) { > + NBL_LOG(INFO, "core start failed ret %d", ret); > + nbl_core_remove(adapter); > + goto eth_init_failed; > + } > + > + eth_dev->dev_ops = &nbl_eth_dev_ops; > + return 0; > + > +eth_init_failed: > + return ret; > +} > + > +/** > + * @brief: nbl device pci probe > + * @param[in]: {rte_pci_driver} *pci_drv > + * @param[in]: {rte_pci_device} *pci_dev > + * @return: {0-success,negative-fail} > + */ > +static int nbl_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, > + struct rte_pci_device *pci_dev) > +{ > + return rte_eth_dev_pci_generic_probe(pci_dev, sizeof(struct > nbl_adapter), > + nbl_eth_dev_init); > +} > + Since device doesn't support secondary process, it would make sense to detect that in probe handling and return error in secondary.