From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-x22f.google.com (mail-io0-x22f.google.com [IPv6:2607:f8b0:4001:c06::22f]) (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 B4F0A21CF3B7C for ; Mon, 3 Jul 2017 08:53:09 -0700 (PDT) Received: by mail-io0-x22f.google.com with SMTP id h64so58806070iod.0 for ; Mon, 03 Jul 2017 08:54:47 -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=ubuw+JYwi5h/6H0ex4ziNVEntjNW3u9VTZr+Q1W2B9w=; b=VLr/5Z+oOQQQxiOmB65BSXLA3Xn6dMNtURwNVIr074s4ysZBr5HlW5V8efHtHUa6i7 cS+wLMUqQYDt22jnGQ0DRVQgHY/ixXJg7v7tsd9FfdNdnXOgxMPdbdLnpIfJ1CNZD693 O2MbxY0jGnUWcAaeN6qEjHqelf07jwmF2/Teg= 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=ubuw+JYwi5h/6H0ex4ziNVEntjNW3u9VTZr+Q1W2B9w=; b=KFODW99iTcyhL5EDwn4E2Pl/zXSbNfe6BSVBexXuaWLmBXmwhOSkNcf1Zw06SBhk5f uFbVgwi9hHYD8DxNOWNJrEt4DJ+BzCL+9WsxckaILluhsX+I8Si1Av0YBgcWz0i0VvaF XP97XYJcF72FtI8m5+PluYB9WgXZLxtFsYUFMMuXqzAoy488Uri45NfyvGdfsXuhctD2 8IT8VKJ9GgeAsazt5kWn1pJoEmzRfin4UkykYIZTFRPvI4YZGO9zuKY+AjqdEuDQ+Lq5 MMs9wSwk0req9R1I7TVu6PdAPMQQ6513VZhsTMOxpgcrp4FsljnWOkAH9oZv/EGfvBHL OoIA== X-Gm-Message-State: AKS2vOwMvDZZQianqhyfntND6biUBkcjOpAWCNIG+5s1occC/YKv5jbb 18MJV215rfM5NP2sl4s0M+VuY7C1Um0Q X-Received: by 10.107.59.84 with SMTP id i81mr32529390ioa.72.1499097285941; Mon, 03 Jul 2017 08:54:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.134.134 with HTTP; Mon, 3 Jul 2017 08:54:45 -0700 (PDT) In-Reply-To: <20170703155240.GH26676@bivouac.eciton.net> References: <20170703150238.32652-1-ard.biesheuvel@linaro.org> <20170703155240.GH26676@bivouac.eciton.net> From: Ard Biesheuvel Date: Mon, 3 Jul 2017 16:54:45 +0100 Message-ID: To: Leif Lindholm Cc: "edk2-devel@lists.01.org" 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:53:10 -0000 Content-Type: text/plain; charset="UTF-8" On 3 July 2017 at 16:52, Leif Lindholm wrote: > 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 > Thanks Pushed as b2c55e732888fd721f5235a820b1d1c45209992d >> --- >> 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 >>