From d688244fea291e81a42c64aaf3588ee1f83b741c Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Thu, 12 Dec 2019 12:07:46 -0500 Subject: [PATCH] add fix-a64-timejump patch --- patch/kernel/sunxi-dev/fix-a64-timejump.patch | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 patch/kernel/sunxi-dev/fix-a64-timejump.patch diff --git a/patch/kernel/sunxi-dev/fix-a64-timejump.patch b/patch/kernel/sunxi-dev/fix-a64-timejump.patch new file mode 100644 index 000000000..154222699 --- /dev/null +++ b/patch/kernel/sunxi-dev/fix-a64-timejump.patch @@ -0,0 +1,27 @@ +diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c +index 9a5464c..6334b5a 100644 +--- a/drivers/clocksource/arm_arch_timer.c ++++ b/drivers/clocksource/arm_arch_timer.c +@@ -342,16 +342,17 @@ static u64 notrace arm64_858921_read_cntvct_el0(void) + * number of CPU cycles in 3 consecutive 24 MHz counter periods. + */ + #define __sun50i_a64_read_reg(reg) ({ \ +- u64 _val; \ +- int _retries = 150; \ ++ u64 _old, _new; \ ++ int _retries = 200; + \ + do { \ +- _val = read_sysreg(reg); \ ++ _old = read_sysreg(reg); \ ++ _new = read_sysreg(reg); \ + _retries--; \ +- } while (((_val + 1) & GENMASK(9, 0)) <= 1 && _retries); \ ++ } } while (unlikely(_old != _new) && _retries); \ + \ + WARN_ON_ONCE(!_retries); \ +- _val; \ ++ _new; \ + }) + + static u64 notrace sun50i_a64_read_cntpct_el0(void)