[PATCH v6] Improve handoff prepare on SoCFPGA
Brian Sune
briansune at gmail.com
Thu Apr 23 06:04:11 CEST 2026
Ensure qts folder header files are properly updated by isolating
the Python execution environment. This prevents partial or failed
script runs from corrupting the target directory.
Changelog v5 -> v6:
- Clean HANDOFF_KEEP comments.
Changelog v4 -> v5:
- Change HANDOFF_KEEP condition to if [ "$${HANDOFF_KEEP:-0}" != "0" ]
- Add HANDOFF_KEEP and HANDOFF_PATH comments in config.mk
Changes:
- Implement a temp folder for Python script execution.
- Clean temp folder automatically despite execution failures.
- Gate the file replacement process on the successful exit of
the Python scripts.
- Execute the replacement (with or without keep) only upon script
success via the NEW HANDOFF_KEEP=xxx variable.
- Rename old files to .h.handoff_backup.<timestamp> when the
keep option is selected.
Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Tien Fong Chee <tien.fong.chee at altera.com>
Signed-off-by: Brian Sune <briansune at gmail.com>
---
arch/arm/mach-socfpga/config.mk | 39 ++++++++++++++++++++++++++++++---
1 file changed, 36 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-socfpga/config.mk b/arch/arm/mach-socfpga/config.mk
index 1ca1d33cb16..f341aaaea56 100644
--- a/arch/arm/mach-socfpga/config.mk
+++ b/arch/arm/mach-socfpga/config.mk
@@ -1,6 +1,18 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Brian Sune <briansune at gmail.com>
+#
+# HANDOFF_PATH
+# ------------
+# Unset - Board path where qts locates and "hps_isw_handoff" should be placed.
+# Set - Custom path points to "hps_isw_handoff" folder.
+#
+# HANDOFF_KEEP
+# ------------
+# Unset - Clean header files.
+# Set - HANDOFF_KEEP= , Clean header files.
+# HANDOFF_KEEP=0, Clean header files.
+# HANDOFF_KEEP=1, Backup header files and rename to ".h.handoff_backup.<timestamp>".
ifeq ($(CONFIG_ARCH_SOCFPGA_CYCLONE5),y)
archprepare: socfpga_g5_handoff_prepare
@@ -43,6 +55,27 @@ socfpga_g5_handoff_prepare:
exit 0; \
fi; \
echo "[INFO] Found hiof file: $$HIOF_FILE"; \
- echo "[INFO] Running BSP generator..."; \
- python3 $(srctree)/tools/cv_bsp_generator/cv_bsp_generator.py -i "$$HANDOFF_PATH" -o "$$BOARD_DIR/qts" || echo "[WARN] BSP generator failed, continuing..."; \
- echo "[DONE] SoCFPGA QTS handoff conversion complete."
+ echo "[INFO] Try BSP generator..."; \
+ TEMP_DIR=$$(mktemp -dp "$$BOARD_DIR/"); \
+ trap 'rm -rf "$$TEMP_DIR"' EXIT; \
+ if python3 $(srctree)/tools/cv_bsp_generator/cv_bsp_generator.py -i "$$HANDOFF_PATH" -o "$$TEMP_DIR"; then \
+ if [ "$${HANDOFF_KEEP:-0}" != "0" ]; then \
+ echo "[INFO] Preserving old BSP files..."; \
+ TIMESTAMP=$$(date +%Y%m%d_%H%M%S); \
+ for f in "$$BOARD_DIR"/qts/*.h; do \
+ [ -e "$$f" ] || continue; \
+ echo "[INFO] $$f -> $${f%.h}.h.handoff_backup.$$TIMESTAMP"; \
+ mv "$$f" "$${f%.h}.h.handoff_backup.$$TIMESTAMP"; \
+ done; \
+ else \
+ echo "[INFO] Clean old BSP files..."; \
+ if ls "$$BOARD_DIR/qts"/*.h >/dev/null 2>&1; then \
+ rm "$$BOARD_DIR/qts"/*.h; \
+ echo "[INFO] Removed old BSP files..."; \
+ fi; \
+ fi; \
+ mv "$$TEMP_DIR"/*.h "$$BOARD_DIR"/qts; \
+ echo "[INFO] SoCFPGA QTS handoff conversion complete."; \
+ else \
+ echo "[WARN] BSP generator failed!"; \
+ fi;
--
2.34.1
More information about the U-Boot
mailing list