From nobody Sun May 5 14:12:21 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; dkim=fail spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1499099257798513.1853985526187; Mon, 3 Jul 2017 09:27:37 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 835FF21A00AC2; Mon, 3 Jul 2017 09:25:58 -0700 (PDT) Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A494B21A00AC2 for ; Mon, 3 Jul 2017 09:25:57 -0700 (PDT) Received: by mail-wm0-x22c.google.com with SMTP id z75so39237243wmc.0 for ; Mon, 03 Jul 2017 09:27:34 -0700 (PDT) Received: from mohikan.hemma.eciton.net (cpc92316-cmbg19-2-0-cust118.5-4.cable.virginm.net. [82.12.0.119]) by smtp.gmail.com with ESMTPSA id t204sm7686334wme.2.2017.07.03.09.27.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Jul 2017 09:27:32 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=lhO62+k2trKTtNrrt9tNU2Xp3Olz8UGmb66si/NpkfY=; b=I3/3AR3QZwO9h1Z2aBgwTsaaarCyZa33az7E17pGwCWvU38jz6xBN9IbwC31+gcoG/ ncu5LwNIm5xxMwzOM+CuqDPIB7vXmo9Bi4h1BE3ek+EvYSFI/a7BJoMbo7oJDNCbkRqR aNOm3j77dTI+a8EYXIi7g6+1IChPhGQW5xenE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=lhO62+k2trKTtNrrt9tNU2Xp3Olz8UGmb66si/NpkfY=; b=JX8FGXk7eMLHNIW5MXlwGgdX19ntMkSgNYL4vaJ/NrOrpGl9Ltif12dDYmlhY/5D8q KVyXB9eN3z2KBQZK808SHqHKLxEIqM7YkZOV9hwZrq4S7Diox3vY456lWYD+GS6WCXbW kRR+4bkXDbxNzahV36soHzTMA+hI9htp9/TUcW9iiGvvr74GoHR8C2X80L8HjZynrKzF E2Bh6mT9p8zckRBaLyV+qDlT1HLzdKpXhNVTFXCkPvFNjJ33sk0XKaPr85oaQgzU9Vk9 2y4KCuPTSukM3LV0CI61tIOngZiFuEKwnsacAE3mQagQJJ7nI+rETE7LFyjngl5C6E0P RETg== X-Gm-Message-State: AIVw11013pw41mP1bxLRSKt/Fncdl7oIwJyZ2y/x6FaQtwhZTLJnkcc4 HOZPmSoME054dNNFVoc23Q== X-Received: by 10.28.186.65 with SMTP id k62mr2225470wmf.34.1499099253146; Mon, 03 Jul 2017 09:27:33 -0700 (PDT) From: Leif Lindholm To: edk2-devel@lists.01.org Date: Mon, 3 Jul 2017 17:25:31 +0100 Message-Id: <20170703162531.27349-1-leif.lindholm@linaro.org> X-Mailer: git-send-email 2.11.0 Subject: [edk2] [PATCH] BeagleBoardPkg: switch to use MdeModulePkg ResetSystemLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ard.biesheuvel@linaro.org MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The BeagleBoard port used EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf for its reset handling. With the arrival MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf As part of this, change BeagleBoardPkg/Library/ResetSystemLib to be an implementation of ResetSystemLib instead of the previous EfiResetSystemLib. Wire all reset variants to ResetCold, except for ResetShutdown and EnterS3WithImmediateWake, which return immediately. Note: this ResetSystemLib never supported being called after ExitBootservices, and this shortcoming is not addressed here. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leif Lindholm Reviewed-by: Ard Biesheuvel --- This is only build tested for now. Once the edk2-platforms master branch goes live, I intend to move this platform there, and bring back in the BeagleBoard Black port. Which I do have a test platform handy for. BeagleBoardPkg/BeagleBoardPkg.dsc | 4 +- BeagleBoardPkg/BeagleBoardPkg.fdf | 2 +- .../Library/ResetSystemLib/ResetSystemLib.c | 180 ++++++++---------= ---- .../Library/ResetSystemLib/ResetSystemLib.inf | 16 +- 4 files changed, 70 insertions(+), 132 deletions(-) diff --git a/BeagleBoardPkg/BeagleBoardPkg.dsc b/BeagleBoardPkg/BeagleBoard= Pkg.dsc index 90d6af444d..b22f814a28 100644 --- a/BeagleBoardPkg/BeagleBoardPkg.dsc +++ b/BeagleBoardPkg/BeagleBoardPkg.dsc @@ -56,7 +56,7 @@ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf =20 - EfiResetSystemLib|BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.i= nf + ResetSystemLib|BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.inf =20 PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf @@ -421,7 +421,7 @@ # SerialPortLib|ArmPkg/Library/SemiHostingSerialPortLib/SemiHostingSe= rialPortLib.inf # } =20 - EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf + MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf =20 diff --git a/BeagleBoardPkg/BeagleBoardPkg.fdf b/BeagleBoardPkg/BeagleBoard= Pkg.fdf index f140d9019c..c9c6afd714 100644 --- a/BeagleBoardPkg/BeagleBoardPkg.fdf +++ b/BeagleBoardPkg/BeagleBoardPkg.fdf @@ -115,7 +115,7 @@ FvNameGuid =3D d0dd3e90-343d-4cb3-8f69-77221498= 9282 INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf =20 - INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf + INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.i= nf INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf =20 diff --git a/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.c b/Beagl= eBoardPkg/Library/ResetSystemLib/ResetSystemLib.c index 6b7879b02b..7bc6c6c329 100644 --- a/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.c +++ b/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.c @@ -2,6 +2,7 @@ Do a generic Cold Reset for OMAP3550 and BeagleBoard specific Warm reset =20 Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
+ Copyright (c) 2017, Linaro Ltd. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License @@ -16,150 +17,95 @@ =20 #include =20 -#include -#include -#include #include -#include -#include -#include +#include =20 #include =20 +/** + This function causes a system-wide reset (cold reset), in which + all circuitry within the system returns to its initial state. This type = of + reset is asynchronous to system operation and operates without regard to + cycle boundaries. =20 + If this function returns, it means that the system does not support cold + reset. +**/ VOID -ShutdownEfi ( +EFIAPI +ResetCold ( VOID ) { - EFI_STATUS Status; - UINTN MemoryMapSize; - EFI_MEMORY_DESCRIPTOR *MemoryMap; - UINTN MapKey; - UINTN DescriptorSize; - UINTN DescriptorVersion; - UINTN Pages; - - MemoryMap =3D NULL; - MemoryMapSize =3D 0; - do { - Status =3D gBS->GetMemoryMap ( - &MemoryMapSize, - MemoryMap, - &MapKey, - &DescriptorSize, - &DescriptorVersion - ); - if (Status =3D=3D EFI_BUFFER_TOO_SMALL) { - - Pages =3D EFI_SIZE_TO_PAGES (MemoryMapSize) + 1; - MemoryMap =3D AllocatePages (Pages); - - // - // Get System MemoryMap - // - Status =3D gBS->GetMemoryMap ( - &MemoryMapSize, - MemoryMap, - &MapKey, - &DescriptorSize, - &DescriptorVersion - ); - // Don't do anything between the GetMemoryMap() and ExitBootServices= () - if (!EFI_ERROR (Status)) { - Status =3D gBS->ExitBootServices (gImageHandle, MapKey); - if (EFI_ERROR (Status)) { - FreePages (MemoryMap, Pages); - MemoryMap =3D NULL; - MemoryMapSize =3D 0; - } - } - } - } while (EFI_ERROR (Status)); - - //Clean and invalidate caches. - WriteBackInvalidateDataCache(); - InvalidateInstructionCache(); - - //Turning off Caches and MMU - ArmDisableDataCache (); - ArmDisableInstructionCache (); - ArmDisableMmu (); + //Perform cold reset of the system. + MmioOr32 (PRM_RSTCTRL, RST_DPLL3); + while ((MmioRead32(PRM_RSTST) & GLOBAL_COLD_RST) !=3D 0x1); } =20 -typedef +/** + This function causes a system-wide initialization (warm reset), in which= all + processors are set to their initial state. Pending cycles are not corrup= ted. + + If this function returns, it means that the system does not support warm + reset. +**/ VOID -(EFIAPI *CALL_STUB)( +EFIAPI +ResetWarm ( VOID -); - + ) +{ + ResetCold (); +} =20 /** - Resets the entire platform. - - @param ResetType The type of reset to perform. - @param ResetStatus The status code for the reset. - @param DataSize The size, in bytes, of WatchdogData. - @param ResetData For a ResetType of EfiResetCold, EfiResetW= arm, or - EfiResetShutdown the data buffer starts wi= th a Null-terminated - Unicode string, optionally followed by add= itional binary data. + This function causes the system to enter a power state equivalent + to the ACPI G2/S5 or G3 states. =20 + If this function returns, it means that the system does not support shut= down + reset. **/ -EFI_STATUS +VOID EFIAPI -LibResetSystem ( - IN EFI_RESET_TYPE ResetType, - IN EFI_STATUS ResetStatus, - IN UINTN DataSize, - IN CHAR16 *ResetData OPTIONAL +ResetShutdown ( + VOID ) { - CALL_STUB StartOfFv; - - if (ResetData !=3D NULL) { - DEBUG((EFI_D_ERROR, "%s", ResetData)); - } - - ShutdownEfi (); - - switch (ResetType) { - case EfiResetWarm: - //Perform warm reset of the system by jumping to the begining of the FV - StartOfFv =3D (CALL_STUB)(UINTN)PcdGet64 (PcdFvBaseAddress); - StartOfFv (); - break; - case EfiResetCold: - case EfiResetShutdown: - default: - //Perform cold reset of the system. - MmioOr32 (PRM_RSTCTRL, RST_DPLL3); - while ((MmioRead32(PRM_RSTST) & GLOBAL_COLD_RST) !=3D 0x1); - break; - } - - // If the reset didn't work, return an error. - ASSERT (FALSE); - return EFI_DEVICE_ERROR; + // not implemented } =20 - - /** - Initialize any infrastructure required for LibResetSystem () to function. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. + This function causes the system to enter S3 and then wake up immediately. =20 + If this function returns, it means that the system does not support S3 + feature. **/ -EFI_STATUS +VOID EFIAPI -LibInitializeResetSystem ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +EnterS3WithImmediateWake ( + VOID ) { - return EFI_SUCCESS; + // not implemented } =20 +/** + This function causes a systemwide reset. The exact type of the reset is + defined by the EFI_GUID that follows the Null-terminated Unicode string = passed + into ResetData. If the platform does not recognize the EFI_GUID in Reset= Data + the platform must pick a supported reset type to perform.The platform may + optionally log the parameters from any non-normal reset that occurs. + + @param[in] DataSize The size, in bytes, of ResetData. + @param[in] ResetData The data buffer starts with a Null-terminated str= ing, + followed by the EFI_GUID. +**/ +VOID +EFIAPI +ResetPlatformSpecific ( + IN UINTN DataSize, + IN VOID *ResetData + ) +{ + ResetCold (); +} diff --git a/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.inf b/Bea= gleBoardPkg/Library/ResetSystemLib/ResetSystemLib.inf index 64638cb62c..150c4bb900 100644 --- a/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.inf +++ b/BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.inf @@ -2,6 +2,7 @@ # Reset System lib to make it easy to port new platforms # # Copyright (c) 2008, Apple Inc. All rights reserved.
+# Copyright (c) 2017, Linaro Ltd. All rights reserved.
# # This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License @@ -19,31 +20,22 @@ FILE_GUID =3D 781371a2-3fdd-41d4-96a1-7b34cbc9e895 MODULE_TYPE =3D BASE VERSION_STRING =3D 1.0 - LIBRARY_CLASS =3D EfiResetSystemLib + LIBRARY_CLASS =3D ResetSystemLib =20 =20 [Sources.common] ResetSystemLib.c =20 [Packages] - MdePkg/MdePkg.dec ArmPkg/ArmPkg.dec - EmbeddedPkg/EmbeddedPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec Omap35xxPkg/Omap35xxPkg.dec =20 [Pcd.common] gArmTokenSpaceGuid.PcdCpuResetAddress - gEmbeddedTokenSpaceGuid.PcdEmbeddedFdBaseAddress =20 [LibraryClasses] - DebugLib - ArmLib - CacheMaintenanceLib - MemoryAllocationLib - UefiRuntimeServicesTableLib - TimerLib - UefiLib - UefiBootServicesTableLib =20 [Pcd] gArmTokenSpaceGuid.PcdFvBaseAddress --=20 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel