From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id BF458AC08F0 for ; Mon, 3 Jun 2024 02:18:30 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Tjx4uHVf1ItyQ5vDJS0dVIzqNpQt3MBdmRW4w4eT2cA=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1717381110; v=1; b=uDv6YFRXqUVy5XK36jPGLrDQoPU94NpvdjoyBm/d2BkVD/NyrkH5FBGDP1Lv0ZQ9bxxtS7J5 sCq/kOM42DBLjBnjDwQA3EQ6IpkNwK33ujpYdfEXELe7811wmiFRyyGJNw7CGOKY32wMSVIkfsY cx38SRlD6P6haiizWQhNxuD4W0z140ZGV8dAINzyS17s9eF3zkD6DT88YPbPmN7c6o3XpTw16kF +o35/I9Xjo4d6KiRlCeO8b3uvZhxqQW3ceqxd0lUqfESwj2aPOQF/XqNDqxSy8+PwvY2FDOna6H YkWpF8ZuG2LXMoGZiAFXKoQ3FYBtr9G/ka6bv3647xhJg== X-Received: by 127.0.0.2 with SMTP id zL98YY7687511xtL0xIcJUEu; Sun, 02 Jun 2024 19:18:29 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by mx.groups.io with SMTP id smtpd.web11.73921.1717381108732933005 for ; Sun, 02 Jun 2024 19:18:28 -0700 X-CSE-ConnectionGUID: lYzpYks4R3unEOelH+U58g== X-CSE-MsgGUID: KL0885PUQiC39oIE8gDUVA== X-IronPort-AV: E=McAfee;i="6600,9927,11091"; a="24517302" X-IronPort-AV: E=Sophos;i="6.08,210,1712646000"; d="scan'208";a="24517302" X-Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2024 19:18:28 -0700 X-CSE-ConnectionGUID: 0cVM/jTcRKeAbCcJeo9zbg== X-CSE-MsgGUID: yIaaG9XwTMmrz94aXyNkCA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,210,1712646000"; d="scan'208";a="41656167" X-Received: from linusliu-desk1.gar.corp.intel.com ([10.225.76.64]) by orviesa003.jf.intel.com with ESMTP; 02 Jun 2024 19:18:27 -0700 From: "Linus Liu" To: devel@edk2.groups.io Cc: Benny Lin , Gua Guo , Chasel Chiu , James Lu , Dhaval Sharma Subject: [edk2-devel] [PATCH v4 3/6] UefiPayloadPkg: Support Debug function when Hob was not available. Date: Sun, 2 Jun 2024 19:18:22 -0700 Message-Id: <20240603021822.1855-1-linus.liu@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Sun, 02 Jun 2024 19:18:28 -0700 Resent-From: linus.liu@intel.com Reply-To: devel@edk2.groups.io,linus.liu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: MtFMDDIxqHzD2gt7Mbkq1rZHx7686176AA= Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=uDv6YFRX; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io Initialize mUartInfo with PCD for debug message when Hob was not available. Cc: Benny Lin Cc: Gua Guo Cc: Chasel Chiu Cc: James Lu Cc: Dhaval Sharma Signed-off-by: Linus Liu --- UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c = | 69 ++++++++++++++++++++ UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLevelLibH= ob.c | 5 ++ UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c = | 7 +- UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c = | 4 ++ UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.inf = | 10 +++ UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.inf = | 13 ++-- UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf = | 1 + 7 files changed, 104 insertions(+), 5 deletions(-) diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibH= ob.c b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c index 82d0dd585508..55e85dce8598 100644 --- a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.c @@ -143,6 +143,75 @@ SerialPortInitialize ( return RETURN_SUCCESS;=0D }=0D =0D + if (GetHobList () =3D=3D NULL) {=0D + mUartCount =3D 0;=0D + SerialRegisterBase =3D PcdGet64 (PcdSerialRegisterBase);=0D + MmioEnable =3D PcdGetBool (PcdSerialUseMmio);=0D + BaudRate =3D PcdGet32 (PcdSerialBaudRate);=0D + RegisterStride =3D (UINT8)PcdGet32 (PcdSerialRegisterStride);=0D +=0D + mUartInfo[mUartCount].BaseAddress =3D SerialRegisterBase;=0D + mUartInfo[mUartCount].UseMmio =3D MmioEnable;=0D + mUartInfo[mUartCount].BaudRate =3D BaudRate;=0D + mUartInfo[mUartCount].RegisterStride =3D RegisterStride;=0D + mUartCount++;=0D +=0D + Divisor =3D PcdGet32 (PcdSerialClockRate) / (BaudRate * 16);=0D + if ((PcdGet32 (PcdSerialClockRate) % (BaudRate * 16)) >=3D BaudRate * = 8) {=0D + Divisor++;=0D + }=0D +=0D + //=0D + // See if the serial port is already initialized=0D + //=0D + Initialized =3D TRUE;=0D + if ((SerialPortReadRegister (SerialRegisterBase, R_UART_LCR, MmioEnabl= e, RegisterStride) & 0x3F) !=3D (PcdGet8 (PcdSerialLineControl) & 0x3F)) {= =0D + Initialized =3D FALSE;=0D + }=0D +=0D + Value =3D (UINT8)(SerialPortReadRegister (SerialRegisterBase, R_UART_L= CR, MmioEnable, RegisterStride) | B_UART_LCR_DLAB);=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_LCR, Value, MmioEn= able, RegisterStride);=0D + CurrentDivisor =3D SerialPortReadRegister (SerialRegisterBase, R_UAR= T_BAUD_HIGH, MmioEnable, RegisterStride) << 8;=0D + CurrentDivisor |=3D (UINT32)SerialPortReadRegister (SerialRegisterBase= , R_UART_BAUD_LOW, MmioEnable, RegisterStride);=0D + Value =3D (UINT8)(SerialPortReadRegister (SerialRegisterBase= , R_UART_LCR, MmioEnable, RegisterStride) & ~B_UART_LCR_DLAB);=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_LCR, Value, MmioEn= able, RegisterStride);=0D + if (CurrentDivisor !=3D Divisor) {=0D + Initialized =3D FALSE;=0D + }=0D +=0D + //=0D + // Configure baud rate=0D + //=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_LCR, B_UART_LCR_DL= AB, MmioEnable, RegisterStride);=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_BAUD_HIGH, (UINT8)= (Divisor >> 8), MmioEnable, RegisterStride);=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_BAUD_LOW, (UINT8)(= Divisor & 0xff), MmioEnable, RegisterStride);=0D +=0D + //=0D + // Clear DLAB and configure Data Bits, Parity, and Stop Bits.=0D + // Strip reserved bits from PcdSerialLineControl=0D + //=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_LCR, (UINT8)(PcdGe= t8 (PcdSerialLineControl) & 0x3F), MmioEnable, RegisterStride);=0D +=0D + //=0D + // Enable and reset FIFOs=0D + // Strip reserved bits from PcdSerialFifoControl=0D + //=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_FCR, 0x00, MmioEna= ble, RegisterStride);=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_FCR, (UINT8)(PcdGe= t8 (PcdSerialFifoControl) & (B_UART_FCR_FIFOE | B_UART_FCR_FIFO64)), MmioEn= able, RegisterStride);=0D +=0D + //=0D + // Set FIFO Polled Mode by clearing IER after setting FCR=0D + //=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_IER, 0x00, MmioEna= ble, RegisterStride);=0D +=0D + //=0D + // Put Modem Control Register(MCR) into its reset state of 0x00.=0D + //=0D + SerialPortWriteRegister (SerialRegisterBase, R_UART_MCR, 0x00, MmioEna= ble, RegisterStride);=0D +=0D + return RETURN_SUCCESS;=0D + }=0D +=0D GuidHob =3D GetFirstGuidHob (&gUniversalPayloadSerialPortInfoGuid);=0D while (GuidHob !=3D NULL) {=0D SerialPortInfo =3D (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *)GET_GUID_= HOB_DATA (GuidHob);=0D diff --git a/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintEr= rorLevelLibHob.c b/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugP= rintErrorLevelLibHob.c index 10bdbe2bbc1f..e9cce86bb853 100644 --- a/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLeve= lLibHob.c +++ b/UefiPayloadPkg/Library/DebugPrintErrorLevelLibHob/DebugPrintErrorLeve= lLibHob.c @@ -13,6 +13,7 @@ #include =0D #include =0D #include =0D +#include =0D #include =0D #include =0D =0D @@ -35,6 +36,10 @@ GetDebugPrintErrorLevel ( UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;=0D UEFI_PAYLOAD_DEBUG_PRINT_ERROR_LEVEL *DebugPrintErrorLevel;=0D =0D + if (GetHobList () =3D=3D NULL) {=0D + return PcdGet32 (PcdDebugPrintErrorLevel);=0D + }=0D +=0D if (!gDebugPrintErrorLevelInitialized) {=0D gDebugPrintErrorLevelInitialized =3D TRUE;=0D gDebugPrintErrorLevel =3D PcdGet32 (PcdDebugPrintErrorLevel= );=0D diff --git a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c b/UefiPayloadP= kg/Library/PayloadEntryHobLib/Hob.c index 51c2e28d7ddd..05cd0ea997f1 100644 --- a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c +++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c @@ -31,7 +31,6 @@ GetHobList ( VOID=0D )=0D {=0D - ASSERT (mHobList !=3D NULL);=0D return mHobList;=0D }=0D =0D @@ -109,6 +108,7 @@ CreateHob ( VOID *Hob;=0D =0D HandOffHob =3D GetHobList ();=0D + ASSERT (HandOffHob !=3D NULL);=0D =0D //=0D // Check Length to avoid data overflow.=0D @@ -175,6 +175,7 @@ BuildResourceDescriptorHob ( Hob->ResourceAttribute =3D ResourceAttribute;=0D Hob->PhysicalStart =3D PhysicalStart;=0D Hob->ResourceLength =3D NumberOfBytes;=0D + ZeroMem (&(Hob->Owner), sizeof (EFI_GUID));=0D }=0D =0D /**=0D @@ -239,6 +240,7 @@ GetFirstHob ( VOID *HobList;=0D =0D HobList =3D GetHobList ();=0D + ASSERT (HobList !=3D NULL);=0D return GetNextHob (Type, HobList);=0D }=0D =0D @@ -305,6 +307,7 @@ GetFirstGuidHob ( VOID *HobList;=0D =0D HobList =3D GetHobList ();=0D + ASSERT (HobList !=3D NULL);=0D return GetNextGuidHob (Guid, HobList);=0D }=0D =0D @@ -651,6 +654,7 @@ UpdateStackHob ( EFI_PEI_HOB_POINTERS Hob;=0D =0D Hob.Raw =3D GetHobList ();=0D + ASSERT (Hob.Raw !=3D NULL);=0D while ((Hob.Raw =3D GetNextHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, Hob.Raw)= ) !=3D NULL) {=0D if (CompareGuid (&gEfiHobMemoryAllocStackGuid, &(Hob.MemoryAllocationS= tack->AllocDescriptor.Name))) {=0D //=0D @@ -709,6 +713,7 @@ BuildMemoryAllocationHob ( }=0D =0D ZeroMem (&(Hob->AllocDescriptor.Name), sizeof (EFI_GUID));=0D +=0D Hob->AllocDescriptor.MemoryBaseAddress =3D BaseAddress;=0D Hob->AllocDescriptor.MemoryLength =3D Length;=0D Hob->AllocDescriptor.MemoryType =3D MemoryType;=0D diff --git a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c b/Uef= iPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c index 60a17b8fc256..efaab326bb68 100644 --- a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c +++ b/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c @@ -51,6 +51,10 @@ PlatformHookSerialPortInitialize ( UINT8 *GuidHob;=0D UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;=0D =0D + if (GetHobList () =3D=3D NULL) {=0D + return RETURN_SUCCESS;=0D + }=0D +=0D GuidHob =3D GetFirstGuidHob (&gUniversalPayloadSerialPortInfoGuid);=0D if (GuidHob =3D=3D NULL) {=0D return EFI_NOT_FOUND;=0D diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibH= ob.inf b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.i= nf index ac857d3eea7c..76e431c2f102 100644 --- a/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.inf +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/BaseSerialPortLibHob.inf @@ -18,6 +18,7 @@ [Packages]=0D MdePkg/MdePkg.dec=0D MdeModulePkg/MdeModulePkg.dec=0D + UefiPayloadPkg/UefiPayloadPkg.dec=0D =0D [LibraryClasses]=0D PcdLib=0D @@ -34,6 +35,15 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialExtendedTxFifoSize=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialDetectCable ## SOMET= IMES_CONSUMES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialPciDeviceInfo ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride ## CONSU= MES=0D + gUefiPayloadPkgTokenSpaceGuid.PcdHandOffFdtEnable=0D +=0D +=0D =0D [Guids]=0D gUniversalPayloadSerialPortInfoGuid=0D diff --git a/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortL= ibHob.inf b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLi= bHob.inf index 7bb3a6ae96dd..552ae6c4f786 100644 --- a/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.i= nf +++ b/UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.i= nf @@ -6,7 +6,6 @@ # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D ##=0D -=0D [Defines]=0D INF_VERSION =3D 0x00010005=0D BASE_NAME =3D DxeBaseSerialPortLibHob=0D @@ -15,27 +14,33 @@ VERSION_STRING =3D 1.0=0D LIBRARY_CLASS =3D SerialPortLib|DXE_CORE DXE_DRIVER DXE= _RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER=0D CONSTRUCTOR =3D DxeBaseSerialPortLibHobConstructor=0D -=0D [Packages]=0D MdePkg/MdePkg.dec=0D MdeModulePkg/MdeModulePkg.dec=0D + UefiPayloadPkg/UefiPayloadPkg.dec=0D =0D [LibraryClasses]=0D PcdLib=0D IoLib=0D HobLib=0D TimerLib=0D -=0D + PlatformHookLib=0D [Sources]=0D DxeBaseSerialPortLibHob.c=0D BaseSerialPortLibHob.c=0D -=0D [Pcd]=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialExtendedTxFifoSize=0D gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialDetectCable ## SOMET= IMES_CONSUMES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialPciDeviceInfo ## CONSU= MES=0D + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride ## CONSU= MES=0D + gUefiPayloadPkgTokenSpaceGuid.PcdHandOffFdtEnable=0D =0D [Guids]=0D gUniversalPayloadSerialPortInfoGuid=0D diff --git a/UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf b/UefiPay= loadPkg/Library/PayloadEntryHobLib/HobLib.inf index cbb4f02efc15..6a19cfb5c214 100644 --- a/UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf +++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/HobLib.inf @@ -36,4 +36,5 @@ [Guids]=0D gEfiHobMemoryAllocModuleGuid=0D gEfiHobMemoryAllocStackGuid=0D + gUniversalPayloadDeviceTreeGuid=0D =0D --=20 2.39.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119418): https://edk2.groups.io/g/devel/message/119418 Mute This Topic: https://groups.io/mt/106455159/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-