diff --git a/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c b/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c index c458abb622..e28750f3b4 100644 --- a/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c +++ b/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c @@ -66,6 +66,7 @@ SerialPortGetBaseAddress ( INT32 Node, Prev; INT32 Len; CONST CHAR8 *Compatible; + CONST CHAR8 *NodeStatus; CONST CHAR8 *CompatibleItem; CONST UINT64 *RegProperty; UINTN UartBase; @@ -98,6 +99,11 @@ SerialPortGetBaseAddress ( CompatibleItem += 1 + AsciiStrLen (CompatibleItem)) { if (AsciiStrCmp (CompatibleItem, "arm,pl011") == 0) { + NodeStatus = fdt_getprop (DeviceTreeBase, Node, "status", &Len); + if (NodeStatus != NULL && AsciiStrCmp (NodeStatus, "okay") != 0) { + continue; + } + RegProperty = fdt_getprop (DeviceTreeBase, Node, "reg", &Len); if (Len != 16) { return 0;