From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt0-x22e.google.com (mail-qt0-x22e.google.com [IPv6:2607:f8b0:400d:c0d::22e]) (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 924DA21A00AD1 for ; Wed, 5 Jul 2017 04:18:36 -0700 (PDT) Received: by mail-qt0-x22e.google.com with SMTP id b40so74838968qtb.2 for ; Wed, 05 Jul 2017 04:20:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=VF2ggeHeR25D62UhI0+VVtLX2E+mQ4U661mMeIp46h8=; b=bztyiQ0HdfQEBLx3OYh6WEtrM4QHbo/XTzOYfEIYkScNI7aqcCU6wPEV5LbkSQ7MNn c6spFTRQ40PpnrsDYXLa4rz00TzIJ0M93pOoImck8+tuKzs6bXOkdcHQ7MhANYmMb+MY +oNIkMXU5xf5HhuSQziME2xPkjBKXjvfyPxtI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=VF2ggeHeR25D62UhI0+VVtLX2E+mQ4U661mMeIp46h8=; b=n/IycIIB60X0FJ0Ezd0QDAgRAF2Sw0U5uUFzvpWIE+UilMi7u1SCePB5W6s13O+EOx nbx2K7w5RFmk/jz82nS5TXj6HROoqnzC7aMo4SyDWCN2KF/mhUeNDAENOkbp4TosXG23 QdHleAyWTgPSRGMFmhvsyaSj49jIe8w0te1y1K3l9gMIO2Zpe/N7kNoikCAoQ91L/L5+ 3r+8HOTLgpp0Ze7QYRWAlWeHZPmO/FjnemBwQZmqhAs6YifetlAjHzhG/G2Ofs1IVyzH YHKJiHMjp3ruct+yltr9oJC4UrogR2nm0h8quZ1P7pUBGWt8Wchj5znpeV8YzIR8CFex zM9A== X-Gm-Message-State: AKS2vOxrEpVm2Exm3cGR0WWTvv5tpixIDANBnwhZoSkVtel09SXrUZrI 7XDn0grdbhQcr5xeRt4hd4+NDdqVu0pG X-Received: by 10.200.39.182 with SMTP id w51mr51728028qtw.87.1499253614628; Wed, 05 Jul 2017 04:20:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.85.6 with HTTP; Wed, 5 Jul 2017 04:20:14 -0700 (PDT) In-Reply-To: References: <20170704171155.27302-1-leif.lindholm@linaro.org> From: Ryan Harkin Date: Wed, 5 Jul 2017 12:20:14 +0100 Message-ID: To: Ard Biesheuvel Cc: Leif Lindholm , "edk2-devel@lists.01.org" 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 11:18:37 -0000 Content-Type: text/plain; charset="UTF-8" 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 > >> --- >> .../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 >>