Message ID | 20190118111233.45114-1-ferruh.yigit@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Thomas Monjalon |
Headers | show |
Series | [v2] bus/ifpga: fix ifpga afu driver probe failure handler | expand |
Context | Check | Description |
---|---|---|
ci/checkpatch | success | coding style OK |
ci/Intel-compilation | success | Compilation OK |
ci/mellanox-Performance-Testing | success | Performance Testing PASS |
ci/intel-Performance-Testing | success | Performance Testing PASS |
18/01/2019 12:12, Ferruh Yigit: > From: Andy Pei <andy.pei@intel.com> > > In the original code, when an AFU device probe a driver, > if the first driver in the driver list does not support > this device or some error happens, bus probe returns an error. > > With this patch, a device will try to match driver in the driver > list one by one until an appropriate driver is found. > > If some error happens, the error is returned. If the current driver > does not support the device, just try the next driver in the list. > > If all the drivers in the list are tried and no driver matches, > 0 is returned. Otherwise, the error code is returned. > > Fixes: 05fa3d4a6539 ("bus/ifpga: add Intel FPGA bus library") > Cc: stable@dpdk.org > > Signed-off-by: Andy Pei <andy.pei@intel.com> > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> > Acked-by: Rosen Xu <rosen.xu@intel.com> Applied, thanks
diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c index e4b7b6f50..55d3abf9f 100644 --- a/drivers/bus/ifpga/ifpga_bus.c +++ b/drivers/bus/ifpga/ifpga_bus.c @@ -306,12 +306,19 @@ ifpga_probe_all_drivers(struct rte_afu_device *afu_dev) } TAILQ_FOREACH(drv, &ifpga_afu_drv_list, next) { - if (ifpga_probe_one_driver(drv, afu_dev)) { - ret = -1; - break; - } + ret = ifpga_probe_one_driver(drv, afu_dev); + if (ret < 0) + /* negative value is an error */ + return ret; + if (ret > 0) + /* positive value means driver doesn't support it */ + continue; + return 0; } - return ret; + if ((ret > 0) && (afu_dev->driver == NULL)) + return 0; + else + return ret; } /*