
There were recent reports about MMC operations failing very often on boards with the Allwinner A64 SoC. Investigations pointed to a time issue, and indeed a recent patch [1] introduced frequent arch timer reads to the Allwinner MMC driver. Reverting this patch made the problems go away, but also hurt performance much. Unrelated reports also confirmed an Allwinner A64 arch timer erratum[2], which can lead to erroneous counter reads, where the lower 11 bits become either all 0's or all 1's. This leads to random jumps forwards and backwards, with catastrophic consequences. These two patches fix the issue, while retaining the much improved MMC performance. The first patch refactors an already existing arch timer fix, to allow the second patch, introducing an Allwinner specific workaround, to fit it more nicely.
Please have a look and apply as soon as possible.
Cheers, Andre.
[1] commit 5ff8e54888e4d26a352453564f7f599d29696dc9 Author: Philipp Tomsich philipp.tomsich@theobroma-systems.com Date: Wed Mar 21 12:18:58 2018 +0100 sunxi: improve throughput in the sunxi_mmc driver
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-May/576886.html
Andre Przywara (2): arm: timer: factor out FSL arch timer erratum workaround arm: timer: sunxi: add Allwinner timer erratum workaround
arch/arm/cpu/armv8/generic_timer.c | 55 +++++++++++++++++++++++++++++++++----- arch/arm/mach-sunxi/Kconfig | 4 +++ 2 files changed, 53 insertions(+), 6 deletions(-)