On 14/8/2026 9:59 am, Chen Huei Lok wrote:
spl_perform_arch_fixups() looks up the "socfpga-smmu-secure-config"
node by name and calls hang() on any error, so every SoC64 platform is
forced to carry the node even when it has nothing to program.

Treat a missing node (-ENODEV) as "nothing to do" and skip it, while
still calling hang() on a genuine probe/dtreg failure when the node is
present. This lets parts where the System-Manager TBU stream-ID /
secure-SID setup is owned elsewhere (e.g. by ATF/BL31), or where the
reset default already suffices, omit the node without hanging. Legacy
SoC64 parts that still program it from U-Boot keep the existing error
detection.

Signed-off-by: Chen Huei Lok <[email protected]>
---
  arch/arm/mach-socfpga/spl_soc64.c | 11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-socfpga/spl_soc64.c 
b/arch/arm/mach-socfpga/spl_soc64.c
index fa7b1506ce6..d60dcf21816 100644
--- a/arch/arm/mach-socfpga/spl_soc64.c
+++ b/arch/arm/mach-socfpga/spl_soc64.c
@@ -8,6 +8,7 @@
  #include <hang.h>
  #include <spl.h>
  #include <dm/uclass.h>
+#include <linux/errno.h>
DECLARE_GLOBAL_DATA_PTR; @@ -136,7 +137,15 @@ void spl_perform_arch_fixups(struct spl_image_info *spl_image)
        struct udevice *dev;
ret = uclass_get_device_by_name(UCLASS_NOP, "socfpga-smmu-secure-config", &dev);
-       if (ret) {
+       if (ret == -ENODEV) {
+               /*
+                * No socfpga-smmu-secure-config node: nothing for U-Boot to
+                * program (e.g. parts where ATF/BL31 owns the System-Manager
+                * TBU stream-ID / secure-SID setup, or where the reset default
+                * already suffices). Skip instead of failing.
+                */
+               debug("HPS SMMU secure settings: no DT node, skipping\n");
+       } else if (ret) {
                printf("HPS SMMU secure settings init failed: %d\n", ret);
                hang();
        }


Reviewed-by: Tien Fong Chee <[email protected]>

Best regards,
Tien Fong

Reply via email to