summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Wang <Sunny.Wang@arm.com>2021-07-23 17:01:01 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-07-29 10:13:32 +0000
commit8e6bb64fe43e5be7bf3becfbc5dbcdc90ab6425c (patch)
treebec199a5e67708ac8827dd296d98243ef2349a11
parent514b3aa08ece52140b769a8676595655691c7cb3 (diff)
downloadedk2-8e6bb64fe43e5be7bf3becfbc5dbcdc90ab6425c.tar.gz
edk2-8e6bb64fe43e5be7bf3becfbc5dbcdc90ab6425c.tar.bz2
edk2-8e6bb64fe43e5be7bf3becfbc5dbcdc90ab6425c.zip
EmbeddedPkg/VirtualRealTimeClockLib: Fix SetTime issues
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. Signed-off-by: Sunny Wang <sunny.wang@arm.com> Reviewed-by: Pete Batard <pete@akeo.ie> Tested-by: Pete Batard <pete@akeo.ie>
-rw-r--r--EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.c6
1 files 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 <pete@akeo.ie>
* Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@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;