From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x22d.google.com (mail-it0-x22d.google.com [IPv6:2607:f8b0:4001:c0b::22d]) (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 3179321A00AC9 for ; Tue, 4 Jul 2017 04:02:52 -0700 (PDT) Received: by mail-it0-x22d.google.com with SMTP id v202so18935291itb.1 for ; Tue, 04 Jul 2017 04:04:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4vTmzihDtpSJnO6m23AQXPsJ5xqnolNnm3VQT7EXg5g=; b=F5r4TL8wNalT13hemRo1Kh/Cx1t89kYEg0gtOPOy54HsMS9Tqql3v6CoEMfCTsMKgE hnhrj69c8kYrPacnhCgwC4bWMyHDcPhZr/VMMO5LhYsyh8TzQfiuViGIxYh8Sqtvp5nj NFmtzH0b5ioHsuoRilWO8hAjxZJQMV/48BuX9qGL96tDtS8RnRKaypzSi8sdiALT6Sv4 /FNZ2dmpA+r/JdFR1DLABkSIcluXsFTu0jUY4amhOaNjGrUSvvcA/ORbn+1LP9iUrq+s oRbHSl2lwnJk2V8k6cIgS4z5ewdNFr/NdTCA0ODep05D9IFjTpVHfDzPbtwEMNwRz0Le sEew== 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=4vTmzihDtpSJnO6m23AQXPsJ5xqnolNnm3VQT7EXg5g=; b=TQbrdJ3jlCJOqmCj1lTWjCtMLuOFe8odsM5zhp0uyYclbwMVyfarUtzo5LvRPdwPBk 2s+ZFCRY6IT9kfag24znpT6Whl8ZTgoAgwagJ1a2VgFiI/73Co5I2SpvdhSeQoG6SsIB V5i8T41537KXw7RK07TCzXHO1KuA3QScEheY+fSyx7CkqjmgpFsvhYGgFNsfYjYBBW4V QvcMHxz+pmggaPkCvgCSIC8PIo/G3CWnPqeszqqYAzdW7o9oIO33DRmKrODtHmdyUcj6 0MrgonhjGw/mMRGN49mVqwdoXsmnP1IXmMabpPBszRCm8bFnFA6h9oCTQhHwzc1OyHKF kHNA== X-Gm-Message-State: AIVw112nmH7jmMjxAPw4HoM086aXKAkQy1F76MBA/v9MTctjhvGt5D94 cUt347JhyW2wD4RhDPrmAVX3JH+pSWJ4 X-Received: by 10.36.26.13 with SMTP id 13mr12593179iti.87.1499166269162; Tue, 04 Jul 2017 04:04:29 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.151.16 with HTTP; Tue, 4 Jul 2017 04:04:28 -0700 (PDT) In-Reply-To: <20170704110017.32042-1-ard.biesheuvel@linaro.org> References: <20170704110017.32042-1-ard.biesheuvel@linaro.org> From: Marcin Wojtas Date: Tue, 4 Jul 2017 13:04:28 +0200 Message-ID: To: Ard Biesheuvel Cc: edk2-devel-01 , Leif Lindholm Subject: Re: [PATCH] Platforms/Marvell: switch to generic ResetSystemRuntimeDxe 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 11:02:52 -0000 Content-Type: text/plain; charset="UTF-8" Hi, 2017-07-04 13:00 GMT+02:00 Ard Biesheuvel : > Switch to the generic implementation of the ResetSystem() runtime > service call, which is preferred over the one in EmbeddedPkg. This > involves selecting another DXE runtime driver, and morphing the > existing EfiResetSystemLib implementation into a ResetSystemLib one > (which is what the generic driver depends on for platform glue) > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel > --- > Platforms/Marvell/Armada/Armada.dsc.inc | 4 +- > Platforms/Marvell/Armada/Armada70x0.fdf | 2 +- > Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c | 110 ++++++++++++++------ > Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf | 7 +- > 4 files changed, 87 insertions(+), 36 deletions(-) > > diff --git a/Platforms/Marvell/Armada/Armada.dsc.inc b/Platforms/Marvell/Armada/Armada.dsc.inc > index 475fc6d05379..32eaa2942564 100644 > --- a/Platforms/Marvell/Armada/Armada.dsc.inc > +++ b/Platforms/Marvell/Armada/Armada.dsc.inc > @@ -94,7 +94,7 @@ > # Reset and Time libraries > EfiTimeBaseLib|OpenPlatformPkg/Library/EfiTimeBaseLib/EfiTimeBaseLib.inf > RealTimeClockLib|OpenPlatformPkg/Platforms/Marvell/Armada/Library/RealTimeClockLib/RealTimeClockLib.inf > - EfiResetSystemLib|OpenPlatformPkg/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf > + ResetSystemLib|OpenPlatformPkg/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf Isn't it better to switch to generic PSCI: EfiResetSystemLib|ArmPkg/Library/ArmPsciResetSystemLib/ArmPsciResetSystemLib.inf and remove MvResetSystemLib whatsoever? Best regards, Marcin > > # Network support > NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf > @@ -416,7 +416,7 @@ > MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf > > EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf > - EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf > + MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf > EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf > EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf > > diff --git a/Platforms/Marvell/Armada/Armada70x0.fdf b/Platforms/Marvell/Armada/Armada70x0.fdf > index 280b40be1d39..8091ea260261 100644 > --- a/Platforms/Marvell/Armada/Armada70x0.fdf > +++ b/Platforms/Marvell/Armada/Armada70x0.fdf > @@ -99,7 +99,7 @@ FvNameGuid = 5eda4200-2c5f-43cb-9da3-0baf74b1b30c > INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf > INF MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf > INF EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf > - INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf > + INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf > INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf > INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf > INF OpenPlatformPkg/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf > diff --git a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c > index c0787aceac9c..f349c5c5387b 100644 > --- a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c > +++ b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c > @@ -66,51 +66,99 @@ LibResetSystemVirtualNotifyEvent ( > } > > /** > - Resets the entire platform. > - > - @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. > + 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. > **/ > -EFI_STATUS > +VOID > EFIAPI > -LibResetSystem ( > - IN EFI_RESET_TYPE ResetType, > - IN EFI_STATUS ResetStatus, > - IN UINTN DataSize, > - IN VOID *ResetData OPTIONAL > +ResetCold ( > + VOID > ) > { > UINT32 Data; > > - switch (ResetType) { > - case EfiResetCold: > - case EfiResetWarm: > - Data = MmioRead32 (mAddress); > - Data &= ~PcdGet32 (PcdResetRegMask); > - MmioWrite32 (mAddress, Data); > - break; > - case EfiResetShutdown: > + Data = MmioRead32 (mAddress); > + Data &= ~PcdGet32 (PcdResetRegMask); > + MmioWrite32 (mAddress, Data); > +} > + > +/** > + 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 > + ) > +{ > // > // Currently there is no support for power-off platform > // > - break; > - default: > - break; > - } > +} > + > +/** > + 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 > +} > > - return EFI_DEVICE_ERROR; > +/** > + 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 (); > } > > -EFI_STATUS > +RETURN_STATUS > EFIAPI > LibInitializeResetSystem ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > + VOID > ) > { > UINT64 Alignment; > diff --git a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf > index 87fff5707909..0d5951d7e9a0 100644 > --- a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf > +++ b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf > @@ -1,4 +1,5 @@ > # Copyright (C) 2016 Marvell International Ltd. > +# Copyright (C) 2017 Linaro Ltd. > # > # Marvell BSD License Option > # > @@ -32,16 +33,18 @@ > > [Defines] > INF_VERSION = 0x00010019 > - BASE_NAME = Reset > + BASE_NAME = MvResetSystemLib > FILE_GUID = 9d1373c0-6fac-432c-88e7-818744dc45d9 > MODULE_TYPE = BASE > VERSION_STRING = 1.0 > - LIBRARY_CLASS = EfiResetSystemLib > + LIBRARY_CLASS = ResetSystemLib > + CONSTRUCTOR = LibInitializeResetSystem > > [Sources.common] > MvResetSystemLib.c > > [Packages] > + MdeModulePkg/MdeModulePkg.dec > MdePkg/MdePkg.dec > OpenPlatformPkg/Platforms/Marvell/Marvell.dec > > -- > 2.9.3 >