[edk2-devel] [edk2-platforms PATCH] Silicon/Marvell/RealTimeClockLib: make EpochSeconds, WakeupSeconds UINTN
Laszlo Ersek
lersek at redhat.com
Mon Dec 21 13:21:57 UTC 2020
On 12/21/20 13:16, Ard Biesheuvel wrote:
> On 12/21/20 12:24 PM, Laszlo Ersek wrote:
>> We're going to change EfiTimeToEpoch() in edk2's TimeBaseLib to propagate
>> its internal UINTN calculation to the caller without an internal UINT32
>> truncation.
>>
>> Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib drives 32-bit-only
>> hardware, so catch any number of seconds since the epoch, from
>> EfiTimeToEpoch(), that doesn't fit in 32 bits.
>>
>> Cc: Ard Biesheuvel <ard.biesheuvel at arm.com>
>> Cc: Leif Lindholm <leif at nuviainc.com>
>> Cc: Marcin Wojtas <mw at semihalf.com>
>> Cc: Philippe Mathieu-Daudé <philmd at redhat.com>
>> Signed-off-by: Laszlo Ersek <lersek at redhat.com>
>
> Acked-by: Ard Biesheuvel <ard.biesheuvel at arm.com>
>
> Feel free to push this directly (no CI+label dance required)
Commit fbdfe8c4100d.
Thank you, Ard!
Laszlo
>> ---
>>
>> Notes:
>> Build-tested only, with
>>
>> build \
>> -a AARCH64 \
>> -b NOOPT \
>> -p Platform/SolidRun/Armada80x0McBin/Armada80x0McBin.dsc \
>> -t GCC5 \
>> -m EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
>>
>> Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c | 14 ++++++++++----
>> 1 file changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
>> index 1974e0144cd8..a811fd368eca 100644
>> --- a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
>> +++ b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
>> @@ -100,33 +100,36 @@ EFIAPI
>> LibSetTime (
>> IN EFI_TIME *Time
>> )
>> {
>> EFI_STATUS Status = EFI_SUCCESS;
>> - UINT32 EpochSeconds;
>> + UINTN EpochSeconds;
>>
>> // Check the input parameters are within the range specified by UEFI
>> if (!IsTimeValid (Time)) {
>> return EFI_INVALID_PARAMETER;
>> }
>>
>> // Convert time to raw seconds
>> EpochSeconds = EfiTimeToEpoch (Time);
>> + if (EpochSeconds > MAX_UINT32) {
>> + return EFI_INVALID_PARAMETER;
>> + }
>>
>> // Issue delayed write to time register
>> - RtcDelayedWrite (RTC_TIME_REG, EpochSeconds);
>> + RtcDelayedWrite (RTC_TIME_REG, (UINT32)EpochSeconds);
>>
>> return Status;
>> }
>>
>> /**
>> Returns the current wakeup alarm clock setting.
>>
>> @param Enabled Indicates if the alarm is currently enabled or disabled.
>> @param Pending Indicates if the alarm signal is pending and requires acknowledgement.
>> @param Time The current alarm setting.
>>
>> @retval EFI_SUCCESS The alarm settings were returned.
>> @retval EFI_INVALID_PARAMETER Any parameter is NULL.
>> @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
>>
>> **/
>> @@ -172,32 +175,35 @@ EFIAPI
>> LibSetWakeupTime (
>> IN BOOLEAN Enabled,
>> OUT EFI_TIME *Time
>> )
>> {
>> - UINT32 WakeupSeconds;
>> + UINTN WakeupSeconds;
>>
>> // Convert time to raw seconds
>> WakeupSeconds = EfiTimeToEpoch (Time);
>> + if (WakeupSeconds > MAX_UINT32) {
>> + return EFI_INVALID_PARAMETER;
>> + }
>>
>> // Issue delayed write to alarm register
>> - RtcDelayedWrite (RTC_ALARM_2_REG, WakeupSeconds);
>> + RtcDelayedWrite (RTC_ALARM_2_REG, (UINT32)WakeupSeconds);
>>
>> if (Enabled) {
>> MmioWrite32 (mArmadaRtcBase + RTC_IRQ_2_CONFIG_REG, RTC_IRQ_ALARM_EN);
>> } else {
>> MmioWrite32 (mArmadaRtcBase + RTC_IRQ_2_CONFIG_REG, 0);
>> }
>>
>> return EFI_SUCCESS;
>> }
>>
>> /**
>> This is the declaration of an EFI image entry point. This can be the entry point to an application
>> written to this specification, an EFI boot service driver, or an EFI runtime driver.
>>
>> @param ImageHandle Handle that identifies the loaded image.
>> @param SystemTable System Table for this image.
>>
>> @retval EFI_SUCCESS The operation completed successfully.
>>
>> **/
>>
>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69325): https://edk2.groups.io/g/devel/message/69325
Mute This Topic: https://groups.io/mt/79123470/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list