This patch adds new terminal type, LinuxTerm, to TerminalDxe.  This terminal
type provides a place to add support for various Linux terminals that don't
behave like standard VT terminals.

Signed-off-by: Roy Franz <roy.fr...@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
---
 BaseTools/Source/C/Include/Guid/PcAnsi.h           |  6 +++
 .../Foundation/Efi/Guid/PcAnsi/PcAnsi.c            |  2 +
 .../Foundation/Efi/Guid/PcAnsi/PcAnsi.h            |  6 +++
 .../Universal/BdsDxe/BootMaint/BootMaint.h         |  2 +-
 .../Universal/BdsDxe/BootMaint/Data.c              |  5 ++-
 .../Universal/Console/TerminalDxe/Terminal.c       | 44 ++++++++++++++++++----
 .../Universal/Console/TerminalDxe/Terminal.h       |  1 +
 .../Universal/Console/TerminalDxe/TerminalConIn.c  |  4 +-
 .../Universal/Console/TerminalDxe/TerminalConOut.c |  2 +
 .../Universal/Console/TerminalDxe/TerminalDxe.inf  |  1 +
 MdePkg/Include/Guid/PcAnsi.h                       |  6 +++
 MdePkg/Include/Protocol/DevicePath.h               |  1 +
 .../Library/UefiDevicePathLib/DevicePathFromText.c | 27 +++++++++++++
 .../Library/UefiDevicePathLib/DevicePathToText.c   |  3 ++
 .../UefiDevicePathLib/UefiDevicePathLib.inf        |  2 +
 ...UefiDevicePathLibOptionalDevicePathProtocol.inf |  4 +-
 MdePkg/MdePkg.dec                                  |  3 ++
 .../UefiHandleParsingLib/UefiHandleParsingLib.c    |  1 +
 .../UefiHandleParsingLib/UefiHandleParsingLib.inf  |  1 +
 19 files changed, 109 insertions(+), 12 deletions(-)

diff --git a/BaseTools/Source/C/Include/Guid/PcAnsi.h 
b/BaseTools/Source/C/Include/Guid/PcAnsi.h
index 9f12ca2..188a9b1 100644
--- a/BaseTools/Source/C/Include/Guid/PcAnsi.h
+++ b/BaseTools/Source/C/Include/Guid/PcAnsi.h
@@ -38,6 +38,11 @@
     0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 
0x88 } \
   }
 
+#define EFI_LINUX_TERM_GUID \
+  { \
+    0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 
0x94 } \
+  }
+
 #define EFI_UART_DEVICE_PATH_GUID \
   { \
     0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 
0xe4 } \
@@ -52,6 +57,7 @@ extern EFI_GUID gEfiPcAnsiGuid;
 extern EFI_GUID gEfiVT100Guid;
 extern EFI_GUID gEfiVT100PlusGuid;
 extern EFI_GUID gEfiVTUTF8Guid;
+extern EFI_GUID gEfiLinuxTermGuid;
 extern EFI_GUID gEfiUartDevicePathGuid;
 extern EFI_GUID gEfiSasDevicePathGuid;
 
diff --git a/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.c 
b/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.c
index 1f184e6..c6852b1 100644
--- a/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.c
+++ b/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.c
@@ -27,8 +27,10 @@ EFI_GUID  gEfiPcAnsiGuid    = EFI_PC_ANSI_GUID;
 EFI_GUID  gEfiVT100Guid     = EFI_VT_100_GUID;
 EFI_GUID  gEfiVT100PlusGuid = EFI_VT_100_PLUS_GUID;
 EFI_GUID  gEfiVTUTF8Guid    = EFI_VT_UTF8_GUID;
+EFI_GUID  gEfiLinuxTermGuid = EFI_LINUX_TERM_GUID;
 
 EFI_GUID_STRING(&gEfiPcAnsiGuid, "Efi", "Efi PC ANSI Device Path Vendor GUID")
 EFI_GUID_STRING(&gEfiVT100Guid, "Efi", "Efi VT100 Device Path Vendor GUID")
 EFI_GUID_STRING(&gEfiVT100PlusGuid, "Efi", "Efi VT100Plus Device Path Vendor 
GUID")
 EFI_GUID_STRING(&gEfiVTUTF8Guid, "Efi", "Efi VTUTF8 Device Path Vendor GUID")
+EFI_GUID_STRING(&gEfiLinuxTermGuid, "Efi", "Efi Linux Terminal Device Path 
Vendor GUID")
diff --git a/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.h 
b/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.h
index 7181020..9461a35 100644
--- a/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.h
+++ b/EdkCompatibilityPkg/Foundation/Efi/Guid/PcAnsi/PcAnsi.h
@@ -42,9 +42,15 @@ Abstract:
     0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 
0x88} \
   }
 
