ACK: [PATCH 1/4] uefirttime: check time services supported before testing (LP: #1913351)
Alex Hung
alex.hung at canonical.com
Thu May 13 19:23:56 UTC 2021
On 2021-05-13 4:01 a.m., Ivan Hu wrote:
> UEFI runtime tests are being done without checking RTPROT table which
> intruduced after UEFI 2.8a. This might lead to false alarm for those
> unsupported runtime service platforms. Add checking the time services
> supported status before runing the related tests.
>
> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
> ---
> src/uefi/uefirttime/uefirttime.c | 84 ++++++++++++++++++++++++++++++++
> 1 file changed, 84 insertions(+)
>
> diff --git a/src/uefi/uefirttime/uefirttime.c b/src/uefi/uefirttime/uefirttime.c
> index e2ab7d61..41503843 100644
> --- a/src/uefi/uefirttime/uefirttime.c
> +++ b/src/uefi/uefirttime/uefirttime.c
> @@ -199,6 +199,12 @@ static int uefirttime_test1(fwts_framework *fw)
> EFI_TIME_CAPABILITIES efi_time_cap;
> uint64_t status = ~0ULL;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> gettime.Capabilities = &efi_time_cap;
> gettime.Time = &efi_time;
> gettime.status = &status;
> @@ -234,6 +240,12 @@ static int uefirttime_test_gettime_invalid(
> struct efi_gettime gettime;
> uint64_t status = ~0ULL;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> gettime.Capabilities = efi_time_cap;
> gettime.Time = efi_time;
> gettime.status = &status;
> @@ -286,6 +298,12 @@ static int uefirttime_test4(fwts_framework *fw)
> EFI_TIME time;
> EFI_TIME_CAPABILITIES efi_time_cap;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> gettime.Capabilities = &efi_time_cap;
> gettime.Time = &oldtime;
> gettime.status = &status;
> @@ -330,6 +348,12 @@ static int uefirttime_test4(fwts_framework *fw)
> /* Unspecified timezone, local time */
> time.TimeZone = 2047;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_SET_TIME)) {
> + fwts_skipped(fw, "Skipping test, SetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> settime.Time = &time;
> status = ~0ULL;
> settime.status = &status;
> @@ -424,6 +448,12 @@ static int uefirttime_test_settime_invalid(
> long ioret;
> static uint64_t status;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_SET_TIME)) {
> + fwts_skipped(fw, "Skipping test, SetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> status = ~0ULL;
> settime->status = &status;
>
> @@ -460,6 +490,12 @@ static int uefirttime_test_settime_invalid_time(
> uint64_t status = ~0ULL;
> int ret, ioret;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> gettime.Time = &oldtime;
> gettime.status = &status;
> gettime.Capabilities = NULL;
> @@ -500,6 +536,9 @@ static int uefirttime_test_settime_invalid_time(
>
> ret = uefirttime_test_settime_invalid(fw, &settime);
>
> + if (ret == FWTS_SKIP)
> + return ret;
> +
> /* Restore original time */
> settime.Time = &oldtime;
> status = ~0ULL;
> @@ -654,6 +693,12 @@ static int uefirttime_test18(fwts_framework *fw)
> uint8_t enabled, pending;
> EFI_TIME efi_time;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> getwakeuptime.Enabled = &enabled;
> getwakeuptime.Pending = &pending;
> getwakeuptime.Time = &efi_time;
> @@ -687,6 +732,12 @@ static int uefirttime_test_getwaketime_invalid(
> long ioret;
> static uint64_t status;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> status = ~0ULL;
> getwakeuptime->status = &status;
>
> @@ -777,6 +828,12 @@ static int uefirttime_test23(fwts_framework *fw)
> struct efi_getwakeuptime getwakeuptime;
> uint8_t enabled, pending;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> gettime.Capabilities = &efi_time_cap;
> gettime.Time = &oldtime;
> gettime.status = &status;
> @@ -795,6 +852,12 @@ static int uefirttime_test23(fwts_framework *fw)
> return FWTS_ERROR;
> }
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_SET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, SetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> /* change the hour, add 1 hour*/
> addonehour(&oldtime);
>
> @@ -818,6 +881,12 @@ static int uefirttime_test23(fwts_framework *fw)
>
> sleep(1);
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, SetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> getwakeuptime.Enabled = &enabled;
> getwakeuptime.Pending = &pending;
> getwakeuptime.Time = &newtime;
> @@ -907,6 +976,12 @@ static int uefirttime_test_setwakeuptime_invalid(
> long ioret;
> static uint64_t status;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_SET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, SetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> status = ~0ULL;
> setwakeuptime->status = &status;
>
> @@ -954,6 +1029,12 @@ static int uefirttime_test_setwakeuptime_invalid_time(
> uint8_t pending, enabled;
> int ret, ioret;
>
> + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_GET_WAKEUP_TIME)) {
> + fwts_skipped(fw, "Skipping test, GetWakeupTime runtime "
> + "service is not supported on this platform.");
> + return FWTS_SKIP;
> + }
> +
> getwakeuptime.Enabled = &enabled;
> getwakeuptime.Pending = &pending;
> getwakeuptime.Time = &oldtime;
> @@ -996,6 +1077,9 @@ static int uefirttime_test_setwakeuptime_invalid_time(
>
> ret = uefirttime_test_setwakeuptime_invalid(fw, &setwakeuptime);
>
> + if (ret == FWTS_SKIP)
> + return ret;
> +
> /* Restore original time */
> setwakeuptime.Time = &oldtime;
> status = ~0ULL;
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list