Hello, 02/05/2022 23:20, McDaniel, Timothy: > Hello DPDK community, > > I am following up on a question/comment that I submitted on April 18, for > which > I have not received any responses. See the original comment below for context. > > Are there objections to modifying the behavior of rte_bus_probe() so that it > propagates > any errors detected while processing the command line arguments? It currently > ignores > errors and continues on, always returning success instead of any error that > was returned > by the probe function.
You are suggesting to stop if probing of one device fails. I am not sure it is a good idea, because sometimes we are OK to proceed even if one device is missing. We could differentiate a fatal error like parsing syntax, and "normal error" of a device which cannot be probed in some conditions. > > -----Original Message----- > > Hello DPDK community, > > > > We are looking into an issue where we pass an invalid command line argument > > to a vdev, and we print out an error message but don't exit. This is an > > issue with > > all of the command line options that we handle in dlb2_parse_params(). In a > > nutshell, it looks like when we encounter an error in parsing, the error > > code is > > propagated to event_dlb2_vdev_probe() (event_dlb2_pci_probe() for PF), which > > is called by EAL during device probe in rte_bus_probe(). The problem is > > that > > rte_bus_probe() calls the .probe function for each device but doesn't exit > > on > > error: > > > > if (vbus) { > > ret = vbus->probe(); > > if (ret) > > RTE_LOG(ERR, EAL, "Bus (%s) probe failed.\n", > > vbus->name); > > } > > return 0; > > > > We want to exit if the command line arguments can't be parsed, so we have a > > couple of options: > > > > > > 1. In the DLB PMD, if we get an error while parsing parameters, exit > > right > > away. > > 2. Change the behavior of rte_bus_probe() so that it propagates the > > error, > > which causes the program to exit due to EAL error. > > > > if (vbus) { > > ret = vbus->probe(); > > if (ret) { > > RTE_LOG(ERR, EAL, "Bus (%s) probe failed.\n", > > vbus->name); > > return ret; > > } > > } > > return 0; > > > > Any preference, or other ideas? Option 1 is simple and contained in our > > code, > > but does call rte_exit() from library code. I'm not sure if that's really > > an issue > > because we do want to exit if the DLB-specific options are malformed. > > Option 2 > > is simple and seems like a better option, but requires changes outside of > > DLB, so > > may be more difficult to upstream? (There may be reasons why the error is > > ignored for some devices). Let me know what you think. > > > > Thanks you for your comments, > > Tim McDaniel