+#define EFI_LINUX_TERM_GUID \
+  { \
+    0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 
0x94 } \
+  }
+
 extern EFI_GUID gEfiPcAnsiGuid;
 extern EFI_GUID gEfiVT100Guid;
 extern EFI_GUID gEfiVT100PlusGuid;
 extern EFI_GUID gEfiVTUTF8Guid;
+extern EFI_GUID gEfiLinuxTermGuid;
 
 #endif
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h 
b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
index 098692f..bfa9b63 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
@@ -1657,7 +1657,7 @@ extern COM_ATTR                   BaudRateList[19];
 extern COM_ATTR                   DataBitsList[4];
 extern COM_ATTR                   ParityList[5];
 extern COM_ATTR                   StopBitsList[3];
-extern EFI_GUID                   TerminalTypeGuid[4];
+extern EFI_GUID                   TerminalTypeGuid[5];
 extern STRING_DEPOSITORY          *FileOptionStrDepository;
 extern STRING_DEPOSITORY          *ConsoleOptionStrDepository;
 extern STRING_DEPOSITORY          *BootOptionStrDepository;
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Data.c 
b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Data.c
index 0a3ffbc..3f22efa 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Data.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Data.c
@@ -324,9 +324,10 @@ COM_ATTR            StopBitsList[3] = {
 ///
 /// Guid for messaging path, used in Serial port setting.
 ///
-EFI_GUID            TerminalTypeGuid[4] = {
+EFI_GUID            TerminalTypeGuid[5] = {
   DEVICE_PATH_MESSAGING_PC_ANSI,
   DEVICE_PATH_MESSAGING_VT_100,
   DEVICE_PATH_MESSAGING_VT_100_PLUS,
-  DEVICE_PATH_MESSAGING_VT_UTF8
+  DEVICE_PATH_MESSAGING_VT_UTF8,
+  DEVICE_PATH_MESSAGING_LINUX_TERM
 };
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c 
b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
index 966fb79..3371dcc 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
@@ -33,7 +33,8 @@ EFI_GUID  *gTerminalType[] = {
   &gEfiPcAnsiGuid,
   &gEfiVT100Guid,
   &gEfiVT100PlusGuid,
-  &gEfiVTUTF8Guid
+  &gEfiVTUTF8Guid,
+  &gEfiLinuxTermGuid
 };
 
 
@@ -152,12 +153,13 @@ TerminalDriverBindingSupported (
 
       }
       //
-      // only supports PC ANSI, VT100, VT100+ and VT-UTF8 terminal types
+      // only supports PC ANSI, VT100, VT100+, VT-UTF8, and Linux terminal 
types
       //
       if (!CompareGuid (&Node->Guid, &gEfiPcAnsiGuid) &&
           !CompareGuid (&Node->Guid, &gEfiVT100Guid) &&
           !CompareGuid (&Node->Guid, &gEfiVT100PlusGuid) &&
-          !CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
+          !CompareGuid (&Node->Guid, &gEfiVTUTF8Guid) &&
+          !CompareGuid (&Node->Guid, &gEfiLinuxTermGuid)) {
 
         return EFI_UNSUPPORTED;
       }
@@ -275,6 +277,10 @@ BuildTerminalDevpath  (
 
     TerminalType = VTUTF8TYPE;
 
+  } else if (CompareGuid (&Node->Guid, &gEfiLinuxTermGuid)) {
+
+    TerminalType = LINUXTERMTYPE;
+
   } else {
     return NULL;
   }
@@ -708,9 +714,9 @@ TerminalDriverBindingStart (
 
       TerminalType = PcdGet8 (PcdDefaultTerminalType);
       //
-      // Must be between PCANSITYPE (0) and VTUTF8TYPE (3)
+      // Must be between PCANSITYPE (0) and LINUXTERMTYPE (4)
       //
-      ASSERT (TerminalType <= VTUTF8TYPE);
+      ASSERT (TerminalType <= LINUXTERMTYPE);
 
       CopyMem (&DefaultNode->Guid, gTerminalType[TerminalType], sizeof 
(EFI_GUID));
       RemainingDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) DefaultNode;
@@ -728,6 +734,8 @@ TerminalDriverBindingStart (
         TerminalType = VT100PLUSTYPE;
       } else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
         TerminalType = VTUTF8TYPE;
+      } else if (CompareGuid (&Node->Guid, &gEfiLinuxTermGuid)) {
+        TerminalType = LINUXTERMTYPE;
       } else {
         goto Error;
       }
@@ -926,6 +934,24 @@ TerminalDriverBindingStart (
         );
 
       break;
+
+    case LINUXTERMTYPE:
+      AddUnicodeString2 (
+        "eng",
+        gTerminalComponentName.SupportedLanguages,
+        &TerminalDevice->ControllerNameTable,
+        (CHAR16 *)L"Linux Terminal Serial Console",
+        TRUE
+        );
+      AddUnicodeString2 (
+        "en",
+        gTerminalComponentName2.SupportedLanguages,
+        &TerminalDevice->ControllerNameTable,
+        (CHAR16 *)L"Linux Terminal Serial Console",
+        FALSE
+        );
+
+      break;
     }
 
     //
