return EFI_SUCCESS;\r
}\r
\r
+STATIC\r
+BOOLEAN\r
+IsNodeEnabled (\r
+ INT32 Node\r
+ )\r
+{\r
+ CONST CHAR8 *NodeStatus;\r
+ INT32 Len;\r
+\r
+ //\r
+ // A missing status property implies 'ok' so ignore any errors that\r
+ // may occur here. If the status property is present, check whether\r
+ // it is set to 'ok' or 'okay', anything else is treated as 'disabled'.\r
+ //\r
+ NodeStatus = fdt_getprop (mDeviceTreeBase, Node, "status", &Len);\r
+ if (NodeStatus == NULL) {\r
+ return TRUE;\r
+ }\r
+ if (Len >= 5 && AsciiStrCmp (NodeStatus, "okay") == 0) {\r
+ return TRUE;\r
+ }\r
+ if (Len >= 3 && AsciiStrCmp (NodeStatus, "ok") == 0) {\r
+ return TRUE;\r
+ }\r
+ return FALSE;\r
+}\r
+\r
STATIC\r
EFI_STATUS\r
EFIAPI\r
break;\r
}\r
\r
+ if (!IsNodeEnabled (Next)) {\r
+ continue;\r
+ }\r
+\r
Type = fdt_getprop (mDeviceTreeBase, Next, "compatible", &Len);\r
if (Type == NULL) {\r
continue;\r
{\r
INT32 Prev, Next;\r
CONST CHAR8 *DeviceType;\r
- CONST CHAR8 *NodeStatus;\r
INT32 Len;\r
EFI_STATUS Status;\r
\r
break;\r
}\r
\r
- NodeStatus = fdt_getprop (mDeviceTreeBase, Next, "status", &Len);\r
- if (NodeStatus != NULL && AsciiStrCmp (NodeStatus, "okay") != 0) {\r
- DEBUG ((DEBUG_WARN, "%a: ignoring memory node with status \"%a\"\n",\r
- __FUNCTION__, NodeStatus));\r
+ if (!IsNodeEnabled (Next)) {\r
+ DEBUG ((DEBUG_WARN, "%a: ignoring disabled memory node\n", __FUNCTION__));\r
continue;\r
}\r
\r