From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-x22c.google.com (mail-io0-x22c.google.com [IPv6:2607:f8b0:4001:c06::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 824C221C9E7A3 for ; Tue, 4 Jul 2017 10:25:35 -0700 (PDT) Received: by mail-io0-x22c.google.com with SMTP id r36so74509971ioi.1 for ; Tue, 04 Jul 2017 10:27:14 -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=M+TzlYN7w+BTuQrszXST9ZQC97ihO7FsnWyUMlLvKiA=; b=M57F/xYen0x3ZGfxwPlBWSIdhDruYFWsuNXU1oFZInLvPH+F9bt/XE+9rXnZ6R9EJO y+gc4NfMhLEViXzEYqELcVLjsxLWmecKKN0EO1JBtCfVi3Ct+jxIQKGpZXkECLKeu40h 36AZWNN3WkGTO50ScgXuRjGdATbiXsX62tEe4= 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=M+TzlYN7w+BTuQrszXST9ZQC97ihO7FsnWyUMlLvKiA=; b=Y6BjgUoZ+dkhz3D4pJMCsM7T+DMBx9ExX1pGI6p9h5Yw+TJXNYx0e5tcaN9mzkg83Q vCOvMczlxOdergGMP2n5gXzMNj2dTH9+/XgGGFzSpo9Av0//o3p7RkcFjJXNvgrEAi3Z FmvG2jTBKybusSOMgY+b3IRCK72JZOt4PBFOJH+Ff71s6YZJy8hFbMTdPQKyJlXexGwC NAoPvdiFeX7yQxhe4bdx6HHqtTQ48ARJO/8pc8xpAY+vMAa6UAXCwzIsXwtRFY+A0Xe7 doeaxs+57R+uvQtdu5s2IxSOTR2MiE2ZLkCD2WcRTLSUonzZRWlPHbJnsN5nYI/ZmlJE uCuw== X-Gm-Message-State: AIVw113OEdOWcyRCmw9LFu/70liJew3Yi0c8RaT9ZeoCDx+XetEq2CLu 9yGF2jT5jbtqQlt446wZ14LG/ySS1c7OBGo= X-Received: by 10.107.165.13 with SMTP id o13mr9398702ioe.47.1499189233225; Tue, 04 Jul 2017 10:27:13 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.134.134 with HTTP; Tue, 4 Jul 2017 10:27:12 -0700 (PDT) In-Reply-To: <20170704171155.27302-1-leif.lindholm@linaro.org> References: <20170704171155.27302-1-leif.lindholm@linaro.org> From: Ard Biesheuvel Date: Tue, 4 Jul 2017 18:27:12 +0100 Message-ID: To: Leif Lindholm Cc: "edk2-devel@lists.01.org" , Ryan Harkin 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: Tue, 04 Jul 2017 17:25:35 -0000 Content-Type: text/plain; charset="UTF-8" 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 > --- > .../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 >