From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (EUR05-VI1-obe.outbound.protection.outlook.com [40.107.21.52]) by mx.groups.io with SMTP id smtpd.web11.46850.1584941491965107386 for ; Sun, 22 Mar 2020 22:31:32 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nxp1.onmicrosoft.com header.s=selector2-nxp1-onmicrosoft-com header.b=HFkmAnZI; spf=pass (domain: oss.nxp.com, ip: 40.107.21.52, mailfrom: pankaj.bansal@oss.nxp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kI2Pqjw67rAFeYhYbUgltoTzIqSD5DT4S1F4wCJtuRNJyLfcTTK41CzSAqe9v5NE+n/xnw946QXjHGP4dAH3kecVu1fedAi2ENbI9IGtbruugo+EQIXP6YqyRpgqrrfqOpAQ/Jv2GQh14gHQ0uJHZzAa686rjZQ72I8EobqYhD6pcyWmO+waWfaURWTQjhkPSHiaxNOdrrse7VLl0/kbGWafCtPpNO2lHNv2xrF8CtR9hfmjPRb9Z0GB1o/WqbRFdBCaDqJzSfway2AqzaXUq3ad5TCP8i0lGUW2HtAaanz/2ER4uVLIgF7M7D2QeHFhLEKbPYc49fPZ6TtqiJGvnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8Nre+a+X1flQmyGboFBWdRAHO5+t8IkeoeB3UFY5C/o=; b=CaJG5UqNF7OFN9rd9AHdigdINgKch7h0QnHnjFP2Rhc1iHq2pJt/VzPreEVatDL++D7+Hq2Cmy57izzClRYe505bSYTawjPRZgq7x9Y/nNdRlHAwc3WoihnUK4hL15P4ClG+AhiDsWcns8bdDY+bgzpH4hqWwQYv2zhz6dQQ29+J7XYUIRHCRoNE8dXLGmOvKeNasI49rghA2hzFvrWZ/zw4FcwQpRA4Rtf98qru0GZr6qDBKsNlrjBDEdqFGn4omR7egg68KLJSf061OHvQjVkx0IBBwnhhu3YTjAH9RkkLKuR5gtp8cN65u2I76BH/H31fTHaYI2hznHmxowwADw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8Nre+a+X1flQmyGboFBWdRAHO5+t8IkeoeB3UFY5C/o=; b=HFkmAnZIR7KgypiQ8BjoGkbs8Mz0LbIqo/FsQoqanbesLBvesWmQQ5Ro/z1ba/iWBcV0curP+Bvayda3AF1HcfO6w7LLSCtXAd8EYtr/Ic8HROHVw7tWa57YGC8bSHzUpIiuvLLP4x4wqNLbG2RI63d6Ht46EzQd2tT4b87Zr3Q= Received: from VI1PR04MB5933.eurprd04.prod.outlook.com (20.178.205.16) by VI1PR04MB5886.eurprd04.prod.outlook.com (20.178.204.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.18; Mon, 23 Mar 2020 05:31:28 +0000 Received: from VI1PR04MB5933.eurprd04.prod.outlook.com ([fe80::e581:c145:2f3c:fa18]) by VI1PR04MB5933.eurprd04.prod.outlook.com ([fe80::e581:c145:2f3c:fa18%6]) with mapi id 15.20.2835.021; Mon, 23 Mar 2020 05:31:27 +0000 From: "Pankaj Bansal" To: Leif Lindholm , "Ni, Ray" CC: "Pankaj Bansal (OSS)" , "Wang, Jian J" , "Wu, Hao A" , "Ma, Maurice" , "Dong, Guo" , "You, Benjamin" , Meenakshi Aggarwal , Varun Sethi , "devel@edk2.groups.io" Subject: Re: [PATCH 1/1] MdeModulePkg: UART Dynamic clock freq Support Thread-Topic: [PATCH 1/1] MdeModulePkg: UART Dynamic clock freq Support Thread-Index: AQHV5vxFFsJqd3Pt70mpklSlz6YTDKhQMsGAgAAGC4CABaHNcA== Date: Mon, 23 Mar 2020 05:31:27 +0000 Message-ID: References: <20200219133135.10407-1-pankaj.bansal@oss.nxp.com> <20200219133135.10407-2-pankaj.bansal@oss.nxp.com> <734D49CCEBEEF84792F5B80ED585239D5C4A0C2C@SHSMSX104.ccr.corp.intel.com> <20200319153057.GV23627@bivouac.eciton.net> In-Reply-To: <20200319153057.GV23627@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=pankaj.bansal@oss.nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [49.36.129.11] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 3a96e4c0-b14e-417e-0487-08d7ceeb6f8a x-ms-traffictypediagnostic: VI1PR04MB5886:|VI1PR04MB5886: x-ms-exchange-sharedmailbox-routingagent-processed: True x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0351D213B3 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(346002)(396003)(39860400002)(136003)(376002)(366004)(199004)(53546011)(6506007)(316002)(19627235002)(110136005)(54906003)(7696005)(33656002)(8936002)(478600001)(81166006)(81156014)(8676002)(966005)(71200400001)(55016002)(186003)(2906002)(76116006)(66946007)(66476007)(66556008)(64756008)(66446008)(30864003)(4326008)(86362001)(9686003)(52536014)(5660300002)(26005);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB5886;H:VI1PR04MB5933.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:0; received-spf: None (protection.outlook.com: oss.nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4A4oSnnuowlF/ktIdsljqANUKnHs1xySiEOB9tznctQVRGmNmtRUbBrg2Pz9/B3+suuVJaH9zPi/qUbq6KeIan9jAzbTpoacljuobBJyzjdewVTccLNWJJW/BWJm5nisigkxlPz3ZaopqxvAdODJkptvH5vUrrZA3nrk0VG/yRoaXhcoQDnydXe5eTwfMG/qt6xA42U/zrmq4JVhVxVlAzemCsefQEynE+oBChrTAqVGZDJIKSd9v05Z8WlJyqqQpHMGVyEJpZ8pGZQpgQ3yP7SbM9niNOt/Oa6byKR4UZduXlI/z361eBgf7oqw9hV1XsVqZ/oSpJbBJdoc28UUAFal2epar4gwJPizaLsDlcGHsl9L1bQMOBsQuuTqDGtrQHZph1Mvq0Dsa4gHExfByvKAONJklLK6OIITXohVQN0eyRJWHmPbxEkgZ2g5aCMzBZ1fT1nyNTC5q+hYC4iXzJyrDRqH4Qcycq3mMqCG6/aufkuTGfGgN/mmvwYt+uKSLP1XZjeKLddkqYtRpdyugg== x-ms-exchange-antispam-messagedata: xN8pXV/p+bP4EuJkZnrfnizFYEmQKiRODLx01uTBifLmOLLEcIh2OzLkKaiL7J0DI5IWOGMMLP/FNiAyadebWj4wZy7QT85eB/NW9qWsZRrw/6nXw6DNadRywvkzOv/Xb9jtUqj8VH8/WhVmfY7OyQ== MIME-Version: 1.0 X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a96e4c0-b14e-417e-0487-08d7ceeb6f8a X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Mar 2020 05:31:27.7478 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HB+B8wpko1JA2HhkfRo8wjGanEgnrYJrVmb4G1rZP+ZSTBu66LyULk3YMv1EsPpFAl3FgAkxds2ISVHgRanL/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5886 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ray, I had thought of making PcdSerialClockRate as Dynamic PCD I had made changes for it too. But it doesn't work. SerialPortInitalize, which uses PcdSerialClockRate, gets called from DebugL= ib constructor. DebugLib is used by every module to print any info onto console. For DxeCore and PcdDxe, for which PcdLib instance is NULL, this results in = Assert : https://github.com/tianocore/edk2/blob/master/MdePkg/Library/BasePcdLibNull= /PcdLib.c#L123 The other approach that I thought of was, to copy BaseSerialPortLib16550 fo= r our platform and simply return EFI_SUCCESS from SerialPortInitalize. But as Leif pointed out, this results in code duplication. Regards, Pankaj Bansal > -----Original Message----- > From: Leif Lindholm > Sent: Thursday, March 19, 2020 9:01 PM > To: Ni, Ray > Cc: Pankaj Bansal (OSS) ; Wang, Jian J > ; Wu, Hao A ; Ma, Maurice > ; Dong, Guo ; You, Benjamin > ; Meenakshi Aggarwal > ; Varun Sethi ; > devel@edk2.groups.io; Pankaj Bansal > Subject: Re: [PATCH 1/1] MdeModulePkg: UART Dynamic clock freq Support >=20 > Hi Ray, >=20 > I agree it would be nice, but if not - this lets us get rid of > otherwise needless driver duplication. To me, that makes it worth a > little trivial churn. >=20 > / > Leif >=20 > On Thu, Mar 19, 2020 at 15:09:19 +0000, Ni, Ray wrote: > > It seems this change requires all platforms DSC to include the new libr= ary > class/instance. > > > > Is there a way that can avoid the platform impact? > > > > Thanks, > > Ray > > > > > -----Original Message----- > > > From: Pankaj Bansal > > > Sent: Wednesday, February 19, 2020 9:32 PM > > > To: Wang, Jian J ; Wu, Hao A > ; Ni, Ray ; Ma, Maurice > > > ; Dong, Guo ; You, > Benjamin ; Leif Lindholm > > > ; Meenakshi Aggarwal > ; Varun Sethi > > > Cc: devel@edk2.groups.io; Pankaj Bansal > > > Subject: [PATCH 1/1] MdeModulePkg: UART Dynamic clock freq Support > > > > > > From: Pankaj Bansal > > > > > > Some platform support dynamic clocking, which is controlled by some > > > jumper setting or hardware registers. Result of that is that PCD > > > PcdSerialClockRate would need to be updated for frequency change. > > > > > > This patch implements support for dynamic frequency for Uart. > > > > > > This patch implements default lib, which is using Pcd. Platform which > > > needs dynamic clocking needs implement SerialUartClockLib > > > > > > This patch is based on ArmPlatformPkg/Library/PL011UartClockLib > > > > > > Signed-off-by: Pankaj Bansal > > > --- > > > .../Include/Library/SerialUartClockLib.h | 21 +++++++++++++++ > > > .../BaseSerialPortLib16550.c | 9 ++++--- > > > .../BaseSerialPortLib16550.inf | 2 +- > > > .../BaseSerialUartClockLib.c | 24 +++++++++++++++++ > > > .../BaseSerialUartClockLib.inf | 27 +++++++++++++++++= ++ > > > MdeModulePkg/MdeModulePkg.dsc | 2 ++ > > > SourceLevelDebugPkg/SourceLevelDebugPkg.dsc | 1 + > > > UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 1 + > > > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 1 + > > > 9 files changed, 83 insertions(+), 5 deletions(-) > > > create mode 100644 MdeModulePkg/Include/Library/SerialUartClockLib.h > > > create mode 100644 > MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.c > > > create mode 100644 > MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.inf > > > > > > diff --git a/MdeModulePkg/Include/Library/SerialUartClockLib.h > b/MdeModulePkg/Include/Library/SerialUartClockLib.h > > > new file mode 100644 > > > index 000000000000..b6b16f71d4cf > > > --- /dev/null > > > +++ b/MdeModulePkg/Include/Library/SerialUartClockLib.h > > > @@ -0,0 +1,21 @@ > > > +/** @file > > > +* > > > +* Copyright 2020 NXP > > > +* > > > +* SPDX-License-Identifier: BSD-2-Clause-Patent > > > +* > > > +**/ > > > + > > > +#ifndef SERIAL_UART_CLOCK_LIB_H__ > > > +#define SERIAL_UART_CLOCK_LIB_H__ > > > + > > > +/** > > > + Return clock in for Uart IP > > > +**/ > > > +UINT32 > > > +EFIAPI > > > +BaseSerialPortGetClock ( > > > + VOID > > > + ); > > > + > > > +#endif > > > diff --git > a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c > > > b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.= c > > > index 9cb50dd80d56..2e0c05d5789e 100644 > > > --- > a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c > > > +++ > b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c > > > @@ -16,6 +16,7 @@ > > > #include > > > #include > > > #include > > > +#include > > > #include > > > > > > // > > > @@ -501,8 +502,8 @@ SerialPortInitialize ( > > > // Calculate divisor for baud generator > > > // Ref_Clk_Rate / Baud_Rate / 16 > > > // > > > - Divisor =3D PcdGet32 (PcdSerialClockRate) / (PcdGet32 (PcdSerialBa= udRate) * > 16); > > > - if ((PcdGet32 (PcdSerialClockRate) % (PcdGet32 (PcdSerialBaudRate)= * > 16)) >=3D PcdGet32 (PcdSerialBaudRate) * 8) { > > > + Divisor =3D BaseSerialPortGetClock () / (PcdGet32 (PcdSerialBaudRa= te) * 16); > > > + if ((BaseSerialPortGetClock () % (PcdGet32 (PcdSerialBaudRate) * 1= 6)) >=3D > PcdGet32 (PcdSerialBaudRate) * 8) { > > > Divisor++; > > > } > > > > > > @@ -1080,8 +1081,8 @@ SerialPortSetAttributes ( > > > // Calculate divisor for baud generator > > > // Ref_Clk_Rate / Baud_Rate / 16 > > > // > > > - Divisor =3D PcdGet32 (PcdSerialClockRate) / (SerialBaudRate * 16); > > > - if ((PcdGet32 (PcdSerialClockRate) % (SerialBaudRate * 16)) >=3D > SerialBaudRate * 8) { > > > + Divisor =3D BaseSerialPortGetClock () / (SerialBaudRate * 16); > > > + if ((BaseSerialPortGetClock () % (SerialBaudRate * 16)) >=3D Seria= lBaudRate * > 8) { > > > Divisor++; > > > } > > > > > > diff --git > a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf > > > > b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf > > > index 8b4ae3f1d4ee..b4c16504f211 100644 > > > --- > a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf > > > +++ > b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf > > > @@ -24,6 +24,7 @@ [LibraryClasses] > > > IoLib > > > PlatformHookLib > > > PciLib > > > + SerialUartClockLib > > > > > > [Sources] > > > BaseSerialPortLib16550.c > > > @@ -37,7 +38,6 @@ [Pcd] > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate ## > CONSUMES > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl ## > CONSUMES > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl ## > CONSUMES > > > - gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate ## > CONSUMES > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialPciDeviceInfo ## > CONSUMES > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialExtendedTxFifoSize ## > CONSUMES > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride ## > CONSUMES > > > diff --git > a/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.c > > > b/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.= c > > > new file mode 100644 > > > index 000000000000..7a0d0427cc4e > > > --- /dev/null > > > +++ > b/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.c > > > @@ -0,0 +1,24 @@ > > > +/** @file > > > +* > > > +* Copyright 2020 NXP > > > +* > > > +* SPDX-License-Identifier: BSD-2-Clause-Patent > > > +* > > > +**/ > > > + > > > +#include > > > +#include > > > + > > > +/** > > > + Return clock in for Uart IP > > > + > > > + @return Pcd PcdSerialClockRate > > > +**/ > > > +UINT32 > > > +EFIAPI > > > +BaseSerialPortGetClock ( > > > + VOID > > > + ) > > > +{ > > > + return PcdGet32 (PcdSerialClockRate); > > > +} > > > diff --git > a/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.inf > > > > b/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.inf > > > new file mode 100644 > > > index 000000000000..91ba69436ed6 > > > --- /dev/null > > > +++ > b/MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.inf > > > @@ -0,0 +1,27 @@ > > > +#/* @file > > > +# Copyright 2020 NXP > > > +# > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > +# > > > +#*/ > > > + > > > +[Defines] > > > + INF_VERSION =3D 0x0001001A > > > + BASE_NAME =3D BaseSerialUartClockLib > > > + FILE_GUID =3D fa65495e-d3c8-4ea3-9737-994e9cc= baf11 > > > + MODULE_TYPE =3D BASE > > > + VERSION_STRING =3D 1.0 > > > + LIBRARY_CLASS =3D SerialUartClockLib > > > + > > > +[Packages] > > > + MdePkg/MdePkg.dec > > > + MdeModulePkg/MdeModulePkg.dec > > > + > > > +[Sources.common] > > > + BaseSerialUartClockLib.c > > > + > > > +[LibraryClasses] > > > + PcdLib > > > + > > > +[Pcd] > > > + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate ## > CONSUMES > > > diff --git a/MdeModulePkg/MdeModulePkg.dsc > b/MdeModulePkg/MdeModulePkg.dsc > > > index f7dbb27ce25d..d581ca797b3b 100644 > > > --- a/MdeModulePkg/MdeModulePkg.dsc > > > +++ b/MdeModulePkg/MdeModulePkg.dsc > > > @@ -65,6 +65,7 @@ [LibraryClasses] > > > UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf > > > > SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/D > xeSecurityManagementLib.inf > > > > TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplat > e.inf > > > + > SerialUartClockLib|MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerial= U > artClockLib.inf > > > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.= inf > > > > CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf > > > PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf > > > @@ -292,6 +293,7 @@ [Components] > > > > MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf > > > > MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportSt > atusCodeLib.inf > > > > MdeModulePkg/Library/RuntimeResetSystemLib/RuntimeResetSystemLib.inf > > > + > MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerialUartClockLib.inf > > > > MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf > > > > MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf > > > > MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLi > b.inf > > > diff --git a/SourceLevelDebugPkg/SourceLevelDebugPkg.dsc > b/SourceLevelDebugPkg/SourceLevelDebugPkg.dsc > > > index a1a1b81d03cb..c0ad88f26341 100644 > > > --- a/SourceLevelDebugPkg/SourceLevelDebugPkg.dsc > > > +++ b/SourceLevelDebugPkg/SourceLevelDebugPkg.dsc > > > @@ -33,6 +33,7 @@ [LibraryClasses.common] > > > > SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizat= i > onLib.inf > > > LocalApicLib|UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf > > > > PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeC > offGetEntryPointLib.inf > > > + > SerialUartClockLib|MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerial= U > artClockLib.inf > > > > SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortL= ib > 16550.inf > > > > PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebu > g/PeCoffExtraActionLibDebug.inf > > > > TimerLib|UefiCpuPkg/Library/SecPeiDxeTimerLibUefiCpu/SecPeiDxeTimerLibUe > fiCpu.inf > > > diff --git a/UefiPayloadPkg/UefiPayloadPkgIa32.dsc > b/UefiPayloadPkg/UefiPayloadPkgIa32.dsc > > > index d52945442e0e..a556a32b272c 100644 > > > --- a/UefiPayloadPkg/UefiPayloadPkgIa32.dsc > > > +++ b/UefiPayloadPkg/UefiPayloadPkgIa32.dsc > > > @@ -174,6 +174,7 @@ [LibraryClasses] > > > # > > > TimerLib|UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf > > > > ResetSystemLib|UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf > > > + > SerialUartClockLib|MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerial= U > artClockLib.inf > > > > SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortL= ib > 16550.inf > > > > PlatformHookLib|UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.in > f > > > > PlatformBootManagerLib|UefiPayloadPkg/Library/PlatformBootManagerLib/Pl > atformBootManagerLib.inf > > > diff --git a/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > b/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > > > index 0736cd995476..7e86375fe57d 100644 > > > --- a/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > > > +++ b/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > > > @@ -175,6 +175,7 @@ [LibraryClasses] > > > # > > > TimerLib|UefiPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf > > > > ResetSystemLib|UefiPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf > > > + > SerialUartClockLib|MdeModulePkg/Library/BaseSerialUartClockLib/BaseSerial= U > artClockLib.inf > > > > SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortL= ib > 16550.inf > > > > PlatformHookLib|UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.in > f > > > > PlatformBootManagerLib|UefiPayloadPkg/Library/PlatformBootManagerLib/Pl > atformBootManagerLib.inf > > > -- > > > 2.17.1 > >