From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x234.google.com (mail-wr0-x234.google.com [IPv6:2a00:1450:400c:c0c::234]) (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 04EA121A00AC2 for ; Mon, 3 Jul 2017 08:51:07 -0700 (PDT) Received: by mail-wr0-x234.google.com with SMTP id r103so236711705wrb.0 for ; Mon, 03 Jul 2017 08:52:44 -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=BpfdkuUtZas2CfzwxseT6CZl53O32/bHsLcdOBMRuzA=; b=ME0DZbFrK7zfMa+g0GOP1W4DeoBRHyG2a+g1d3MQhb3CUwBw+XqJk2o6Ct8gYc/rf3 9xh9z8scSDFpK3Ar0neaQXw4QSjB2NcrgX7M3yVwUEycotMuTDqqjmlBdTBUaQNuknvT QB8Cri8ZXIBHkldraeXzms8yE93r3jZW2/CeU= 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=BpfdkuUtZas2CfzwxseT6CZl53O32/bHsLcdOBMRuzA=; b=G3Zg4I0luGJ3em0N6QvH2RPKRcnFa1JusRyS9Khw+xO2FD3d8DeIC8CCHQLpOy5Pkk L01MDSuO1KYvOUo50xUuiZc0fVbMJoNokw36VtnKwjxDxooYNlPYXcphXVvURjHfDln8 xPX3FWG56iDX+wV9Wn8h1vyrA1DNsoFCQkPhv7hZLUIJuhpEp1qNROYa/KcxuQiW1704 m4qBqVTQPnTzkTrTRtg7RS3tyxCxg04+MI87nErLF5uhvPjOEcr5ZpibGBW48i6UaZlP BHhyaCR6Lbvav9B96cS1JJUrLkuIBGwWzvqMELX2tVt/El6e30R3IWCpvdYSvXbZZOOd T1jQ== X-Gm-Message-State: AKS2vOyA9jYwyIA0Wr+Edg5+4hQyjGw06k7zn1pl5uJYX3hnZIthvhDW BCFlqRvmBT25vJ4tuSGQCg== X-Received: by 10.223.146.1 with SMTP id 1mr30718483wrj.152.1499097162812; Mon, 03 Jul 2017 08:52:42 -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 y2sm4335757wmy.29.2017.07.03.08.52.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Jul 2017 08:52:42 -0700 (PDT) Date: Mon, 3 Jul 2017 16:52:40 +0100 From: Leif Lindholm To: Ard Biesheuvel Cc: edk2-devel@lists.01.org Message-ID: <20170703155240.GH26676@bivouac.eciton.net> References: <20170703150238.32652-1-ard.biesheuvel@linaro.org> MIME-Version: 1.0 In-Reply-To: <20170703150238.32652-1-ard.biesheuvel@linaro.org> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [PATCH] ArmPkg: implement ResetSystemLib using PSCI 0.2 calls 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: Mon, 03 Jul 2017 15:51:07 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Jul 03, 2017 at 04:02:38PM +0100, Ard Biesheuvel wrote: > This adds an implementation of the ResetSystemLib library class as > defined in MdeModulePkg. It is used as the platform glue by the generic > ResetSystemRuntimeDxe which lives in the same package. > > This implementation is intended to replace the EfiResetSystemLib based > implementation that is deprecated now that we have decided that there is > no longer a reason to keep a different ResetSystem() implementation > under EmbeddedPkg. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel With the .inf fix you identified yourself: Reviewed-by: Leif Lindholm > --- > ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c | 115 ++++++++++++++++++++ > ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf | 35 ++++++ > 2 files changed, 150 insertions(+) > > diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c > new file mode 100644 > index 000000000000..d6d26bce5009 > --- /dev/null > +++ b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c > @@ -0,0 +1,115 @@ > +/** @file > + ResetSystemLib implementation using PSCI calls > + > + 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 > + which accompanies this distribution. The full text of the license may be found at > + http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > + > +**/ > + > +#include > + > +#include > +#include > +#include > +#include > + > +#include > + > +/** > + 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. > + > + If this function returns, it means that the system does not support cold reset. > +**/ > +VOID > +EFIAPI > +ResetCold ( > + VOID > + ) > +{ > + ARM_SMC_ARGS ArmSmcArgs; > + > + // Send a PSCI 0.2 SYSTEM_RESET command > + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET; > + ArmCallSmc (&ArmSmcArgs); > +} > + > +/** > + 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. > +**/ > +VOID > +EFIAPI > +ResetWarm ( > + VOID > + ) > +{ > + // Map a warm reset into a cold reset > + ResetCold (); > +} > + > +/** > + 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 shutdown reset. > +**/ > +VOID > +EFIAPI > +ResetShutdown ( > + VOID > + ) > +{ > + ARM_SMC_ARGS ArmSmcArgs; > + > + // Send a PSCI 0.2 SYSTEM_OFF command > + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF; > + ArmCallSmc (&ArmSmcArgs); > +} > + > +/** > + This function causes the system to enter S3 and then wake up immediately. > + > + 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. > +**/ > +VOID > +EFIAPI > +ResetPlatformSpecific ( > + IN UINTN DataSize, > + IN VOID *ResetData > + ) > +{ > + // Map the platform specific reset as reboot > + ResetCold (); > +} > diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf > new file mode 100644 > index 000000000000..3e66f75a3498 > --- /dev/null > +++ b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf > @@ -0,0 +1,35 @@ > +#/** @file > +# ResetSystemLib implementation using PSCI calls > +# > +# 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 > +# which accompanies this distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > +#**/ > + > +[Defines] > + INF_VERSION = 0x00010019 > + BASE_NAME = ArmPsciResetSystemLib > + FILE_GUID = 18B12C83-7718-4D83-ADA4-87F2FE698DD4 > + MODULE_TYPE = BASE > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = ResetSystemLib > + > +[Sources] > + ArmSmcPsciResetSystemLib.c > + > +[Packages] > + ArmPkg/ArmPkg.dec > + MdeModulePkg/MdeModulePkg.dec > + MdePkg/MdePkg.dec > + > +[LibraryClasses] > + ArmSmcLib > + BaseLib > + DebugLib > -- > 2.9.3 >