This patch fixes two issues below: 1. SCT SetTime_Func failures. - https://github.com/pftf/RPi4/issues/164 2. Using shell time and date commands to set time can't work.
The problem is that gRT->SetTime always returns EFI_INVALID_PARAMETER error status. The root cause is that LibSetTime() sets RtcEpochSeconds variable with inconsistent attributes. One is without EFI_VARIABLE_NON_VOLATILE, the other one is with EFI_VARIABLE_NON_VOLATILE. That caused that the variable driver returns EFI_INVALID_PARAMETER. Per UEFI spec, if a preexisting variable is rewritten with different attributes, SetVariable() shall not modify the variable and shall return EFI_INVALID_PARAMETER. Therefore, the solution is to add EFI_VARIABLE_NON_VOLATILE attribute to the first EfiSetVariable() call to make two calls consistent. By the way, this patch also fix a minor issue with a debug message. Cc: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@arm.com> Cc: Sami Mujawar <sami.muja...@arm.com> Cc: Jeremy Linton <jeremy.lin...@arm.com> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> Cc: Pete Batard <p...@akeo.ie> Cc: Leif Lindholm <l...@nuviainc.com> Signed-off-by: Sunny Wang <sunny.w...@arm.com> --- .../VirtualRealTimeClockLib/VirtualRealTimeClockLib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.c b/EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.c index de6fbb40e6..c10c91bc75 100644 --- a/EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.c +++ b/EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.c @@ -4,7 +4,7 @@ * * Coypright (c) 2019, Pete Batard <p...@akeo.ie> * Copyright (c) 2018, Andrei Warkentin <andrey.warken...@gmail.com> - * Copyright (c) 2011-2014, ARM Ltd. All rights reserved. + * Copyright (c) 2011-2021, ARM Ltd. All rights reserved. * Copyright (c) 2008-2010, Apple Inc. All rights reserved. * Copyright (c) Microsoft Corporation. All rights reserved. * @@ -96,7 +96,7 @@ LibGetTime ( EfiSetVariable ( (CHAR16 *)mEpochVariableName, &gEfiCallerIdGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, sizeof (EpochSeconds), &EpochSeconds ); @@ -324,7 +324,7 @@ LibSetTime ( DEBUG (( DEBUG_ERROR, "LibSetTime: Failed to save %s variable to non-volatile storage, Status = %r\n", - mDaylightVariableName, + mEpochVariableName, Status )); return Status; -- 2.31.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#78124): https://edk2.groups.io/g/devel/message/78124 Mute This Topic: https://groups.io/mt/84397263/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-