From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by mx.groups.io with SMTP id smtpd.web09.2392.1608568668538229169 for ; Mon, 21 Dec 2020 08:37:48 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@semihalf-com.20150623.gappssmtp.com header.s=20150623 header.b=x5aCmNg8; spf=none, err=SPF record not found (domain: semihalf.com, ip: 209.85.167.47, mailfrom: mw@semihalf.com) Received: by mail-lf1-f47.google.com with SMTP id x20so25070150lfe.12 for ; Mon, 21 Dec 2020 08:37:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ibqLUm5tq9z0pbRXuuJ7ms3EETkoM18EdlqtoCtYZZA=; b=x5aCmNg8IzlWBLbTC2r2PI0YGkJ461SpLq++CgD/lTdvVjVStSijGpjdTYPN/X9+tp s/LGjQO4A3gyalnguMiu5RWVnWyhki+8aTqkKBtvvXbsNJd9rhcy9XMzxQ652U2HTv8d GZvjnAuhagXmcdcRC48BeNQgPOIwOvNPqQLmlc3jfFKJXCkjMiDC5itQDcEFrkLzYn/H WIFjoWKOPWU5hFLvtqSCFnAXifaZ5TXD/tPS0MbHUEmopnV8zFFz+opMkKPMzzhKEv/g Ew/eiS4B83xu6Mg0kBr8FNhPjH/iTOCJj98Rp2H+SHEpbh0XscV5q9MyyVJYzf9kwBbr /nIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ibqLUm5tq9z0pbRXuuJ7ms3EETkoM18EdlqtoCtYZZA=; b=O+bk4fjm1yI3T9lZExmYODf6wEP3OIb4yANuTA4t4rT1otCbY5neXe06C3wEwVeVjr MM25B+7yJ6oyUaZStBWRQvnXO+JLBAqBgRvYZDu3JLO3nwFzDMudmUlElkZImeMBzLRb JfW+a6bgF5qar+EBXW3kyn2eJSn0+m3kKEkgO9CTUOD0KSxeCPOvi6Y67JQ2ihf1vyfM FAysUKni7T7WiM8AOFfd36mVTAh2tevYCpLxkrp8QVO91UE6gow+bWJtFZQLTqSFyXOG brpVjRzuYlQQmIWZeJ5nnaCibN2SN/1ow0qIRm20soMp2DEuenKytmK9cFQpkoPd71AH 0JqQ== X-Gm-Message-State: AOAM530Cw1VDUbRa5c3PE/fRiNtUTsIKoNI20X69g6WVtEya2c/Fui/l TDokPTSBKX+XlBuYhzV8oxP+W7eG8EgZbSqw X-Google-Smtp-Source: ABdhPJwiDYkSjM6s3dRlBvAXMQ0yiM/ZiQwnNj8Fz5dIDyv5DRGSMSIOk+6gHKTTWSnZ4uarYaW/wQ== X-Received: by 2002:a2e:a377:: with SMTP id i23mr8241770ljn.103.1608568666372; Mon, 21 Dec 2020 08:37:46 -0800 (PST) Return-Path: Received: from gilgamesh.semihalf.com (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id t3sm2123196lfc.69.2020.12.21.08.37.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Dec 2020 08:37:45 -0800 (PST) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: leif@nuviainc.com, ard.biesheuvel@arm.com, mw@semihalf.com, jaz@semihalf.com, kostap@marvell.com Subject: [edk2-platforms PATCH] Marvell/RealTimeClockLib: Allow only Unix Epoch in LibSetWakeupTime Date: Mon, 21 Dec 2020 17:37:10 +0100 Message-Id: <20201221163710.19729-1-mw@semihalf.com> X-Mailer: git-send-email 2.29.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Because the Armada RTC uses a 32-bit counter for seconds, the maximum time span is just over 136 years. Time is stored in Unix Epoch format, so it starts in 1970, Therefore it can not exceed the year 2106. The issue emerged during ACS test case, which does not pass Unix Epoch-relative time and caused EfiTimeToEpoch to assert. Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c | 1= 0 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeCl= ockLib.c b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeCloc= kLib.c index a811fd368e..40ab01ed41 100644 --- a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c +++ b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c @@ -179,6 +179,16 @@ LibSetWakeupTime ( {=0D UINTN WakeupSeconds;=0D =0D + //=0D + // Because the Armada RTC uses a 32-bit counter for seconds,=0D + // the maximum time span is just over 136 years.=0D + // Time is stored in Unix Epoch format, so it starts in 1970,=0D + // Therefore it can not exceed the year 2106.=0D + //=0D + if ((Time->Year < 1970) || (Time->Year >=3D 2106)) {=0D + return EFI_UNSUPPORTED;=0D + }=0D +=0D // Convert time to raw seconds=0D WakeupSeconds =3D EfiTimeToEpoch (Time);=0D if (WakeupSeconds > MAX_UINT32) {=0D --=20 2.29.0