@@ -1441,7 +1467,7 @@ TerminalUpdateConsoleDevVariable (
   //
   // Append terminal device path onto the variable.
   //
-  for (TerminalType = PCANSITYPE; TerminalType <= VTUTF8TYPE; TerminalType++) {
+  for (TerminalType = PCANSITYPE; TerminalType <= LINUXTERMTYPE; 
TerminalType++) {
     SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
     NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
     ASSERT (NewVariable != NULL);
@@ -1554,7 +1580,7 @@ TerminalRemoveConsoleDevVariable (
     // Loop through all the terminal types that this driver supports
     //
     Match = FALSE;
-    for (TerminalType = PCANSITYPE; TerminalType <= VTUTF8TYPE; 
TerminalType++) {
+    for (TerminalType = PCANSITYPE; TerminalType <= LINUXTERMTYPE; 
TerminalType++) {
 
       SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
 
@@ -1658,6 +1684,10 @@ SetTerminalDevicePath (
     CopyGuid (&Node.Guid, &gEfiVTUTF8Guid);
     break;
 
+  case LINUXTERMTYPE:
+    CopyGuid (&Node.Guid, &gEfiLinuxTermGuid);
+    break;
+
   default:
     return EFI_UNSUPPORTED;
   }
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h 
b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
index d393acb..e0335db 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
@@ -136,6 +136,7 @@ typedef union {
 #define VT100TYPE                 1
 #define VT100PLUSTYPE             2
 #define VTUTF8TYPE                3
+#define LINUXTERMTYPE             4
 
 #define LEFTOPENBRACKET           0x5b  // '['
 #define ACAP                      0x41
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c 
b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
index 4a008c9..51492f3 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
@@ -454,6 +454,7 @@ TranslateRawDataToEfiKey (
   case PCANSITYPE:
   case VT100TYPE:
   case VT100PLUSTYPE:
+  case LINUXTERMTYPE:
     AnsiRawDataToUnicode (TerminalDevice);
     UnicodeToEfiKey (TerminalDevice);
     break;
@@ -1393,7 +1394,8 @@ UnicodeToEfiKey (
       if (TerminalDevice->TerminalType == PCANSITYPE    ||
           TerminalDevice->TerminalType == VT100TYPE     ||
           TerminalDevice->TerminalType == VT100PLUSTYPE ||
-          TerminalDevice->TerminalType == VTUTF8TYPE) {
+          TerminalDevice->TerminalType == VTUTF8TYPE    ||
+          TerminalDevice->TerminalType == LINUXTERMTYPE) {
         switch (UnicodeChar) {
         case 'A':
           Key.ScanCode = SCAN_UP;
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c 
b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
index affb3ae..868a014 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
@@ -223,6 +223,7 @@ TerminalConOutOutputString (
     case PCANSITYPE:
     case VT100TYPE:
     case VT100PLUSTYPE:
+    case LINUXTERMTYPE:
 
       if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
         //
@@ -371,6 +372,7 @@ TerminalConOutTestString (
   case PCANSITYPE:
   case VT100TYPE:
   case VT100PLUSTYPE:
+  case LINUXTERMTYPE:
     Status = AnsiTestString (TerminalDevice, WString);
     break;
 
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf 
b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
index 1d86388..7c6e3d3 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
@@ -73,6 +73,7 @@
   gEfiVT100Guid                                 ## SOMETIMES_CONSUMES ## GUID 
# used with a Vendor-Defined Messaging Device Path
   gEfiVT100PlusGuid                             ## SOMETIMES_CONSUMES ## GUID 
# used with a Vendor-Defined Messaging Device Path
   gEfiPcAnsiGuid                                ## SOMETIMES_CONSUMES ## GUID 
# used with a Vendor-Defined Messaging Device Path
+  gEfiLinuxTermGuid                             ## SOMETIMES_CONSUMES ## GUID 
# used with a Vendor-Defined Messaging Device Path
   gEdkiiStatusCodeDataTypeVariableGuid          ## SOMETIMES_CONSUMES ## GUID
 
 [Protocols]
diff --git a/MdePkg/Include/Guid/PcAnsi.h b/MdePkg/Include/Guid/PcAnsi.h
index e576fd3..61759f8 100644
--- a/MdePkg/Include/Guid/PcAnsi.h
+++ b/MdePkg/Include/Guid/PcAnsi.h
@@ -38,6 +38,11 @@
     0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 
0x88 } \
   }
 
+#define EFI_LINUX_TERM_GUID \
+  { \
+    0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 
0x94 } \
+  }
+
 #define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \
   { \
     0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 
0xe4 } \
@@ -52,6 +57,7 @@ extern EFI_GUID gEfiPcAnsiGuid;
 extern EFI_GUID gEfiVT100Guid;
 extern EFI_GUID gEfiVT100PlusGuid;
 extern EFI_GUID gEfiVTUTF8Guid;
+extern EFI_GUID gEfiLinuxTermGuid;
 extern EFI_GUID gEfiUartDevicePathGuid;
 extern EFI_GUID gEfiSasDevicePathGuid;
 
diff --git a/MdePkg/Include/Protocol/DevicePath.h 
b/MdePkg/Include/Protocol/DevicePath.h
index 7cf7113..a718bd4 100644
--- a/MdePkg/Include/Protocol/DevicePath.h
+++ b/MdePkg/Include/Protocol/DevicePath.h
@@ -706,6 +706,7 @@ typedef VENDOR_DEVICE_PATH        
VENDOR_DEFINED_DEVICE_PATH;
 #define DEVICE_PATH_MESSAGING_VT_100      EFI_VT_100_GUID
 #define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
 #define DEVICE_PATH_MESSAGING_VT_UTF8     EFI_VT_UTF8_GUID
+#define DEVICE_PATH_MESSAGING_LINUX_TERM  EFI_LINUX_TERM_GUID
 
 ///
 /// A new device path node is defined to declare flow control characteristics.
diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c 
b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
index 6ec0a4c..f473b39 100644
--- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
+++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
@@ -1545,6 +1545,32 @@ DevPathFromTextVenUtf8 (
 }
 
 /**
+  Converts a text device path node to Vendor defined Linux terminal device
+  path structure.
+
+  @param TextDeviceNode  The input Text device path node.
+
+  @return A pointer to the newly-created Vendor defined Linux terminal
+          device path structure.
+
+**/
+EFI_DEVICE_PATH_PROTOCOL *
+DevPathFromTextVenLinuxTerm (
+  IN CHAR16 *TextDeviceNode
+  )
+{
+  VENDOR_DEVICE_PATH  *Vendor;
+
+  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
+                                    MESSAGING_DEVICE_PATH,
+                                    MSG_VENDOR_DP,
+                                    (UINT16) sizeof (VENDOR_DEVICE_PATH));
+  CopyGuid (&Vendor->Guid, &gEfiLinuxTermGuid);
+
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
+}
+
+/**
   Converts a text device path node to UART Flow Control device path structure.
 
   @param TextDeviceNode  The input Text device path node.
@@ -3075,6 +3101,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE 
mUefiDevicePathLibDevP
   {L"VenVt100",                DevPathFromTextVenVt100                },
   {L"VenVt100Plus",            DevPathFromTextVenVt100Plus            },
   {L"VenUtf8",                 DevPathFromTextVenUtf8                 },
+  {L"VenLinuxTerm",            DevPathFromTextVenLinuxTerm            },
   {L"UartFlowCtrl",            DevPathFromTextUartFlowCtrl            },
   {L"SAS",                     DevPathFromTextSAS                     },
   {L"SasEx",                   DevPathFromTextSasEx                   },
diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c 
b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
index 0300019..f7df807 100644
--- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
+++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
@@ -194,6 +194,9 @@ DevPathToTextVendor (
       } else if (CompareGuid (&Vendor->Guid, &gEfiVTUTF8Guid)) {
         UefiDevicePathLibCatPrint (Str, L"VenUft8()");
         return ;
+      } else if (CompareGuid (&Vendor->Guid, &gEfiLinuxTermGuid)) {
+        UefiDevicePathLibCatPrint (Str, L"VenLinuxTerm()");
+        return ;
       } else if (CompareGuid (&Vendor->Guid, &gEfiUartDevicePathGuid)) {
         FlowControlMap = (((UART_FLOW_CONTROL_DEVICE_PATH *) 
Vendor)->FlowControlMap);
         switch (FlowControlMap & 0x00000003) {
diff --git a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf 
b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
index f4ae91f..a1bad14 100644
--- a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+++ b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
@@ -58,6 +58,8 @@
   ## SOMETIMES_CONSUMES  ## GUID
   gEfiPcAnsiGuid
   ## SOMETIMES_CONSUMES  ## GUID
+  gEfiLinuxTermGuid
+  ## SOMETIMES_CONSUMES  ## GUID
   gEfiUartDevicePathGuid
   ## SOMETIMES_CONSUMES  ## GUID
   gEfiSasDevicePathGuid
diff --git 
a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf
 
b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf
index 943ba2d..b529400 100644
--- 
a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf
+++ 
b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf
@@ -62,6 +62,8 @@
   ## SOMETIMES_CONSUMES  ## GUID
   gEfiPcAnsiGuid
   ## SOMETIMES_CONSUMES  ## GUID
+  gEfiLinuxTermGuid
+  ## SOMETIMES_CONSUMES  ## GUID
   gEfiUartDevicePathGuid
   ## SOMETIMES_CONSUMES  ## GUID
   gEfiSasDevicePathGuid
@@ -78,4 +80,4 @@
 
 [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, 
Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
   gEfiDevicePathUtilitiesProtocolGuid
-  
\ No newline at end of file
+  
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
index f9c9d5f..b1b0038 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -269,6 +269,9 @@
   gEfiVTUTF8Guid                 = { 0xAD15A0D6, 0x8BEC, 0x4ACF, { 0xA0, 0x73, 
0xD0, 0x1D, 0xE7, 0x7E, 0x2D, 0x88 }}
 
   ## Include/Guid/PcAnsi.h
+  gEfiLinuxTermGuid              = { 0x7d916d80, 0x5bb1, 0x458c, {0xa4, 0x8f, 
0xe2, 0x5f, 0xdd, 0x51, 0xef, 0x94 }}
+
+  ## Include/Guid/PcAnsi.h
   gEfiUartDevicePathGuid         = { 0x37499a9d, 0x542f, 0x4c89, { 0xa0, 0x26, 
0x35, 0xda, 0x14, 0x20, 0x94, 0xe4 }}
 
   ## Include/Guid/PcAnsi.h
diff --git a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c 
b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
index 9a2daa9..9baaed7 100644
--- a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
+++ b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
@@ -848,6 +848,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_DEVICE_PATH_VT100),     &gEfiVT100Guid,                    
               NULL},
   {STRING_TOKEN(STR_DEVICE_PATH_VT100P),    &gEfiVT100PlusGuid,                
               NULL},
   {STRING_TOKEN(STR_DEVICE_PATH_VTUTF8),    &gEfiVTUTF8Guid,                   
               NULL},
+  {STRING_TOKEN(STR_DEVICE_PATH_LINUXTERM), &gEfiLinuxTermGuid,                
               NULL},
   {STRING_TOKEN(STR_DRIVER_BINDING),        &gEfiDriverBindingProtocolGuid,    
               NULL},
   {STRING_TOKEN(STR_PLATFORM_OVERRIDE),     
&gEfiPlatformDriverOverrideProtocolGuid,          NULL},
   {STRING_TOKEN(STR_BUS_OVERRIDE),          
&gEfiBusSpecificDriverOverrideProtocolGuid,       NULL},
diff --git a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf 
b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
index c95f41b..716dbd7 100644
--- a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
+++ b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
@@ -181,6 +181,7 @@
   gEfiVT100Guid                                           ##UNDEFINED
   gEfiVT100PlusGuid                                       ##UNDEFINED
   gEfiVTUTF8Guid                                          ##UNDEFINED
+  gEfiLinuxTermGuid                                       ##UNDEFINED
   gEfiStandardErrorDeviceGuid                             ##UNDEFINED
   gEfiConsoleInDeviceGuid                                 ##UNDEFINED
   gEfiConsoleOutDeviceGuid                                ##UNDEFINED
-- 
1.9.1


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to