summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Gantois <romain.gantois@bootlin.com>2025-11-27 18:58:48 +0300
committerXu Yilun <yilun.xu@linux.intel.com>2025-12-19 18:39:20 +0300
commitc141c8221bc5089de915d9f26044df892c343c7e (patch)
tree2ad1c7aeba48f4eff3448ff1c6ff34efc3218db3
parent8f0b4cce4481fb22653697cced8d0d04027cb1e8 (diff)
downloadlinux-c141c8221bc5089de915d9f26044df892c343c7e.tar.xz
fpga: of-fpga-region: Fail if any bridge is missing
When parsing the region bridge list from the "fpga-bridges" device tree property, the of-fpga-region driver will silently ignore bridges which fail to be obtained, for example due to a missing bridge driver or invalid phandle. This can lead to hardware issues if a region bridge stays coupled when partial programming is performed. Fail if any of the bridges specified in "fpga-bridges" cannot be obtained. Signed-off-by: Romain Gantois <romain.gantois@bootlin.com> Link: https://lore.kernel.org/r/20251127-of-fpga-region-fail-if-bridges-not-found-v1-1-ca674f8d07eb@bootlin.com Reviewed-by: Xu Yilun <yilun.xu@intel.com> Signed-off-by: Xu Yilun <yilun.xu@linux.intel.com>
-rw-r--r--drivers/fpga/of-fpga-region.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/fpga/of-fpga-region.c b/drivers/fpga/of-fpga-region.c
index 43db4bb77138..caa091224dc5 100644
--- a/drivers/fpga/of-fpga-region.c
+++ b/drivers/fpga/of-fpga-region.c
@@ -83,7 +83,7 @@ static struct fpga_manager *of_fpga_region_get_mgr(struct device_node *np)
* done with the bridges.
*
* Return: 0 for success (even if there are no bridges specified)
- * or -EBUSY if any of the bridges are in use.
+ * or an error code if any of the bridges are not available.
*/
static int of_fpga_region_get_bridges(struct fpga_region *region)
{
@@ -130,10 +130,10 @@ static int of_fpga_region_get_bridges(struct fpga_region *region)
&region->bridge_list);
of_node_put(br);
- /* If any of the bridges are in use, give up */
- if (ret == -EBUSY) {
+ /* If any of the bridges are not available, give up */
+ if (ret) {
fpga_bridges_put(&region->bridge_list);
- return -EBUSY;
+ return ret;
}
}