From b7bf519f24c2160c092ce8b6c9f72ead91dbe8cb Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Thu, 8 Oct 2020 18:31:28 +0400 Subject: [PATCH 624/634] efi-rtc: avoid calling efi.get_time on Baikal-M SoC Old versions of Baikal-M UEFI (before SDK-M 4.4) do NOT provide get_time at the runtime (not even as a stub), hence calling it results in an Oops. X-DONTUPSTREAM X-legacy --- drivers/rtc/rtc-efi.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/rtc/rtc-efi.c b/drivers/rtc/rtc-efi.c index 138c5e004..af2328022 100644 --- a/drivers/rtc/rtc-efi.c +++ b/drivers/rtc/rtc-efi.c @@ -17,6 +17,7 @@ #include #include #include +#include #define EFI_ISDST (EFI_TIME_ADJUST_DAYLIGHT|EFI_TIME_IN_DAYLIGHT) @@ -257,6 +258,14 @@ static int __init efi_rtc_probe(struct platform_device *dev) efi_time_t eft; efi_time_cap_t cap; +#ifdef CONFIG_OF + /* efi.get_time is not always safe to call since some UEFI + * implementations do not privde get_time at runtime. */ + if (of_device_is_compatible(of_root, "baikal,baikal-m")) { + dev_err(&dev->dev, "Baikal-M UEFI has no get_time\n"); + return -ENODEV; + } +#endif /* First check if the RTC is usable */ if (efi.get_time(&eft, &cap) != EFI_SUCCESS) return -ENODEV; -- 2.33.2