rtc: efi: Fail probing if RTC reads don't work
authorAlexander Graf <agraf@suse.de>
Sun, 5 Jun 2016 09:35:56 +0000 (11:35 +0200)
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>
Mon, 6 Jun 2016 15:07:33 +0000 (17:07 +0200)
While the EFI spec mandates an RTC, not every implementation actually adheres
to that rule (or can adhere to it - some systems just don't have an RTC).

For those, we really don't want to probe the EFI RTC driver at all, because if
we do we'd get a non-functional driver that does nothing useful but only spills
our kernel log with warnings.

Signed-off-by: Alexander Graf <agraf@suse.de>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
drivers/rtc/rtc-efi.c

index 96d38609d803a90bd4beeea4395949a273c12e9b..0130afd7fe889e5767660292c2d2f87d58ad2725 100644 (file)
@@ -259,6 +259,12 @@ static const struct rtc_class_ops efi_rtc_ops = {
 static int __init efi_rtc_probe(struct platform_device *dev)
 {
        struct rtc_device *rtc;
+       efi_time_t eft;
+       efi_time_cap_t cap;
+
+       /* First check if the RTC is usable */
+       if (efi.get_time(&eft, &cap) != EFI_SUCCESS)
+               return -ENODEV;
 
        rtc = devm_rtc_device_register(&dev->dev, "rtc-efi", &efi_rtc_ops,
                                        THIS_MODULE);