Hi Heng, Thanks for your contribution. I have committed the change. SHA-1: c3c477792d2f90d1d78edf947ccad6915e4e0b06 * MinPlatformPkg: Add SerialPortTerminalLib to suport Serial Terminal feature REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3014 1. Add SerialPortTerminalLib to MinPlatformPkg/Library. 2. Add SerialPortTerminalLib to BdsDxe driver, to add the serial device to ConIn and ConOut variables 3. Include SerialDxe and TerminalDxe to CoreDxeInclude.dsc and CoreUefiBootInclude.fdf. Reviewed-by: Eric Dong Cc: Chasel Chiu Cc: Nate DeSimone Reviewed-by: Liming Gao Signed-off-by: Heng Luo Thanks, Eric From: Luo, Heng Sent: Tuesday, December 8, 2020 10:01 AM To: Dong, Eric ; devel@edk2.groups.io; gaoliming@byosoft.com.cn Cc: Chiu, Chasel ; Desimone, Nathaniel L Subject: RE: [edk2-devel] 回复: [Patch V7 3/3] MinPlatformPkg: Add SerialPortTerminalLib to suport Serial Terminal feature Dear Eric, Chasel and Nate, Could you help to upload these patches? Thanks, Heng From: Dong, Eric > Sent: Tuesday, November 24, 2020 2:23 PM To: Luo, Heng >; devel@edk2.groups.io; gaoliming@byosoft.com.cn Cc: Chiu, Chasel >; Desimone, Nathaniel L > Subject: RE: [edk2-devel] 回复: [Patch V7 3/3] MinPlatformPkg: Add SerialPortTerminalLib to suport Serial Terminal feature Reviewed-by: Eric Dong > From: Luo, Heng > Sent: Monday, November 23, 2020 9:31 AM To: devel@edk2.groups.io; gaoliming@byosoft.com.cn Cc: Dong, Eric >; Chiu, Chasel >; Desimone, Nathaniel L > Subject: RE: [edk2-devel] 回复: [Patch V7 3/3] MinPlatformPkg: Add SerialPortTerminalLib to suport Serial Terminal feature Hi Chasel and Eric, Could you help to review the patches? Nate is on vacation now, I have fixed the bug in patch V6 Nate mentioned, I think he have no more comments. Thanks, Heng > -----Original Message----- > From: devel@edk2.groups.io > On Behalf Of > gaoliming > Sent: Tuesday, November 17, 2020 11:17 AM > To: Luo, Heng >; devel@edk2.groups.io > Cc: Dong, Eric >; Chiu, Chasel >; > Desimone, Nathaniel L > > Subject: [edk2-devel] 回复: [Patch V7 3/3] MinPlatformPkg: Add > SerialPortTerminalLib to suport Serial Terminal feature > > Heng: > Thanks for your update. This version is good to me. Reviewed-by: Liming > Gao > > > Besides, please let me know your test case for this case. > > Thanks > Liming > > -----邮件原件----- > > 发件人: Heng Luo > > > 发送时间: 2020年11月16日 9:31 > > 收件人: devel@edk2.groups.io > > 抄送: Eric Dong >; Chasel Chiu > > >; Nate DeSimone > > >; Liming Gao > > > > > 主题: [Patch V7 3/3] MinPlatformPkg: Add SerialPortTerminalLib to suport > > Serial Terminal feature > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3014 > > > > 1. Add SerialPortTerminalLib to MinPlatformPkg/Library. > > 2. Add SerialPortTerminalLib to BdsDxe driver, to add the serial device to > > ConIn and ConOut variables > > 3. Include SerialDxe and TerminalDxe to CoreDxeInclude.dsc and > > CoreUefiBootInclude.fdf. > > > > Cc: Eric Dong > > > Cc: Chasel Chiu > > > Cc: Nate DeSimone > > > Cc: Liming Gao > > > Signed-off-by: Heng Luo > > > --- > > Platform/Intel/MinPlatformPkg/Include/Dsc/CoreDxeInclude.dsc > > | 15 +++++++++++++-- > > Platform/Intel/MinPlatformPkg/Include/Fdf/CoreUefiBootInclude.fdf > > | 8 +++++++- > > > > > Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTerm > i > > nalLib.c | 102 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > ++++++++++++++++++++++++++++++++++++++++ > > > > > Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTerm > i > > nalLib.h | 34 ++++++++++++++++++++++++++++++++++ > > > > > Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTerm > i > > nalLib.inf | 40 ++++++++++++++++++++++++++++++++++++++++ > > 5 files changed, 196 insertions(+), 3 deletions(-) > > > > diff --git > > a/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreDxeInclude.dsc > > b/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreDxeInclude.dsc > > index f0e578f8cc..1038a29c5c 100644 > > --- a/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreDxeInclude.dsc > > +++ b/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreDxeInclude.dsc > > @@ -1,7 +1,7 @@ > > ## @file > > > > # Platform description. > > > > # > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights > > reserved.
> > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights > > +reserved.
> > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -46,7 +46,18 @@ > > > > > > > > > MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCount > e > > rRuntimeDxe.inf > > > > > > > > - MdeModulePkg/Universal/BdsDxe/BdsDxe.inf > > > > + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf { > > > > + > > > > +!if gMinPlatformPkgTokenSpaceGuid.PcdSerialTerminalEnable == TRUE > > > > + > > NULL|MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTerminalLi > > NULL|b.in > > f > > > > +!endif > > > > + } > > > > + > > > > +!if gMinPlatformPkgTokenSpaceGuid.PcdSerialTerminalEnable == TRUE > > > > + MdeModulePkg/Universal/SerialDxe/SerialDxe.inf > > > > + MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf > > > > +!endif > > > > + > > > > > > > MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerD > > xe.inf > > > > MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { > > > > > > > > diff --git > > a/Platform/Intel/MinPlatformPkg/Include/Fdf/CoreUefiBootInclude.fdf > > b/Platform/Intel/MinPlatformPkg/Include/Fdf/CoreUefiBootInclude.fdf > > index 7859c0b1a5..ef4576eedf 100644 > > --- > > a/Platform/Intel/MinPlatformPkg/Include/Fdf/CoreUefiBootInclude.fdf > > +++ b/Platform/Intel/MinPlatformPkg/Include/Fdf/CoreUefiBootInclude.fd > > +++ f > > @@ -1,7 +1,7 @@ > > ## @file > > > > # FDF file of Platform. > > > > # > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights > > reserved.
> > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights > > +reserved.
> > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -26,6 +26,12 @@ INF > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > > INF > > > MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCount > e > > rRuntimeDxe.inf > > > > > > > > INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf > > > > + > > > > +!if gMinPlatformPkgTokenSpaceGuid.PcdSerialTerminalEnable == TRUE > > > > +INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf > > > > +INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf > > > > +!endif > > > > + > > > > INF > > > MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerD > > xe.inf > > > > INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf > > > > INF > > MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf > > > > diff --git > > > a/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.c > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.c > > new file mode 100644 > > index 0000000000..66e8ee018b > > --- /dev/null > > +++ > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.c > > @@ -0,0 +1,102 @@ > > +/** @file > > > > + Main file for NULL named library for Serial Port Terminal > > + Redirection > > library. > > > > + > > > > + Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include "SerialPortTerminalLib.h" > > > > + > > > > +GLOBAL_REMOVE_IF_UNREFERENCED SERIAL_DEVICE_PATH > > mSerialDevicePath = { > > > > + { > > > > + { > > > > + HARDWARE_DEVICE_PATH, > > > > + HW_VENDOR_DP, > > > > + { > > > > + (UINT8) sizeof (VENDOR_DEVICE_PATH), > > > > + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) > > > > + } > > > > + }, > > > > + EDKII_SERIAL_PORT_LIB_VENDOR_GUID > > > > + }, > > > > + { > > > > + { > > > > + MESSAGING_DEVICE_PATH, > > > > + MSG_UART_DP, > > > > + { > > > > + (UINT8) sizeof (UART_DEVICE_PATH), > > > > + (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) > > > > + } > > > > + }, > > > > + 0, // Reserved > > > > + 0, // BaudRate > > > > + 0, // DataBits > > > > + 0, // Parity > > > > + 0 // StopBits > > > > + }, > > > > + { > > > > + { > > > > + MESSAGING_DEVICE_PATH, > > > > + MSG_VENDOR_DP, > > > > + { > > > > + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), > > > > + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), > > > > + } > > > > + }, > > > > + DEVICE_PATH_MESSAGING_PC_ANSI > > > > + }, > > > > + gEndEntire > > > > +}; > > > > + > > > > +/** > > > > + Updates the ConOut, ConIn, ErrOut variables with the serial > > + terminal > > device path > > > > + @param none > > > > + @retval none > > > > +**/ > > > > +VOID > > > > +AddSerialTerminal ( > > > > + VOID > > > > + ) > > > > +{ > > > > + DEBUG ((DEBUG_INFO, "[AddSerialPortTerminal]\n")); > > > > + > > > > + // > > > > + // Append Serial Terminal into "ConIn" > > > > + // > > > > + EfiBootManagerUpdateConsoleVariable (ConOut, > > (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); > > > > + EfiBootManagerUpdateConsoleVariable (ConIn, > > (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); > > > > + EfiBootManagerUpdateConsoleVariable (ErrOut, > > (EFI_DEVICE_PATH_PROTOCOL *) &mSerialDevicePath, NULL); > > > > +} > > > > + > > > > + > > > > +/** > > > > + Constructor for the Serial Port Device controller library. > > > > + > > > > + @param ImageHandle the image handle of the process > > > > + @param SystemTable the EFI System Table pointer > > > > + > > > > + @retval EFI_SUCCESS the shell command handlers were > > installed sucessfully > > > > + @retval EFI_UNSUPPORTED the shell level required was not found. > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +SerialPortTerminalLibConstructor ( > > > > + IN EFI_HANDLE ImageHandle, > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > + ) > > > > +{ > > > > + mSerialDevicePath.Uart.BaudRate = PcdGet64(PcdUartDefaultBaudRate); > > > > + mSerialDevicePath.Uart.DataBits = PcdGet8(PcdUartDefaultDataBits); > > > > + mSerialDevicePath.Uart.Parity = PcdGet8(PcdUartDefaultParity); > > > > + mSerialDevicePath.Uart.StopBits = PcdGet8(PcdUartDefaultStopBits); > > > > + DEBUG ((DEBUG_INFO, "[SerialPortTerminalLibConstructor] > > [%d, %d, %d, %d]\n", > > > > + mSerialDevicePath.Uart.BaudRate, > > > > + mSerialDevicePath.Uart.DataBits, > > > > + mSerialDevicePath.Uart.Parity, > > > > + mSerialDevicePath.Uart.StopBits)); > > > > + > > > > + AddSerialTerminal(); > > > > + > > > > + return EFI_SUCCESS; > > > > +} > > > > diff --git > > > a/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.h > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.h > > new file mode 100644 > > index 0000000000..bfa73cca7d > > --- /dev/null > > +++ > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.h > > @@ -0,0 +1,34 @@ > > +/** @file > > > > + Header file for NULL named library for for Serial Port Terminal > Redirection > > library. > > > > + > > > > + Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#ifndef _SERIAL_PORT_TERMINAL_LIB_H_ > > > > +#define _SERIAL_PORT_TERMINAL_LIB_H_ > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > + > > > > +// > > > > +// Below is the platform console device path > > > > +// > > > > +typedef struct { > > > > + VENDOR_DEVICE_PATH Guid; > > > > + UART_DEVICE_PATH Uart; > > > > + VENDOR_DEVICE_PATH TerminalType; > > > > + EFI_DEVICE_PATH_PROTOCOL End; > > > > +} SERIAL_DEVICE_PATH; > > > > + > > > > +#define gEndEntire \ > > > > + { \ > > > > + END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, > > { END_DEVICE_PATH_LENGTH, 0 } \ > > > > + } > > > > + > > > > +#endif > > > > diff --git > > > a/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.inf > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.inf > > new file mode 100644 > > index 0000000000..2d95fe79f2 > > --- /dev/null > > +++ > > > b/Platform/Intel/MinPlatformPkg/Library/SerialPortTerminalLib/SerialPortTer > > minalLib.inf > > @@ -0,0 +1,40 @@ > > +## @file > > > > +# Component information file for Serial Port Terminal Redirection > > +Library > > > > +# > > > > +# INTEL CONFIDENTIAL > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > +[Defines] > > > > + INF_VERSION = 0x00010006 > > > > + BASE_NAME = SerialPortTerminalLib > > > > + FILE_GUID = > > E12BFA46-95F2-4ADC-9774-7E38DE78741E > > > > + MODULE_TYPE = UEFI_DRIVER > > > > + VERSION_STRING = 1.2 > > > > + LIBRARY_CLASS = NULL|UEFI_DRIVER DXE_DRIVER > > DXE_RUNTIME_DRIVER > > > > + CONSTRUCTOR = > > SerialPortTerminalLibConstructor > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + BoardModulePkg/BoardModulePkg.dec > > > > + MinPlatformPkg/MinPlatformPkg.dec > > > > + > > > > +[Sources] > > > > + SerialPortTerminalLib.c > > > > + SerialPortTerminalLib.h > > > > + > > > > +[LibraryClasses] > > > > + DevicePathLib > > > > + DebugLib > > > > + UefiDriverEntryPoint > > > > + UefiBootManagerLib > > > > + UefiLib > > > > + > > > > +[Pcd] > > > > + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate > > > > + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits > > > > + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity > > > > + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits > > > > -- > > 2.24.0.windows.2 > > > > > > >