From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.18790.1682686477469927297 for ; Fri, 28 Apr 2023 05:54:37 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=IYL7ci8K; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: gua.guo@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1682686477; x=1714222477; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=wtgzhvtX6yCIAaNvbMrS4Pc21exzkqwU7CUempRKUMY=; b=IYL7ci8KTMEGW9IZgfAz7Mvrt8DL0ReZYzNUBxRiH2MqRL2LXrDYa4ut VYjAcc4wO4MzUbUFIkbbPrK1Bva9fLEY7sz5laAytWQafuMSwYzjp14/H Lt7TphO7dR33Q7XuOG8m91Xe1eTcBbG/bY/wAPA5etbASgUydaWN7ETx5 /YxYslHYUC4DtuY1uKLesJ1riWONJ3dBepQRJHYtncFKquBlmJR3Fi3RN F580UMclUhGfplfClR3AknJVbUGvgHi8kknHwbYkF961BMWO6r9DEsefU i4NGTZa0sr8DRyTylXzVfdVRcI2YsM4p6zKkov27vUfYU+jBKnYtmEu52 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10694"; a="347762048" X-IronPort-AV: E=Sophos;i="5.99,234,1677571200"; d="scan'208";a="347762048" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2023 05:54:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10694"; a="869181423" X-IronPort-AV: E=Sophos;i="5.99,234,1677571200"; d="scan'208";a="869181423" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga005.jf.intel.com with ESMTP; 28 Apr 2023 05:54:36 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Fri, 28 Apr 2023 05:54:36 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Fri, 28 Apr 2023 05:54:36 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.172) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Fri, 28 Apr 2023 05:54:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EnJyyUiCRQx0mgkJnlo+kp/69geuIAQUckptJS1xiqYSvCVBVV94bn/hRaUzy3+PVFVCSetpZa/uVBm0ossNeXP5y9pUKqK26jFXgcAHGjHa2jn1huBVtYSbutuJedLaJe2HBqVRdFMgjGfo6JQfWeSlPwavk8svXbTK5eiSmW+1TGvAa9Rt7LFb1MSqiwmRLd/eBqBEIysjFzaoFpzCXTxV0YNMUvNHV+Uqce/tNRMzfq1gr1j8LDW+TQYa63BW9PN3qY6TuKXod/KAAHHBlrLTgWIXnWhhjyQ5Prfrav4mE7086iYCaU6vqYAbGAIATjY+GKE+RSAsqRoN7tJicA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AV9q4umM0B0sjV+1ngs0rKFKEIilT/hkpn8nnDbhTMU=; b=GUi7DrLdR2t6AKiSGK1UefLSNFIaTjn15cHMxZLzuK+Xud2drjnI+/218ZENyn+b9Vggp0jOLjscW0zZufOKhoQaSWnXOU9/LSOJK6S0MUaHyBfSB4CpcHTVbm5hekaHqzfk9XfwHEePJ9HVY2YywUQ6N5zj6He9RkG2u+TrloLhfQrSUEXH39LAVtSS/Bxj1TullgRIe9FwhDVBWoCghHHLHQCxKM85366G96aHjmOKZMuwuslxXz3A0hpHNm2r2K6ImamBchqR+gK+2e+t8cgmB2pvNtbnIGAj55ZByidcowSxmd0ZFw8QGCnLdln4wyjQEgbIZIYWeCXgw9FXLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BL1PR11MB5478.namprd11.prod.outlook.com (2603:10b6:208:31d::12) by SJ0PR11MB5215.namprd11.prod.outlook.com (2603:10b6:a03:2d9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.24; Fri, 28 Apr 2023 12:54:32 +0000 Received: from BL1PR11MB5478.namprd11.prod.outlook.com ([fe80::2176:be49:df74:bcc7]) by BL1PR11MB5478.namprd11.prod.outlook.com ([fe80::2176:be49:df74:bcc7%3]) with mapi id 15.20.6340.024; Fri, 28 Apr 2023 12:54:32 +0000 From: "Guo, Gua" To: "Hsieh, PaytonX" , "devel@edk2.groups.io" CC: "Dong, Guo" , "Ni, Ray" , "Rhodes, Sean" , "Lu, James" Subject: Re: [PATCH v3] UefiPayloadPkg: Fix issues when MULTIPLE_DEBUG_PORT_SUPPORT is true Thread-Topic: [PATCH v3] UefiPayloadPkg: Fix issues when MULTIPLE_DEBUG_PORT_SUPPORT is true Thread-Index: AQHZecZZW47wyZt2NUi4JSC2DeKay69ArTTQ Date: Fri, 28 Apr 2023 12:54:32 +0000 Message-ID: References: <20230428114101.2483-1-paytonx.hsieh@intel.com> In-Reply-To: <20230428114101.2483-1-paytonx.hsieh@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR11MB5478:EE_|SJ0PR11MB5215:EE_ x-ms-office365-filtering-correlation-id: a94d17e5-a750-4aec-749a-08db47e7b666 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8LA5efuBUtw6UlVhs2byt6W/JStz/jeBRXkEp7fyo0/gtqXuiIk9RB3xeG1fZ1vy4TrZkurDbCawS3CVfnS+4y/Lqheghf0KfrMElRwuEU4Bli6qiVyMwJ3zEZYljvRAtYzpBJvSn4PjcSavTTojB6XfHRENuLAePyweRFMWfUdhDHrmjFTXqe0uaXBQdyqoNt7TB9RsTnREXWNWqS38a73uLDyiuLKsAdBWec+m4MQAqJORNzogz2Jmg/Bk4qQh96Q9tgfgGFHSDqaq3avSINYRWpo1XDPYCEgdaiFQ4900i9VkOJZTW2aHc+SfRifytbgKBvBOyFtxPK5o+hQ9lFBwdCkj8aM4R23TE5fPOnukLFwROfREhYBTisD4onsqeNyZ+587lBBZtZZ663JnkcofJhBvLoSEdA4LcJ6n1t4IDqh5rOcfhXtiX6O99B/BnbsBoPZyqG+TzsqaWwvYtmW49EKaWrGNipBt7FY7n1HRClB5o6pqZ1vjadj5GW6NjBq2goUUbSEiL5EYeclweQ6KJXKI0igCOoQhlzzy1lcRUFZRiE7e7gyV5uERVaFElhiwpOhq9e3J65I6MsABYg8icCC3/OrUrUF0ej/eii8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5478.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(366004)(376002)(346002)(136003)(396003)(451199021)(38100700002)(54906003)(8676002)(8936002)(86362001)(83380400001)(38070700005)(5660300002)(122000001)(52536014)(110136005)(478600001)(316002)(71200400001)(7696005)(33656002)(66476007)(66556008)(66946007)(76116006)(64756008)(66446008)(966005)(41300700001)(186003)(4326008)(55016003)(26005)(6506007)(2906002)(53546011)(107886003)(82960400001)(9686003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?JePLJKf8yRz6S7OFbRojpNTdTSP2O7b3/lVcZYlM7kdv7v4t01120mQoHLFu?= =?us-ascii?Q?kRzec1vyqs0tBG4zeLhe40FhyKsEbSM0VQDXlNacANQ7lv+Abj0HqW5r+RqE?= =?us-ascii?Q?Pv4nTkKdY7Hx4ZBYIC84reReyx711oHerEyu11YznJ/LXLjgw/0eWbL+/hve?= =?us-ascii?Q?vEMyFapMOmVwtdo72XKcdqnKH1KuV7PUHtyUAqpbmDB4Vf/NGGB7rS5JcRlO?= =?us-ascii?Q?rqLsbVgKwttcTTF30W/SwusSdAz+VHo4qPD5X26gbEWMqo9JaLMBeD/xmRLI?= =?us-ascii?Q?CAD1qGCQLO1zfqUl4M+T3mTcradH/4jQwXFGaX/0bT4OrNPHlgbXerIwLYnE?= =?us-ascii?Q?rdHuSFg24vPlbl2wVCOyESa6oEK8wPrwWRkQUK/UeHzs8TpT6Vs0HtHmtLH/?= =?us-ascii?Q?73m8QakRbdENMr/2S21RDS0G814BrubmWcDNG/2+LBF2tokZcIaMi9VomDlU?= =?us-ascii?Q?EYUKh5QngRH+m1fIzt98Dse3UCNl9m8K/+RdbtLFNTOHp/DGupWrT8Xsl2Nu?= =?us-ascii?Q?pFKSZ+aBUnBRPyoDKx5Liadtb607NSv/vuKauqzFhtmi+KHuEw3PXhpiVlbp?= =?us-ascii?Q?YElCdyk/Qmbxvql9cEAXHp9DJSU6GISj4Lnn5ERRNkmbcXcA7FWDQ7Wbu1CI?= =?us-ascii?Q?ZWlBW/2SOn1mLc1Nn5LomCb3yB9M2DMcAeC3ba9yDkF0kfTQP8j/vHe8EgKX?= =?us-ascii?Q?wVidvqhcesyJ/tV5r5bkHsbWsxqnl7XxhR6196SWamrWLzT327NJoA6Pe5Mi?= =?us-ascii?Q?CLbqkAoPGIIotn5cuOhIgJTvppdQZZQyZru2PXXuJFNx8XKna8t+YlRhWrHC?= =?us-ascii?Q?Xf5DQg3M1T86KhQyXfu1vuY9lah9IE/j+jk2mNNQR4dbfo/3+shgxeQeoe96?= =?us-ascii?Q?NevCqAYhS12gsmlYOhh1WPbHyur5iokkEe/BuScgmA7/XtAK02p9I6PqWhtF?= =?us-ascii?Q?iirVdOTA7ebyaUw2WYlFzmsmsNpuTXi4liLutnCzZRi69ApBy01fMlH9yDtw?= =?us-ascii?Q?KWOSdJObbnCA40fqwgsewMNZpD8FTMVv48c28S+2bIlaPv45FyItajw2Rn9q?= =?us-ascii?Q?11Z7v8tZAfA+64Z0MB72GpQDtR/uFNhnCYbOZ/P87euCZof0nFxloqkPoTPe?= =?us-ascii?Q?lTFuK61m8N2qPFW6FfepEUKiQiulXomc9kySyX4VU16+69xE3/UYOKknqMkV?= =?us-ascii?Q?eFL6LqHO/SLUBlvakBiTOUUiC9LJm68ppSO5yqutlgN6T4SzvFAoNkfyaEEY?= =?us-ascii?Q?y0GVMwFwWnKsyRTrXrOh7R3D+i8RGRObQYQnPXvkGra3pteFX/sNAsYjnDrq?= =?us-ascii?Q?1rk5YFnWks6YSh6v75zipw1nwv7EGXPUI8oTwIwKmb2ZNbYpx7/afjIa+idi?= =?us-ascii?Q?WAG+BO05nd1pylyZmJekjkPZRg2lQLMNMnrQDbQdn+I2TCnIypX6Oc3qr3D3?= =?us-ascii?Q?jXgHntnycSA9Po3a4oWUAQyDmYQpKMxeLZKGPqWLpozsdy3kBwxtVF4JKXOz?= =?us-ascii?Q?Z5OQ/+nvuwnadSVPm4EdJ3r74KGm1AWPatrXVDI8zbUyF8r6n+BNGCBnGyPn?= =?us-ascii?Q?CBq2yykYhT8hWwy5eqA=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5478.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a94d17e5-a750-4aec-749a-08db47e7b666 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2023 12:54:32.5837 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NYC4BQt2aYD8HJXo+wwqntcJIpPymfwcAcjNX/LlW2WgNCJ0p0JunMleD/qRkqH1mMKvxRBoZX6z9q02Lcd2CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5215 Return-Path: gua.guo@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks for follow up that. Reviewed-by: Gua Guo -----Original Message----- From: Hsieh, PaytonX =20 Sent: Friday, April 28, 2023 7:41 PM To: devel@edk2.groups.io Cc: Hsieh, PaytonX ; Dong, Guo ; Ni, Ray ; Rhodes, Sean ; Lu, Ja= mes ; Guo, Gua Subject: [PATCH v3] UefiPayloadPkg: Fix issues when MULTIPLE_DEBUG_PORT_SUP= PORT is true From: PaytonX Hsieh REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4427 1. Since UART speed is slower than CPU, BIOS need to check the write buffer is empty, to avoid overwrite the buffer content. 2. LPSS UART might disable MMIO space for Windows debug usage during ExitBootServices event. BIOS need to avoid access the MMIO space after ExitBootServices. Cc: Guo Dong Cc: Ray Ni Cc: Sean Rhodes Cc: James Lu Cc: Gua Guo Signed-off-by: PaytonX Hsieh --- UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c | = 15 +++++- UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.c | = 56 ++++++++++++++++++++ UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.inf | = 41 ++++++++++++++ UefiPayloadPkg/UefiPayloadPkg.dsc | = 11 +++- 4 files changed, 120 insertions(+), 3 deletions(-) diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibH= ob.c b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c index 8216195c62..82d0dd5855 100644 --- a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c @@ -52,7 +52,8 @@ typedef struct { } UART_INFO; =20 UART_INFO mUartInfo[MAX_SIZE]; -UINT8 mUartCount =3D 0; +UINT8 mUartCount =3D 0; +BOOLEAN mBaseSerialPortLibHobAtRuntime =3D FALSE; =20 /** Reads an 8-bit register. If UseMmio is TRUE, then the value is read from @@ -285,6 +286,11 @@ SerialPortWrite ( UseMmio =3D mUartInfo[Count].UseMmio; Stride =3D mUartInfo[Count].RegisterStride; =20 + if (UseMmio && mBaseSerialPortLibHobAtRuntime) { + Count++; + continue; + } + if (BaseAddress =3D=3D 0) { Count++; continue; @@ -294,6 +300,13 @@ SerialPortWrite ( BytesLeft =3D NumberOfBytes; =20 while (BytesLeft !=3D 0) { + // + // Wait for the serial port to be ready, to make sure both the trans= mit FIFO + // and shift register empty. + // + while ((SerialPortReadRegister (BaseAddress, R_UART_LSR, UseMmio, St= ride) & B_UART_LSR_TXRDY) =3D=3D 0) { + } + // // Fill the entire Tx FIFO // diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortL= ibHob.c b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibH= ob.c new file mode 100644 index 0000000000..6106e9a933 --- /dev/null +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.c @@ -0,0 +1,56 @@ +/** @file + UART Serial Port library functions. + + Copyright (c) 2023, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +extern BOOLEAN mBaseSerialPortLibHobAtRuntime; + +/** + Set mSerialIoUartLibAtRuntime flag as TRUE after ExitBootServices. + + @param[in] Event The Event that is being processed. + @param[in] Context The Event Context. + +**/ +STATIC +VOID +EFIAPI +BaseSerialPortLibHobExitBootServicesEvent ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + mBaseSerialPortLibHobAtRuntime =3D TRUE; +} + +/** + The constructor function registers a callback for the ExitBootServices e= vent. + + @param[in] ImageHandle The firmware allocated handle for the EFI imag= e. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The operation completed successfully. + @retval other Either the serial port failed to initialize or the + ExitBootServices event callback registration faile= d. +**/ +EFI_STATUS +EFIAPI +DxeBaseSerialPortLibHobConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_EVENT SerialPortLibHobExitBootServicesEvent; + + return SystemTable->BootServices->CreateEvent ( + EVT_SIGNAL_EXIT_BOOT_SERVICES, + TPL_NOTIFY, + BaseSerialPortLibHobExitBootServices= Event, + NULL, + &SerialPortLibHobExitBootServicesEve= nt + ); +} diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortL= ibHob.inf b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLi= bHob.inf new file mode 100644 index 0000000000..7bb3a6ae96 --- /dev/null +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.i= nf @@ -0,0 +1,41 @@ +## @file +# SerialPortLib instance for UART information retrieved from bootloader. +# +# Copyright (c) 2023, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D DxeBaseSerialPortLibHob + FILE_GUID =3D c8def0c5-48e7-45b8-8299-485ea2e63b2c + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D SerialPortLib|DXE_CORE DXE_DRIVER DXE= _RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER + CONSTRUCTOR =3D DxeBaseSerialPortLibHobConstructor + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + PcdLib + IoLib + HobLib + TimerLib + +[Sources] + DxeBaseSerialPortLibHob.c + BaseSerialPortLibHob.c + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialExtendedTxFifoSize + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl + +[Guids] + gUniversalPayloadSerialPortInfoGuid diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayload= Pkg.dsc index 9847f189ff..998d222909 100644 --- a/UefiPayloadPkg/UefiPayloadPkg.dsc +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc @@ -256,7 +256,11 @@ SerialPortLib|UefiPayloadPkg/Library/CbSerialPortLib/CbSerialPortLib.inf PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatfor= mHookLibNull.inf !else - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf + !if $(MULTIPLE_DEBUG_PORT_SUPPORT) =3D=3D TRUE + SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSeria= lPortLibHob.inf + !else + SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPo= rtLib16550.inf + !endif PlatformHookLib|UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.i= nf !endif PlatformBootManagerLib|UefiPayloadPkg/Library/PlatformBootManagerLib/Pla= tformBootManagerLib.inf @@ -313,6 +317,9 @@ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf DxeHobListLib|UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull= .inf DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.in= f +!if $(MULTIPLE_DEBUG_PORT_SUPPORT) =3D=3D TRUE + SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPort= LibHob.inf +!endif =20 [LibraryClasses.common.DXE_CORE] DxeHobListLib|UefiPayloadPkg/Library/DxeHobListLibNull/DxeHobListLibNull= .inf @@ -617,7 +624,7 @@ !if $(MULTIPLE_DEBUG_PORT_SUPPORT) =3D=3D TRUE DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialP= ort.inf - SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSeri= alPortLibHob.inf + SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseS= erialPortLibHob.inf !endif NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompre= ssLib.inf } --=20 2.39.2.windows.1