summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2017-03-14 10:37:29 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-15 08:26:54 +0100
commit249b40be7ec6bd73d2d53c7728a369f9d472b0d4 (patch)
tree38aa7222d182b83f970d84a2e35378efbf71df67
parent2846e53d2d41742348459676edab737edf90604a (diff)
downloadbarebox-249b40be7ec6bd73d2d53c7728a369f9d472b0d4.tar.gz
barebox-249b40be7ec6bd73d2d53c7728a369f9d472b0d4.tar.xz
efi: clocksoure: make sure the meassured frequency is valid
Some EFI implementations have a even slower tick rate and the meassured frequency may be zero. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/clocksource/efi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/clocksource/efi.c b/drivers/clocksource/efi.c
index 89906c452e..fb5b7ca63d 100644
--- a/drivers/clocksource/efi.c
+++ b/drivers/clocksource/efi.c
@@ -71,6 +71,10 @@ static int efi_cs_init(struct clocksource *cs)
uint64_t nb_100ns;
freq = ticks_freq_x86();
+ if (freq == 0) {
+ BS->close_event(efi_cs_evt);
+ return -ENODEV;
+ }
nb_100ns = 10 * 1000 * 1000 / freq;
pr_warn("EFI Event timer too slow freq = %llu Hz\n", freq);
efiret = BS->set_timer(efi_cs_evt, EFI_TIMER_PERIODIC, nb_100ns);