Hi, On Wed Jul 5, 2023 at 4:42 PM CEST, Christopher Obbard wrote: > There is some instablity with some eMMC modules on ROCK Pi 4 SBCs running > in HS400 mode. This ends up resulting in some block errors after a while > or after a "heavy" operation utilising the eMMC (e.g. resizing a > filesystem). An example of these errors is as follows: > > [ 289.171014] mmc1: running CQE recovery > [ 290.048972] mmc1: running CQE recovery > [ 290.054834] mmc1: running CQE recovery > [ 290.060817] mmc1: running CQE recovery > [ 290.061337] blk_update_request: I/O error, dev mmcblk1, sector 1411072 op 0x1:(WRITE) flags 0x800 phys_seg 36 prio class 0 > [ 290.061370] EXT4-fs warning (device mmcblk1p1): ext4_end_bio:348: I/O error 10 writing to inode 29547 starting block 176466) > [ 290.061484] Buffer I/O error on device mmcblk1p1, logical block 172288 > [ 290.061531] Buffer I/O error on device mmcblk1p1, logical block 172289 > [ 290.061551] Buffer I/O error on device mmcblk1p1, logical block 172290 > [ 290.061574] Buffer I/O error on device mmcblk1p1, logical block 172291 > [ 290.061592] Buffer I/O error on device mmcblk1p1, logical block 172292 > [ 290.061615] Buffer I/O error on device mmcblk1p1, logical block 172293 > [ 290.061632] Buffer I/O error on device mmcblk1p1, logical block 172294 > [ 290.061654] Buffer I/O error on device mmcblk1p1, logical block 172295 > [ 290.061673] Buffer I/O error on device mmcblk1p1, logical block 172296 > [ 290.061695] Buffer I/O error on device mmcblk1p1, logical block 172297 > > Disabling the Command Queue seems to stop the CQE recovery from running, > but doesn't seem to improve the I/O errors. Until this can be investigated > further, disable HS400 mode on the ROCK Pi 4 SBCs to at least stop I/O > errors from occurring. Thanks for the patches! This issue lately got some attention on the Radxa forums so thanks for bringing it to the kernel lists. As a user who was hitting this issue some time ago I'd like to share the observations I made during my testing: I've seen these EMMC issues on several RockPi4 boards (4b v1.4, 4b v1.5, 4SE and 4b+ v1.73), with different EMMC modules (3 Foresee, 1 Samsung) and throughout different kernels (v6.1.8 through 6.1.37, 6.3, 6.3.0-rc7-next-20230421). However, with this vendor image [1] that uses kernel 4.4.154-116-rockchip-g86a614bc15b3 all of the EMMC modules work just fine. The same holds true for another vendor image with kernel 4.4.154-00039-g00fccd37c63c-dirty. The interesting thing here is, that both 4.4 kernels have HS400 enabled (and max-frequency=<150000000> set) in their respective device-trees. This can be checked in the vendor kernel repo for 4.4.154-116-rockchip-g86a614bc15b3 [2] and for 4.4.154-00039-g00fccd37c63c [3]. Kind regards Folker [1]: https://github.com/radxa-build/rock-pi-4b/releases/download/main-df04b3af/rockpi-4b-debian-buster-xfce4-arm64-20220401-0335-gpt.img.xz [2]: https://github.com/radxa/kernel/blob/86a614bc15b3b1aeb3a9a9e395aedd088c70e35e/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi [3]: https://github.com/radxa/kernel/blob/00fccd37c63cd51b2ae9b3af965f975c561674b1/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi > > Christopher Obbard (2): > arm64: dts: rockchip: Disable HS400 for eMMC on ROCK Pi 4 > arm64: dts: rockchip: Disable HS400 for eMMC on ROCK 4C+ > > arch/arm64/boot/dts/rockchip/rk3399-rock-4c-plus.dts | 3 +-- > arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 4 ++-- > 2 files changed, 3 insertions(+), 4 deletions(-)