[RFC PATCH 21/77] checks: Handle export symbols in fixup_phandle_references()
Herve Codina <[email protected]> Mon, 12 Jan 2026 15:19:11 +0100
| Newsgroups | org.kernel.vger.devicetree-spec,org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Export symbols use phandle references. Referenced nodes must have a phandle property set in order to have those references working. fixup_phandle_references() does the needed operation for properties that use a phandle. Extend fixup_phandle_references() to perform exact same operation for export symbols. Signed-off-by: Herve Codina <[email protected]> --- checks.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/checks.c b/checks.c index 2be19c0..d1e215e 100644 --- a/checks.c +++ b/checks.c @@ -604,12 +604,13 @@ static void fixup_phandle_references(struct check *c, struct dt_info *dti, struct node *node) { struct node *dt = dti->dt; + struct symbol *exportsym; struct property *prop; + struct node *refnode; + cell_t phandle; for_each_property(node, prop) { struct marker *m = prop->val.markers; - struct node *refnode; - cell_t phandle; for_each_marker_of_type(m, REF_PHANDLE) { assert(m->offset + sizeof(cell_t) <= prop->val.len); @@ -631,6 +632,25 @@ static void fixup_phandle_references(struct check *c, struct dt_info *dti, reference_node(refnode); } } + + for_each_symbol(node->exportsymlist, exportsym) { + refnode = get_node_by_ref(dt, exportsym->ref); + if (!refnode) { + if (!(dti->dtsflags & (DTSF_PLUGIN | DTSF_ADDON))) { + FAIL(c, dti, node, + "Export \"%s\" references to non-existent node or label \"%s\"\n", + exportsym->name, exportsym->ref); + } + exportsym->phandle = cpu_to_fdt32(0xffffffff); + continue; + } + + /* Create the phandle property for this referenced node */ + phandle = get_node_phandle(dt, refnode); + exportsym->phandle = phandle; + + reference_node(refnode); + } } ERROR(phandle_references, fixup_phandle_references, NULL, &duplicate_node_names, &explicit_phandles); -- 2.52.0