[Skiboot] [PATCH V3] Add fwts annotation for duplicate DT node entries.

Pridhiviraj Paidipeddi ppaidipe at linux.vnet.ibm.com
Tue Nov 22 15:38:48 AEDT 2016

Reference bug: https://github.com/open-power/op-build/issues/751

Signed-off-by: Pridhiviraj Paidipeddi <ppaidipe at linux.vnet.ibm.com>
Changes from v2:
        - Moved the fwts annotation into the function dt_expand_node
          to make it clear that this is suitable for checking duplicate
          entries in FDT expansion path.

Changes from v1:
        - Replaced same node ID with duplicate node
        - Generalized fwts annotation description

 core/device.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/core/device.c b/core/device.c
index 63b5df8..a638543 100644
--- a/core/device.c
+++ b/core/device.c
@@ -799,7 +799,18 @@ int dt_expand_node(struct dt_node *node, const void *fdt, int fdt_node)
 			 * going for now, we may ultimately want to
 			 * assert
-			(void)dt_attach_root(node, child);
+			if (!dt_attach_root(node, child))
+	                       /**
+	                         * @fwts-label DTHasDuplicateNodeID
+	                         * @fwts-advice OPAL will parse the Flatten Device Tree(FDT), which can generated
+	                         *     from different firmware sources. During expansion of FDT, OPAL observed
+	                         *     the duplicate node assigned multiple times. This means platform XML can
+	                         *     contain either duplicate node ID for same hardware device or for different
+	                         *     hardware devices. This is a bug in firmware component of platform xml,
+	                         *     due to which firmware/OPAL won't add the hardware device found with a
+	                         *     duplicate node ID into DT. And corresponding device is not functional.
+	                         */
+				prlog(PR_ERR, "DT: Found duplicate node: %s\n", child->name);
 		case FDT_END:
 			return -1;

More information about the Skiboot mailing list