mirror of https://github.com/acidanthera/audk.git
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>
This commit is contained in:
parent
514b3aa08e
commit
8e6bb64fe4
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Coypright (c) 2019, Pete Batard <pete@akeo.ie>
|
* Coypright (c) 2019, Pete Batard <pete@akeo.ie>
|
||||||
* Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
|
* 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) 2008-2010, Apple Inc. All rights reserved.
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -96,7 +96,7 @@ LibGetTime (
|
||||||
EfiSetVariable (
|
EfiSetVariable (
|
||||||
(CHAR16 *)mEpochVariableName,
|
(CHAR16 *)mEpochVariableName,
|
||||||
&gEfiCallerIdGuid,
|
&gEfiCallerIdGuid,
|
||||||
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||||
sizeof (EpochSeconds),
|
sizeof (EpochSeconds),
|
||||||
&EpochSeconds
|
&EpochSeconds
|
||||||
);
|
);
|
||||||
|
@ -324,7 +324,7 @@ LibSetTime (
|
||||||
DEBUG ((
|
DEBUG ((
|
||||||
DEBUG_ERROR,
|
DEBUG_ERROR,
|
||||||
"LibSetTime: Failed to save %s variable to non-volatile storage, Status = %r\n",
|
"LibSetTime: Failed to save %s variable to non-volatile storage, Status = %r\n",
|
||||||
mDaylightVariableName,
|
mEpochVariableName,
|
||||||
Status
|
Status
|
||||||
));
|
));
|
||||||
return Status;
|
return Status;
|
||||||
|
|
Loading…
Reference in New Issue