From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (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 AB76521CF3B6F for ; Wed, 5 Jul 2017 08:29:22 -0700 (PDT) Received: by mail-wm0-x22a.google.com with SMTP id 62so226489390wmw.1 for ; Wed, 05 Jul 2017 08:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Fz+iLOJUIj0RA3YLfIAfxm8qKbz5V1n4GKge8kQEVKA=; b=Y87uItjNfC58P7qmQ6iQGRHkKJc6APqeQCnkGxUkKzFHAauI/FinSUwEmlaDU9a3e4 DZE9XcktA5UB5yTgn6JXlxPCPt8H53Q+IaEYkR/rzzUEMVwk6gqcEEEq6z7rsnQHcjno dqB4BwyhrM5EAg8beNFpww6w7bX+UgmL1ndWw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Fz+iLOJUIj0RA3YLfIAfxm8qKbz5V1n4GKge8kQEVKA=; b=I1wcDKhVU/5MaPJMQOLow7IbRAqq379goMjCSiK2vfVqtjMMQrU78V5fOxsrByvcf1 ecDNx40dHjk1EBxtWzP76Zmud6o3Kv7foTDM7+E588JiSLxW+vI9U1LmdlFsLHQYjQOl miN5dHRgDdD1nnbthby6TdmXZ1nCshmgyGrGo/yTpDNZ49YOapJGK53yCDfHW8YbkEK6 uj0gOn+JW30AaUf1LEXm+ZJIwtqWsCcgQaZW6tfwvE/2Mw7ox5+5Z5Qt2CTHlo7F7izN Oz36f6eThHUIHqS+S9IOzS9gMpCMzmC9fbHh4kXElQYmnraMI7getUnrgS6Rcex+9fPy +6Bg== X-Gm-Message-State: AKS2vOw6l+RUak/2wdK/iu311sf/tlVXpkX4TY3Dy86XH56Ox9r3st/B dI8k4wD+TDzrvCoT X-Received: by 10.28.51.11 with SMTP id z11mr23778209wmz.115.1499268660418; Wed, 05 Jul 2017 08:31:00 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id m143sm13938550wmg.27.2017.07.05.08.30.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Jul 2017 08:30:59 -0700 (PDT) Date: Wed, 5 Jul 2017 16:30:58 +0100 From: Leif Lindholm To: Ryan Harkin Cc: Ard Biesheuvel , "edk2-devel@lists.01.org" Message-ID: <20170705153058.GE26676@bivouac.eciton.net> References: <20170704171155.27302-1-leif.lindholm@linaro.org> MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [PATCH v2] ArmPlatformPkg: convert VExpress ResetSystemLib to 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: , X-List-Received-Date: Wed, 05 Jul 2017 15:29:23 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Jul 05, 2017 at 12:20:14PM +0100, Ryan Harkin wrote: > On 4 July 2017 at 18:27, Ard Biesheuvel wrote: > > On 4 July 2017 at 18:11, Leif Lindholm wrote: > >> Since we're in the process of migrating all of the VExpress platforms > >> to MdeModulePkg ResetSystemRuntimeDxe, convert VExpress ResetSystemLib > >> from EfiResetSystemLib interface to the ResetSystemLib one. > >> > >> Contributed-under: TianoCore Contribution Agreement 1.0 > >> Signed-off-by: Leif Lindholm > > > > Reviewed-by: Ard Biesheuvel > > After popping commit e4129b0e5897d76885170bec9da996b266f185f9 off the > top of edk2, and adding this, I also applied patch "Platforms/ARM: > move ARM platforms to generic ResetSystemRuntimeDxe" to > OpenPlatformPkg and tested on TC2, FVP Foundation and AEMv8 models and > Juno R0/1/2. > > I checked that reset and shutdown both still work as expected. Reset > was triggered from BDS, grub and EFI Shell. Shutdown (reset -s) was > trigger from EFI Shell. > > Tested-by: Ryan Harkin Thanks guys. This end pushed as 729ddffda0. > > > >> --- > >> .../Library/ResetSystemLib/ResetSystemLib.c | 117 ++++++++++++--------- > >> .../Library/ResetSystemLib/ResetSystemLib.inf | 6 +- > >> 2 files changed, 73 insertions(+), 50 deletions(-) > >> > >> diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c > >> index bafb6f8093..d2bc4a88fa 100644 > >> --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c > >> +++ b/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c > >> @@ -5,6 +5,7 @@ > >> > >> Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> >> Copyright (c) 2013, ARM Ltd. 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 BSD License > >> @@ -16,73 +17,95 @@ > >> > >> **/ > >> > >> -#include > >> +#include > >> > >> -#include > >> -#include > >> -#include > >> #include > >> +#include > >> +#include > >> > >> #include > >> > >> /** > >> - Resets the entire platform. > >> + 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. > >> > >> - @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, EfiResetWarm, or > >> - EfiResetShutdown the data buffer starts with a Null-terminated > >> - Unicode string, optionally followed by additional binary data. > >> + If this function returns, it means that the system does not support cold > >> + reset. > >> +**/ > >> +VOID > >> +EFIAPI > >> +ResetCold ( > >> + VOID > >> + ) > >> +{ > >> + ArmPlatformSysConfigSet (SYS_CFG_REBOOT, 0); > >> +} > >> + > >> +/** > >> + This function causes a system-wide initialization (warm reset), in which all > >> + processors are set to their initial state. Pending cycles are not corrupted. > >> > >> + If this function returns, it means that the system does not support warm > >> + reset. > >> **/ > >> -EFI_STATUS > >> +VOID > >> EFIAPI > >> -LibResetSystem ( > >> - IN EFI_RESET_TYPE ResetType, > >> - IN EFI_STATUS ResetStatus, > >> - IN UINTN DataSize, > >> - IN CHAR16 *ResetData OPTIONAL > >> +ResetWarm ( > >> + VOID > >> ) > >> { > >> - switch (ResetType) { > >> - case EfiResetPlatformSpecific: > >> - // Map the platform specific reset as reboot > >> - case EfiResetWarm: > >> - // Map a warm reset into a cold reset > >> - case EfiResetCold: > >> - // Send the REBOOT function to the platform microcontroller > >> - ArmPlatformSysConfigSet (SYS_CFG_REBOOT, 0); > >> - > >> - // We should never be here > >> - while(1); > >> - case EfiResetShutdown: > >> - // Send the SHUTDOWN function to the platform microcontroller > >> - ArmPlatformSysConfigSet (SYS_CFG_SHUTDOWN, 0); > >> - > >> - // We should never be here > >> - while(1); > >> - } > >> - > >> - ASSERT(FALSE); > >> - return EFI_UNSUPPORTED; > >> + ResetCold (); > >> } > >> > >> /** > >> - Initialize any infrastructure required for LibResetSystem () to function. > >> + This function causes the system to enter a power state equivalent > >> + to the ACPI G2/S5 or G3 states. > >> + > >> + If this function returns, it means that the system does not support shut down reset. > >> +**/ > >> +VOID > >> +EFIAPI > >> +ResetShutdown ( > >> + VOID > >> + ) > >> +{ > >> + ArmPlatformSysConfigSet (SYS_CFG_SHUTDOWN, 0); > >> +} > >> > >> - @param ImageHandle The firmware allocated handle for the EFI image. > >> - @param SystemTable A pointer to the EFI System Table. > >> +/** > >> + This function causes the system to enter S3 and then wake up immediately. > >> > >> - @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. > >> + If this function returns, it means that the system does not support S3 > >> + feature. > >> +**/ > >> +VOID > >> +EFIAPI > >> +EnterS3WithImmediateWake ( > >> + VOID > >> + ) > >> +{ > >> + // not implemented > >> +} > >> > >> +/** > >> + 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 ResetData > >> + 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 string, > >> + followed by the EFI_GUID. > >> **/ > >> -EFI_STATUS > >> +VOID > >> EFIAPI > >> -LibInitializeResetSystem ( > >> - IN EFI_HANDLE ImageHandle, > >> - IN EFI_SYSTEM_TABLE *SystemTable > >> +ResetPlatformSpecific ( > >> + IN UINTN DataSize, > >> + IN VOID *ResetData > >> ) > >> { > >> - return EFI_SUCCESS; > >> + ResetCold (); > >> } > >> diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf > >> index 8c17ea8cdb..780636c1de 100644 > >> --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf > >> +++ b/ArmPlatformPkg/ArmVExpressPkg/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 BSD License > >> @@ -19,17 +20,16 @@ > >> FILE_GUID = 36885202-0854-4373-bfd2-95d229b44d44 > >> MODULE_TYPE = BASE > >> VERSION_STRING = 1.0 > >> - LIBRARY_CLASS = EfiResetSystemLib > >> + LIBRARY_CLASS = ResetSystemLib > >> > >> [Sources.common] > >> ResetSystemLib.c > >> > >> [Packages] > >> + MdeModulePkg/MdeModulePkg.dec > >> MdePkg/MdePkg.dec > >> - EmbeddedPkg/EmbeddedPkg.dec > >> ArmPlatformPkg/ArmPlatformPkg.dec > >> > >> [LibraryClasses] > >> DebugLib > >> - BaseLib > >> ArmPlatformSysConfigLib > >> -- > >> 2.11.0 > >>