Difference between revisions of "ROCKPro64 Hardware compatibility"
(→PCIe devices: color the result column) |
m (Adding note about 9211-8i HBA.) |
||
(25 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
Hardware accessory compatibility for the [[ROCKPro64]]. Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not. | |||
== PCIe devices == | == Hardware compatibility == | ||
=== PCIe devices === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes | !Type || Make/Model || Hardware IDs || Kernel || Result || Notes || Tester | ||
|- | |- | ||
| NIC || Intel I350 Dual Port || || Mainline-5.4 || style="background:PaleGreen;" | good || SR-IOV fails | | NIC || Intel I350 Dual Port || || Mainline-5.4 || style="background:PaleGreen;" | good || SR-IOV fails | ||
Line 10: | Line 11: | ||
|- | |- | ||
| NIC || Intel X520 Dual Port || 8086:10fb || Mainline-5.6 || style="background:PaleGreen;" | good || SR-IOV fails | | NIC || Intel X520 Dual Port || 8086:10fb || Mainline-5.6 || style="background:PaleGreen;" | good || SR-IOV fails | ||
|- | |||
| NIC || Intel X550-T2 Dual Port || 8086:1563 || 5.15.0-trunk-arm64 (Debian) || style="background:PaleGreen;" | good || netperf throughput in FW mode, 20 streams: between 4136-6613mb/s across use cases. | |||
|- | |- | ||
| NIC || Intel 82571EB Dual Port (HP NC360T) || || Mainline-5.6 || style="background:#F99;" | crash || kernel crash on boot | | NIC || Intel 82571EB Dual Port (HP NC360T) || || Mainline-5.6 || style="background:#F99;" | crash || kernel crash on boot | ||
|- | |||
| NIC || Intel 82575EB Dual Port (AOC-SG-I2) || || Mainline-5.10 || style="background:#F99;" | crash || kernel crash on boot | |||
|- | |- | ||
| NIC || Intel 82575/82576 || 8086:1521 || OpenWrt 21.02-rc1 ; 5.4.111-1 || style="background:PaleGreen;" | good ||opkg: kmod-igb ; [https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02 OpenWrt 21.02-rc1] 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters. | | NIC || Intel 82575/82576 || 8086:1521 || OpenWrt 21.02-rc1 ; 5.4.111-1 || style="background:PaleGreen;" | good ||opkg: kmod-igb ; [https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02 OpenWrt 21.02-rc1] 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters. | ||
|- | |||
| NIC || Aquantia 10GBps AQC107 || 1d6a:07b1 || Mainline 5.16 || style="background:PaleGreen;" | good || Works perfectly out of the box. | |||
|- | |- | ||
| GPU || nVidia GTX-645 || || Mainline-5.4 || style="background:#F99;" | crash || BAR size too small, triggers PCIe error handling bug | | GPU || nVidia GTX-645 || || Mainline-5.4 || style="background:#F99;" | crash || BAR size too small, triggers PCIe error handling bug | ||
Line 28: | Line 35: | ||
|- | |- | ||
| SATA Controller || BEYMEI RAID 4-Port, Marvell 88SE9230 chip || 1b4b:9230 || Ayufan-5.6.0-1137 || style="background:PaleGreen;" | good || Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'" | | SATA Controller || BEYMEI RAID 4-Port, Marvell 88SE9230 chip || 1b4b:9230 || Ayufan-5.6.0-1137 || style="background:PaleGreen;" | good || Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'" | ||
|- | |||
| SATA Controller || BEYIMEI SATA Card 6-Port, ASM1166 chip || || 5.10.0-16-arm64 (Debian) || style="background:PaleGreen;" | good || Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN. | |||
|- | |||
| SATA Controller || PCE8SAT-A02 VER006S<br/> 2 Lanes, 8-Port, ASM1166 chip <br/> Odd because chip got only 6 ports?|| 1b21:1166 || 6.1.50-current-rockchip64 <br>Armbian 23.8.1 Bookworm || style="background:#F99;" | unstable || Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system *and* RAID. Hotplug does not work. || [[User:JPT|JPT]] | |||
|- | |||
| SATA Controller || BEYIMEI SATA Card 2-Port, ASM1062 chip || 1b21:0612 || 5.10.0-19-arm64 (Debian) || style="background:PaleGreen;" | good || Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing) | |||
|- | |- | ||
| SATA Controller || QNINE 4-Port, Marvell 88SE9215 chip || || Ayufan-5.6.0-1137 || style="background:LightYellow;" | very slow || Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors | | SATA Controller || QNINE 4-Port, Marvell 88SE9215 chip || || Ayufan-5.6.0-1137 || style="background:LightYellow;" | very slow || Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors | ||
|- | |- | ||
| Host Bus Adapter || LSI SAS 9211-4i || 1000:0070 || Ayufan-4.4.197 || style="background:PaleGreen;" | good || tested with four disks attached | | SATA Controller || DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller || 197b:0585 || 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) || style="background:LightYellow;" | good, but… | ||
|| Tested with 3 disks, two in RAID1, one standalone. | |||
u-boot-rockchip_2023.07 cannot initialize the controller to boot off it. | |||
|| [[User:Lrissman|Lrissman?]] | |||
[[User:ChriChri|ChriChri(u-boot)]] | |||
|- | |||
| Host Bus Adapter || LSI SAS 9211-4i <br/> SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes || 1000:0070 || Ayufan-4.4.197 || style="background:PaleGreen;" | good || tested with four disks attached | |||
|- | |||
| Host Bus Adapter || Fujitsu SAS MEGARAID LSI 2008B2 <br/> SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes || TODO || 6.1.50-current-rockchip64 <br>Armbian 23.8.1 Bookworm || style="background:PaleGreen;" | TODO || needs special MicroSAS cables. Must be flashed to HBA mode? <br/> ordered, not yet received || [[User:JPT|JPT]] | |||
|- | |||
| Host Bus Adapter || LSI SAS 9211-8i <br />8-Port SAS/SATA, PCI 2.0 x8 || || Kernel 6.1, 6.10 from Debian || style="background:#f99;" | boot fails || causes asynchronous SError during kernel PCIe enumeration || [[User:flying-kestrel|flying-kestrel]] | |||
|- | |||
| USB Controller || ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller || 1b21:1242 || Mainline-5.15.0-rc5 || style="background:PaleGreen;" | good || | |||
|- | |||
| DTMB Quad Tuner || TBS Technologies || TSS6514 || Mainline-5.10.21 || style="background:PaleGreen;" | good || TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming | |||
|- | |||
| DVB-T2/C Quad Tuner || TBS Technologies || TBS6205 || 5.10.0-16-arm64 (Debian) || style="background:PaleGreen;" | good || Working well with Tvheadend | |||
|- | |||
| DVB-S2 Dual Tuner || Digital Devices || Octopus CI S2 Pro || 6.1.42-rockchip64 (armbian) || style="background:PaleGreen;" | good || All features are working flawlessly with the latest drivers from Digital Devices | |||
|- | |- | ||
| | | Audio interface || MARIAN GmbH || Clara E || Armbian 23.8.3, Kernel 6.1 || ? || Dante interface. [https://www.marian.de/updates/linux-support-starting-now/?lang=en Manufacturer driver page] claims it is tested on ROCKPro64/Armbian | ||
|} | |} | ||
== NVMe SSD drives == | === NVMe SSD drives === | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
!Type || Make/Model || Size || Hardware IDs || Kernel || Result || Notes || Power options<br/>Active only || Save<br/>power<br/>setting? | !Type || Make/Model || Size || Hardware IDs || Kernel || Result || Notes || Power options<br/>Active only || Save<br/>power<br/>setting? | ||
|- | |- | ||
| NVMe || Samsung 970 Evo || 500 GB || || Mainline 5.6 || good || - || defaults || defaults | | NVMe || Samsung 970 Evo || 500 GB || || Mainline 5.6 || style="background:PaleGreen;" | good || - || defaults || defaults | ||
|- | |- | ||
| NVMe || Samsung 960 Evo || 500 GB || 144d:a804 || Mainline 5.13-rc4 || doesn't work || Likely due to 64/32 BAR mismatch issue on Linux 5.11+ || defaults || defaults | | NVMe || Samsung 960 Evo || 500 GB || 144d:a804 || Mainline 5.13-rc4 || style="background:#F99;" | doesn't work || Likely due to 64/32 BAR mismatch issue on Linux 5.11+ || defaults || defaults | ||
|} | |} | ||
== USB hardware == | === USB hardware === | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes | |||
{| class="wikitable sortable" | |||
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes || Tester | |||
|- | |- | ||
||Zigbee Bridge || Conbee II || 1cf1:0030 || 6.1.50-current-rockchip64 <br/> Armbian 23.8.1 Bookworm || style="background:PaleGreen;" | good || seems to work fine || [[User:JPT|JPT]] ([[User talk:JPT|talk]]) | |||
|} | |} | ||
== USB C alternate mode DP == | === USB C alternate mode DP === | ||
Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video. | Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video. | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes | !Type || Make/Model || Hardware IDs || Kernel || Result || Notes | ||
Line 58: | Line 98: | ||
|} | |} | ||
== Other hardware == | === eMMC / SD drives === | ||
{| class="wikitable sortable" | |||
!Type || Make/Model || Hardware IDs || Kernel || Read Speed || Write Speed ||Result || Notes | |||
|- | |||
|} | |||
=== Other hardware === | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
!Type || Make/Model || Hardware IDs || Kernel || Result || Notes | !Type || Make/Model || Hardware IDs || Kernel || Result || Notes | ||
|- | |- | ||
|} | |} | ||
== Limitations == | |||
=== Older firmware overwrites actively used memory === | |||
Some people get system freeze when: | |||
* use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061) | |||
* or do read or write 4GB to the flash. (not using PCIe) | |||
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort. | |||
Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. | |||
People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually. | |||
The latest u-boot can boot the rockpro64 without any blobs from rockchip. | |||
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands: | |||
Prerequisite packages (Debian/Ubuntu): <code>device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make</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) | |||
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64 | |||
sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 | |||
sync | |||
=== PCIe Controller Hardware Error Handling Bug === | |||
There is an issue with the rk3399 pcie controller that is currently unmitigated: | |||
* [https://lore.kernel.org/linux-pci/CAMdYzYoTwjKz4EN8PtD5pZfu3+SX+68JL+dfvmCrSnLL=K6Few@mail.gmail.com/ LKML Original Thread] | |||
* [https://lkml.org/lkml/2020/4/6/320 LKML Additional Information] | |||
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message. | |||
The error type is determined by which cpu cluster handles the message. | |||
=== Virtualization === | |||
The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine. | |||
[[Category:ROCKPro64]] | [[Category:ROCKPro64]] |
Latest revision as of 23:54, 21 September 2024
Hardware accessory compatibility for the ROCKPro64. Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not.
Hardware compatibility
PCIe devices
Type | Make/Model | Hardware IDs | Kernel | Result | Notes | Tester |
---|---|---|---|---|---|---|
NIC | Intel I350 Dual Port | Mainline-5.4 | good | SR-IOV fails | ||
NIC | Intel I350 Quad Port | ? | ||||
NIC | Intel X520 Dual Port | 8086:10fb | Mainline-5.6 | good | SR-IOV fails | |
NIC | Intel X550-T2 Dual Port | 8086:1563 | 5.15.0-trunk-arm64 (Debian) | good | netperf throughput in FW mode, 20 streams: between 4136-6613mb/s across use cases. | |
NIC | Intel 82571EB Dual Port (HP NC360T) | Mainline-5.6 | crash | kernel crash on boot | ||
NIC | Intel 82575EB Dual Port (AOC-SG-I2) | Mainline-5.10 | crash | kernel crash on boot | ||
NIC | Intel 82575/82576 | 8086:1521 | OpenWrt 21.02-rc1 ; 5.4.111-1 | good | opkg: kmod-igb ; OpenWrt 21.02-rc1 5.4.111-1 ; ~92.8 KB ; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters. | |
NIC | Aquantia 10GBps AQC107 | 1d6a:07b1 | Mainline 5.16 | good | Works perfectly out of the box. | |
GPU | nVidia GTX-645 | Mainline-5.4 | crash | BAR size too small, triggers PCIe error handling bug | ||
PCIe Switch | PCIE-EUX1-04 Ver.002 | Mainline-5.4 | good | |||
SATA Controller | ASM1062 4-Port | Mainline-5.6 | good | tested only with one disk attached | ||
SATA Controller | ASM1062 (rev 02) 4-Port | 1d87:0100 | Ayufan-4.4.190 | good | tested with four disks, 3 in raid 5 | |
SATA Controller | IOCrest (Same as Syba?) SI-PEX40063 4-port, Marvell 88SE9235 chip | 1b4b:9235 | Debian unstable 5.7, 5.8 | good | Tested with two disks. SATA errors occurred with a WD Red drive in a cheap enclosure; resolved by connecting the same drive directly to the card. | |
SATA Controller | Ziyituod SATA Card ASM 1062+1093 6-Port | 1b21:0625 | Mainline-4.4 (armbian) | good | tested with 6 disks | |
SATA Controller | BEYMEI RAID 4-Port, Marvell 88SE9230 chip | 1b4b:9230 | Ayufan-5.6.0-1137 | good | Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'" | |
SATA Controller | BEYIMEI SATA Card 6-Port, ASM1166 chip | 5.10.0-16-arm64 (Debian) | good | Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN. | ||
SATA Controller | PCE8SAT-A02 VER006S 2 Lanes, 8-Port, ASM1166 chip Odd because chip got only 6 ports? |
1b21:1166 | 6.1.50-current-rockchip64 Armbian 23.8.1 Bookworm |
unstable | Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system *and* RAID. Hotplug does not work. | JPT |
SATA Controller | BEYIMEI SATA Card 2-Port, ASM1062 chip | 1b21:0612 | 5.10.0-19-arm64 (Debian) | good | Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing) | |
SATA Controller | QNINE 4-Port, Marvell 88SE9215 chip | Ayufan-5.6.0-1137 | very slow | Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors | ||
SATA Controller | DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller | 197b:0585 | 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) | good, but… | Tested with 3 disks, two in RAID1, one standalone.
u-boot-rockchip_2023.07 cannot initialize the controller to boot off it. |
Lrissman? |
Host Bus Adapter | LSI SAS 9211-4i SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes |
1000:0070 | Ayufan-4.4.197 | good | tested with four disks attached | |
Host Bus Adapter | Fujitsu SAS MEGARAID LSI 2008B2 SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes |
TODO | 6.1.50-current-rockchip64 Armbian 23.8.1 Bookworm |
TODO | needs special MicroSAS cables. Must be flashed to HBA mode? ordered, not yet received |
JPT |
Host Bus Adapter | LSI SAS 9211-8i 8-Port SAS/SATA, PCI 2.0 x8 |
Kernel 6.1, 6.10 from Debian | boot fails | causes asynchronous SError during kernel PCIe enumeration | flying-kestrel | |
USB Controller | ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller | 1b21:1242 | Mainline-5.15.0-rc5 | good | ||
DTMB Quad Tuner | TBS Technologies | TSS6514 | Mainline-5.10.21 | good | TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming | |
DVB-T2/C Quad Tuner | TBS Technologies | TBS6205 | 5.10.0-16-arm64 (Debian) | good | Working well with Tvheadend | |
DVB-S2 Dual Tuner | Digital Devices | Octopus CI S2 Pro | 6.1.42-rockchip64 (armbian) | good | All features are working flawlessly with the latest drivers from Digital Devices | |
Audio interface | MARIAN GmbH | Clara E | Armbian 23.8.3, Kernel 6.1 | ? | Dante interface. Manufacturer driver page claims it is tested on ROCKPro64/Armbian |
NVMe SSD drives
Type | Make/Model | Size | Hardware IDs | Kernel | Result | Notes | Power options Active only |
Save power setting? |
---|---|---|---|---|---|---|---|---|
NVMe | Samsung 970 Evo | 500 GB | Mainline 5.6 | good | - | defaults | defaults | |
NVMe | Samsung 960 Evo | 500 GB | 144d:a804 | Mainline 5.13-rc4 | doesn't work | Likely due to 64/32 BAR mismatch issue on Linux 5.11+ | defaults | defaults |
USB hardware
Type | Make/Model | Hardware IDs | Kernel | Result | Notes | Tester |
---|---|---|---|---|---|---|
Zigbee Bridge | Conbee II | 1cf1:0030 | 6.1.50-current-rockchip64 Armbian 23.8.1 Bookworm |
good | seems to work fine | JPT (talk) |
USB C alternate mode DP
Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video.
Type | Make/Model | Hardware IDs | Kernel | Result | Notes |
---|
eMMC / SD drives
Type | Make/Model | Hardware IDs | Kernel | Read Speed | Write Speed | Result | Notes |
---|
Other hardware
Type | Make/Model | Hardware IDs | Kernel | Result | Notes |
---|
Limitations
Older firmware overwrites actively used memory
Some people get system freeze when:
- use SATA disk with ROCKPro64 PCIe card. (maybe on newer PCIe card ASM1062 vs ASM1061)
- or do read or write 4GB to the flash. (not using PCIe)
If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort.
Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of.
People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually.
The latest u-boot can boot the rockpro64 without any blobs from rockchip.
Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands:
Prerequisite packages (Debian/Ubuntu): device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make
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)
sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64 sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 sync
PCIe Controller Hardware Error Handling Bug
There is an issue with the rk3399 pcie controller that is currently unmitigated:
The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message.
The error type is determined by which cpu cluster handles the message.
Virtualization
The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine.