These "SError Interrupt" problems seem to be caused by the rockchip binary firmware. There is some discussion here: https://www.spinics.net/lists/arm-kernel/msg759563.html
It seems to use some memory that linux is unaware of. In that thread it says it's in the range 0x8400000-0x9600000. I tried reserving that range in the dtb, but that made me get a guaranteed "SError Interrupt" during boot. I tried reserving twice as much, and that seemed to fix it.
FWIW, here's the device tree node I used:
However, I'm not sure that's actually enough, nor if that's the only RAM the firmware needs to be reserved.
A better solution, which I'm now using, is to use the latest u-boot which can boot the rockpro64 without any blobs from rockchip. You need to have an arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler installed, then run the following commands:
Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)
Hopefully your rockpro64 still boots at this point. If so, the SError panics should be gone.
It seems to use some memory that linux is unaware of. In that thread it says it's in the range 0x8400000-0x9600000. I tried reserving that range in the dtb, but that made me get a guaranteed "SError Interrupt" during boot. I tried reserving twice as much, and that seemed to fix it.
FWIW, here's the device tree node I used:
Code:
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
tee@0x8400000 {
reg = <0x0 0x8400000 0x0 0x2400000>;
no-map;
};
};
However, I'm not sure that's actually enough, nor if that's the only RAM the firmware needs to be reserved.
A better solution, which I'm now using, is to use the latest u-boot which can boot the rockpro64 without any blobs from rockchip. You need to have an arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler installed, then run the following commands:
Code:
git clone https://github.com/ARM-software/arm-trusted-firmware.git atf
make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31
git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot
cd u-boot/
git checkout v2020.01-rc5
make rockpro64-rk3399_defconfig
BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC)
Code:
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384
sync