Closed ftr3g closed 1 year ago
Wow, that is too bad, if this is does not work. I wanted to use NVME on my device with a small boot partition on eMMC or SD.
Can you try this (beware that it might crash your system): echo 1 > /sys/bus/pci/rescan
(root privileges are required) and rerun lspci
?
lspci
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
0000:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0001:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
0001:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0002:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
echo 1 > /sys/bus/pci/rescan
lspci
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
0000:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0001:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
0001:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0002:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3568 Remote Signal Processor (rev 01)
0002:01:00.0 Non-Volatile memory controller: Sandisk Corp WD Black SN750 / PC SN730 NVMe SSD
Yes, NVMe is detected. However fdisk does not detect it and the system crashes on shutdown
I can confirm it works with a Samsung 980, no crashes.
On 5/25/23 4:47 PM, Artem Boldariev wrote:
Wow, that is too bad, if this is does not work. I wanted to use NVME on my device with a small boot partition on eMMC or SD.
Can you try this (beware that it might crash your system) echo 1 > /sys/bus/pci/rescan?
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
@ftr3g Cool, thanks for confirming that. Now you can try to somehow run this command from within initramfs on boot, but I am not sure that it is the right way.
Perhaps, @inindev could give us more information if something needs or could to be done on the side of bootloader.
I can confirm it works with a Samsung 980, no crashes.
@inindev Do you mean that it works just fine from the very beginning, or you still need to force the system to rescan the PCI bus in order to make SSD work?
I am wondering if pcie_aspm=off
kernel parameter could help here, too. Also, I am wondering if it is possible to add a command to the boot script to force it to rescan the PCI bus before loading the OS.
There are two patches I want to apply to see if they help:
pci: pcie_dw_rockchip: Hide BARs of the root complex https://github.com/Kwiboo/u-boot-rockchip/commit/74dd38b0945b6f1dba9ad064241eb295e062bd87
rockchip: rk356x: Update PCIe config, IO and memory regions https://github.com/Kwiboo/u-boot-rockchip/commit/1fc2a3cc1248ebdaa16bd520e50d9da291d4b8b4
Give me a bit to recompile with these applied.
On 5/25/23 5:42 PM, Artem Boldariev wrote:
@.***(https://github.com/ftr3g) Cool, thanks for confirming that. Now you can try to somehow run this command from within initramfs on boot, but I am not sure that it is the right way.
Perhaps, @.***(https://github.com/inindev) could give us more information if something needs or could to be done on the side of bootloader.
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
I have applied the above patches to this image: https://drive.google.com/file/d/1xK70fILu7jTe9C74Y9hog9iW0kW4vOSN/view?usp=sharing
I would be interested to see the dmesg
output with your m.2 nvme
# dmesg | grep pci
[ 5.233115] rockchip-dw-pcie 3c0000000.pcie: host bridge /pcie@fe260000 ranges:
[ 5.233841] rockchip-dw-pcie 3c0000000.pcie: IO 0x00f4100000..0x00f41fffff -> 0x00f4100000
[ 5.234641] rockchip-dw-pcie 3c0000000.pcie: MEM 0x00f4200000..0x00f5ffffff -> 0x00f4200000
[ 5.235948] rockchip-dw-pcie 3c0000000.pcie: MEM 0x0300000000..0x033fffffff -> 0x0040000000
[ 5.237000] rockchip-dw-pcie 3c0000000.pcie: iATU unroll: enabled
[ 5.237561] rockchip-dw-pcie 3c0000000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 5.443048] rockchip-dw-pcie 3c0000000.pcie: PCIe Gen.2 x1 link up
[ 5.466503] rockchip-dw-pcie 3c0000000.pcie: PCI host bridge to bus 0000:00
[ 5.467182] pci_bus 0000:00: root bus resource [bus 00-0f]
[ 5.467686] pci_bus 0000:00: root bus resource [io 0x0000-0xfffff] (bus address [0xf4100000-0xf41fffff])
[ 5.468533] pci_bus 0000:00: root bus resource [mem 0xf4200000-0xf5ffffff]
[ 5.469146] pci_bus 0000:00: root bus resource [mem 0x300000000-0x33fffffff] (bus address [0x40000000-0x7fffffff])
[ 5.470109] pci 0000:00:00.0: [1d87:3566] type 01 class 0x060400
[ 5.470681] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 5.471417] pci 0000:00:00.0: supports D1 D2
[ 5.471816] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[ 5.499542] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 5.500641] pci 0000:01:00.0: [10ec:8125] type 00 class 0x020000
[ 5.501265] pci 0000:01:00.0: reg 0x10: initial BAR value 0x00000000 invalid
[ 5.501904] pci 0000:01:00.0: reg 0x10: [io size 0x0100]
[ 5.502479] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[ 5.503232] pci 0000:01:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[ 5.505782] pci 0000:01:00.0: supports D1 D2
[ 5.506192] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 5.547203] pci 0000:00:00.0: BAR 14: assigned [mem 0xf4200000-0xf42fffff]
[ 5.547852] pci 0000:00:00.0: BAR 6: assigned [mem 0xf4300000-0xf430ffff pref]
[ 5.548500] pci 0000:00:00.0: BAR 13: assigned [io 0x1000-0x1fff]
[ 5.549068] pci 0000:01:00.0: BAR 2: assigned [mem 0xf4200000-0xf420ffff 64bit]
[ 5.549777] pci 0000:01:00.0: BAR 4: assigned [mem 0xf4210000-0xf4213fff 64bit]
[ 5.550483] pci 0000:01:00.0: BAR 0: assigned [io 0x1000-0x10ff]
[ 5.551124] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[ 5.551613] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff]
[ 5.552161] pci 0000:00:00.0: bridge window [mem 0xf4200000-0xf42fffff]
[ 5.591259] pcieport 0000:00:00.0: PME: Signaling with IRQ 37
[ 5.598598] pcieport 0000:00:00.0: AER: enabled with IRQ 37
[ 5.816917] rockchip-dw-pcie 3c0400000.pcie: host bridge /pcie@fe270000 ranges:
[ 5.817621] rockchip-dw-pcie 3c0400000.pcie: IO 0x00f2100000..0x00f21fffff -> 0x00f2100000
[ 5.818424] rockchip-dw-pcie 3c0400000.pcie: MEM 0x00f2200000..0x00f3ffffff -> 0x00f2200000
[ 5.819403] rockchip-dw-pcie 3c0400000.pcie: MEM 0x0340000000..0x037fffffff -> 0x0040000000
[ 5.828704] rockchip-dw-pcie 3c0400000.pcie: iATU unroll: enabled
[ 5.829253] rockchip-dw-pcie 3c0400000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 6.035071] rockchip-dw-pcie 3c0400000.pcie: PCIe Gen.2 x1 link up
[ 6.035949] rockchip-dw-pcie 3c0400000.pcie: PCI host bridge to bus 0001:00
[ 6.036579] pci_bus 0001:00: root bus resource [bus 00-0f]
[ 6.037074] pci_bus 0001:00: root bus resource [io 0x100000-0x1fffff] (bus address [0xf2100000-0xf21fffff])
[ 6.037940] pci_bus 0001:00: root bus resource [mem 0xf2200000-0xf3ffffff]
[ 6.038552] pci_bus 0001:00: root bus resource [mem 0x340000000-0x37fffffff] (bus address [0x40000000-0x7fffffff])
[ 6.039548] pci 0001:00:00.0: [1d87:3566] type 01 class 0x060400
[ 6.040114] pci 0001:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 6.040786] pci 0001:00:00.0: supports D1 D2
[ 6.041172] pci 0001:00:00.0: PME# supported from D0 D1 D3hot
[ 6.049752] pci_bus 0001:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 6.050840] pci 0001:01:00.0: [10ec:8125] type 00 class 0x020000
[ 6.051482] pci 0001:01:00.0: reg 0x10: [io 0x0000-0x00ff]
[ 6.052074] pci 0001:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[ 6.052735] pci 0001:01:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[ 6.053868] pci 0001:01:00.0: supports D1 D2
[ 6.054256] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 6.067214] pci 0001:00:00.0: BAR 14: assigned [mem 0xf2200000-0xf22fffff]
[ 6.067851] pci 0001:00:00.0: BAR 6: assigned [mem 0xf2300000-0xf230ffff pref]
[ 6.068497] pci 0001:00:00.0: BAR 13: assigned [io 0x100000-0x100fff]
[ 6.069091] pci 0001:01:00.0: BAR 2: assigned [mem 0xf2200000-0xf220ffff 64bit]
[ 6.069789] pci 0001:01:00.0: BAR 4: assigned [mem 0xf2210000-0xf2213fff 64bit]
[ 6.070482] pci 0001:01:00.0: BAR 0: assigned [io 0x100000-0x1000ff]
[ 6.071108] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[ 6.071580] pci 0001:00:00.0: bridge window [io 0x100000-0x100fff]
[ 6.072154] pci 0001:00:00.0: bridge window [mem 0xf2200000-0xf22fffff]
[ 6.075227] pcieport 0001:00:00.0: PME: Signaling with IRQ 43
[ 6.076315] pcieport 0001:00:00.0: AER: enabled with IRQ 43
[ 6.113508] rockchip-dw-pcie 3c0800000.pcie: host bridge /pcie@fe280000 ranges:
[ 6.114215] rockchip-dw-pcie 3c0800000.pcie: IO 0x00f0100000..0x00f01fffff -> 0x00f0100000
[ 6.115054] rockchip-dw-pcie 3c0800000.pcie: MEM 0x00f0200000..0x00f1ffffff -> 0x00f0200000
[ 6.115850] rockchip-dw-pcie 3c0800000.pcie: MEM 0x0380000000..0x03bfffffff -> 0x0040000000
[ 6.125447] rockchip-dw-pcie 3c0800000.pcie: iATU unroll: enabled
[ 6.125997] rockchip-dw-pcie 3c0800000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 6.331049] rockchip-dw-pcie 3c0800000.pcie: PCIe Gen.3 x1 link up
[ 6.331896] rockchip-dw-pcie 3c0800000.pcie: PCI host bridge to bus 0002:00
[ 6.332526] pci_bus 0002:00: root bus resource [bus 00-0f]
[ 6.333022] pci_bus 0002:00: root bus resource [io 0x200000-0x2fffff] (bus address [0xf0100000-0xf01fffff])
[ 6.333888] pci_bus 0002:00: root bus resource [mem 0xf0200000-0xf1ffffff]
[ 6.334502] pci_bus 0002:00: root bus resource [mem 0x380000000-0x3bfffffff] (bus address [0x40000000-0x7fffffff])
[ 6.335499] pci 0002:00:00.0: [1d87:3566] type 01 class 0x060400
[ 6.336056] pci 0002:00:00.0: reg 0x10: [mem 0x00000000-0x3fffffff]
[ 6.336622] pci 0002:00:00.0: reg 0x14: [mem 0x00000000-0x3fffffff]
[ 6.337183] pci 0002:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 6.337851] pci 0002:00:00.0: supports D1 D2
[ 6.338237] pci 0002:00:00.0: PME# supported from D0 D1 D3hot
[ 6.346843] pci_bus 0002:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 6.347953] pci 0002:01:00.0: [144d:a809] type 00 class 0x010802
[ 6.348584] pci 0002:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[ 6.350094] pci 0002:01:00.0: 7.876 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x1 link at 0002:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[ 6.363188] pci 0002:00:00.0: BAR 0: assigned [mem 0x380000000-0x3bfffffff]
[ 6.363849] pci 0002:00:00.0: BAR 1: no space for [mem size 0x40000000]
[ 6.364440] pci 0002:00:00.0: BAR 1: failed to assign [mem size 0x40000000]
[ 6.365062] pci 0002:00:00.0: BAR 14: assigned [mem 0xf0200000-0xf02fffff]
[ 6.365678] pci 0002:00:00.0: BAR 6: assigned [mem 0xf0300000-0xf030ffff pref]
[ 6.366332] pci 0002:01:00.0: BAR 0: assigned [mem 0xf0200000-0xf0203fff 64bit]
[ 6.367076] pci 0002:00:00.0: PCI bridge to [bus 01-ff]
[ 6.367557] pci 0002:00:00.0: bridge window [mem 0xf0200000-0xf02fffff]
[ 6.370753] pcieport 0002:00:00.0: PME: Signaling with IRQ 46
[ 6.372035] pcieport 0002:00:00.0: AER: enabled with IRQ 46
[ 6.458632] nvme nvme0: pci function 0002:01:00.0
for me, I see the nvme device either way:
$ ls -al /dev/nvme0*
crw------- 1 root root 235, 0 Feb 28 11:15 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Feb 28 11:15 /dev/nvme0n1
brw-rw---- 1 root disk 259, 1 Feb 28 11:15 /dev/nvme0n1p1
Test with your patched image (https://drive.google.com/file/d/1xK70fILu7jTe9C74Y9hog9iW0kW4vOSN/view?usp=sharing)
dmesg | grep pci
[ 5.386965] rockchip-dw-pcie 3c0000000.pcie: host bridge /pcie@fe260000 ranges:
[ 5.387679] rockchip-dw-pcie 3c0000000.pcie: IO 0x00f4100000..0x00f41fffff -> 0x00f4100000
[ 5.388495] rockchip-dw-pcie 3c0000000.pcie: MEM 0x00f4200000..0x00f5ffffff -> 0x00f4200000
[ 5.389299] rockchip-dw-pcie 3c0000000.pcie: MEM 0x0300000000..0x033fffffff -> 0x0040000000
[ 5.390347] rockchip-dw-pcie 3c0000000.pcie: iATU unroll: enabled
[ 5.390938] rockchip-dw-pcie 3c0000000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 5.598811] rockchip-dw-pcie 3c0000000.pcie: PCIe Gen.2 x1 link up
[ 5.599679] rockchip-dw-pcie 3c0000000.pcie: PCI host bridge to bus 0000:00
[ 5.600319] pci_bus 0000:00: root bus resource [bus 00-0f]
[ 5.600817] pci_bus 0000:00: root bus resource [io 0x0000-0xfffff] (bus address [0xf4100000-0xf41fffff])
[ 5.601663] pci_bus 0000:00: root bus resource [mem 0xf4200000-0xf5ffffff]
[ 5.602278] pci_bus 0000:00: root bus resource [mem 0x300000000-0x33fffffff] (bus address [0x40000000-0x7fffffff])
[ 5.603338] pci 0000:00:00.0: [1d87:3566] type 01 class 0x060400
[ 5.603913] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 5.604599] pci 0000:00:00.0: supports D1 D2
[ 5.605004] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[ 5.620344] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 5.621444] pci 0000:01:00.0: [10ec:8125] type 00 class 0x020000
[ 5.622069] pci 0000:01:00.0: reg 0x10: initial BAR value 0x00000000 invalid
[ 5.622699] pci 0000:01:00.0: reg 0x10: [io size 0x0100]
[ 5.623313] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[ 5.623993] pci 0000:01:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[ 5.626055] pci 0000:01:00.0: supports D1 D2
[ 5.626469] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 5.643762] pci 0000:00:00.0: BAR 14: assigned [mem 0xf4200000-0xf42fffff]
[ 5.644412] pci 0000:00:00.0: BAR 6: assigned [mem 0xf4300000-0xf430ffff pref]
[ 5.645061] pci 0000:00:00.0: BAR 13: assigned [io 0x1000-0x1fff]
[ 5.645631] pci 0000:01:00.0: BAR 2: assigned [mem 0xf4200000-0xf420ffff 64bit]
[ 5.646341] pci 0000:01:00.0: BAR 4: assigned [mem 0xf4210000-0xf4213fff 64bit]
[ 5.647119] pci 0000:01:00.0: BAR 0: assigned [io 0x1000-0x10ff]
[ 5.647703] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[ 5.648177] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff]
[ 5.648724] pci 0000:00:00.0: bridge window [mem 0xf4200000-0xf42fffff]
[ 5.670396] pcieport 0000:00:00.0: PME: Signaling with IRQ 39
[ 5.676801] pcieport 0000:00:00.0: AER: enabled with IRQ 39
[ 5.904840] rockchip-dw-pcie 3c0400000.pcie: host bridge /pcie@fe270000 ranges:
[ 5.905545] rockchip-dw-pcie 3c0400000.pcie: IO 0x00f2100000..0x00f21fffff -> 0x00f2100000
[ 5.906344] rockchip-dw-pcie 3c0400000.pcie: MEM 0x00f2200000..0x00f3ffffff -> 0x00f2200000
[ 5.907162] rockchip-dw-pcie 3c0400000.pcie: MEM 0x0340000000..0x037fffffff -> 0x0040000000
[ 5.916790] rockchip-dw-pcie 3c0400000.pcie: iATU unroll: enabled
[ 5.917354] rockchip-dw-pcie 3c0400000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 6.122882] rockchip-dw-pcie 3c0400000.pcie: PCIe Gen.2 x1 link up
[ 6.123765] rockchip-dw-pcie 3c0400000.pcie: PCI host bridge to bus 0001:00
[ 6.124400] pci_bus 0001:00: root bus resource [bus 00-0f]
[ 6.124898] pci_bus 0001:00: root bus resource [io 0x100000-0x1fffff] (bus address [0xf2100000-0xf21fffff])
[ 6.125767] pci_bus 0001:00: root bus resource [mem 0xf2200000-0xf3ffffff]
[ 6.126383] pci_bus 0001:00: root bus resource [mem 0x340000000-0x37fffffff] (bus address [0x40000000-0x7fffffff])
[ 6.127416] pci 0001:00:00.0: [1d87:3566] type 01 class 0x060400
[ 6.127990] pci 0001:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 6.128672] pci 0001:00:00.0: supports D1 D2
[ 6.129061] pci 0001:00:00.0: PME# supported from D0 D1 D3hot
[ 6.137779] pci_bus 0001:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 6.138896] pci 0001:01:00.0: [10ec:8125] type 00 class 0x020000
[ 6.139513] pci 0001:01:00.0: reg 0x10: [io 0x0000-0x00ff]
[ 6.140098] pci 0001:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[ 6.140757] pci 0001:01:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[ 6.141878] pci 0001:01:00.0: supports D1 D2
[ 6.142268] pci 0001:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 6.154978] pci 0001:00:00.0: BAR 14: assigned [mem 0xf2200000-0xf22fffff]
[ 6.155620] pci 0001:00:00.0: BAR 6: assigned [mem 0xf2300000-0xf230ffff pref]
[ 6.156264] pci 0001:00:00.0: BAR 13: assigned [io 0x100000-0x100fff]
[ 6.156857] pci 0001:01:00.0: BAR 2: assigned [mem 0xf2200000-0xf220ffff 64bit]
[ 6.157556] pci 0001:01:00.0: BAR 4: assigned [mem 0xf2210000-0xf2213fff 64bit]
[ 6.158249] pci 0001:01:00.0: BAR 0: assigned [io 0x100000-0x1000ff]
[ 6.159586] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[ 6.160059] pci 0001:00:00.0: bridge window [io 0x100000-0x100fff]
[ 6.160687] pci 0001:00:00.0: bridge window [mem 0xf2200000-0xf22fffff]
[ 6.163809] pcieport 0001:00:00.0: PME: Signaling with IRQ 43
[ 6.166672] pcieport 0001:00:00.0: AER: enabled with IRQ 43
[ 6.210312] rockchip-dw-pcie 3c0800000.pcie: host bridge /pcie@fe280000 ranges:
[ 6.211081] rockchip-dw-pcie 3c0800000.pcie: IO 0x00f0100000..0x00f01fffff -> 0x00f0100000
[ 6.211899] rockchip-dw-pcie 3c0800000.pcie: MEM 0x00f0200000..0x00f1ffffff -> 0x00f0200000
[ 6.212694] rockchip-dw-pcie 3c0800000.pcie: MEM 0x0380000000..0x03bfffffff -> 0x0040000000
[ 6.222281] rockchip-dw-pcie 3c0800000.pcie: iATU unroll: enabled
[ 6.222867] rockchip-dw-pcie 3c0800000.pcie: iATU regions: 8 ob, 8 ib, align 64K, limit 8G
[ 6.330811] rockchip-dw-pcie 3c0800000.pcie: PCIe Gen.3 x1 link up
[ 6.331670] rockchip-dw-pcie 3c0800000.pcie: PCI host bridge to bus 0002:00
[ 6.332301] pci_bus 0002:00: root bus resource [bus 00-0f]
[ 6.332797] pci_bus 0002:00: root bus resource [io 0x200000-0x2fffff] (bus address [0xf0100000-0xf01fffff])
[ 6.333663] pci_bus 0002:00: root bus resource [mem 0xf0200000-0xf1ffffff]
[ 6.334275] pci_bus 0002:00: root bus resource [mem 0x380000000-0x3bfffffff] (bus address [0x40000000-0x7fffffff])
[ 6.335285] pci 0002:00:00.0: [1d87:3566] type 01 class 0x060400
[ 6.335841] pci 0002:00:00.0: reg 0x10: [mem 0x00000000-0x3fffffff]
[ 6.336406] pci 0002:00:00.0: reg 0x14: [mem 0x00000000-0x3fffffff]
[ 6.336967] pci 0002:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[ 6.337640] pci 0002:00:00.0: supports D1 D2
[ 6.338027] pci 0002:00:00.0: PME# supported from D0 D1 D3hot
[ 6.346675] pci_bus 0002:01: busn_res: can not insert [bus 01-ff] under [bus 00-0f] (conflicts with (null) [bus 00-0f])
[ 6.348052] pci 0002:00:00.0: BAR 0: assigned [mem 0x380000000-0x3bfffffff]
[ 6.348699] pci 0002:00:00.0: BAR 1: no space for [mem size 0x40000000]
[ 6.349291] pci 0002:00:00.0: BAR 1: failed to assign [mem size 0x40000000]
[ 6.349912] pci 0002:00:00.0: BAR 6: assigned [mem 0xf0200000-0xf020ffff pref]
[ 6.350560] pci 0002:00:00.0: PCI bridge to [bus 01-ff]
[ 6.353475] pcieport 0002:00:00.0: PME: Signaling with IRQ 46
[ 6.354514] pcieport 0002:00:00.0: AER: enabled with IRQ 46
ls -al /dev/nvme0*
ls: cannot access '/dev/nvme0*': No such file or directory
echo 1 > /sys/bus/pci/rescan
ls -al /dev/nvme0*
crw------- 1 root root 509, 0 Feb 28 11:48 /dev/nvme0
@ftr3g FWIW, At least WD Blue SN570 (a generation newer than yours, but middle consumer end drive, compared to your higher end one) seems to work fine, at least with the latest official Fedora Workstation image booted in UEFI mode (see #6). I am not sure if UEFI mode changes anything PCI-related, making it to work.
I must receive Crucial P3 4To early next month, I will test.
@inindev I have noticed that you have updated the bootloader. So, does it support booting from NVME now?
Hi Artem,
No, I am not to that point yet. The update I posted is to get ready for the Debain 12 GA scheduled for 6/10/23. My focus has been to get the Nanopi R5S to boot to NVMe, which I did to my satisfaction: https://github.com/inindev/nanopi-r5#booting-from-m2-nvme
I do intend to look into this in the month of June and would value your feedback as I make progress. I ran centos for years and only switched to debian in 2019 as I wanted to start using netfilter instead of iptables (the fedora kernel at the time did not support netfilter).
Aha, I see. So I will stick to the initial plan of having /boot on eMMC. That should work.
Of course, I will provide you with the feedback should I spot something interesting (or "interesting"). At the same time, my plan is to bootstrap NixOS on the device, not Debian. Yesterday (late at night) I managed to produce a custom SD image which booted fine, so I am halfway there. However, I had to change a couple of kernel configuration options in order to get HDMI and PCI working. I have to report these to them, I guess. That is a bummer, because it means that kernel will automatically recompile on update (Gentoo style), but still - it is vanilla mainline kernel, so that is great anyway.
Thank you for your work!
Hi Artem,
No, I am not to that point yet. The update I posted is to get ready for the Debain 12 GA scheduled for 6/10/23. My focus has been to get the Nanopi R5S to boot to NVMe, which I did to my satisfaction: https://github.com/inindev/nanopi-r5#booting-from-m2-nvme
I do intend to look into this in the month of June and would value your feedback as I make progress. I ran centos for years and only switched to debian in 2019 as I wanted to start using netfilter instead of iptables (the fedora kernel at the time did not support netfilter).
@inindev BTW, I know that there is a Quartz64 UEFI port for this board (R5S).
https://github.com/S199pWa1k9r/rk356x-uefi/tree/nanopi-r5s
I haven't tested it yet, though.
Some boards supported by Quartz64 do have PCI support and they claim to have it working, too. Maybe you will find something what you may need to have support for booting from NVME in your patchset for u-boot.
@inindev
I had to remove nvme from boot targets in this u-boot version as when I boot with SD card inserted, eMMC is not writable from the loaded OS, making it impossible to update the bootloader (and write any data at to it) I am getting async write errors. That does not happen when I boot from USB, but in this version you prioritised NVME (which is not ready yet) over USB, making the device unbootable.
So, I bricked the device for now and have no idea how to flash the bootloader as I have no cable to do so over USB.
Thanks for the report, hold the mask button down and it will bootstrap u-boot from the SD card.
I know what is happening, the fix is here: https://github.com/inindev/nanopi-r5/commit/c16bb18e63daee1c87bf897edbfcd69070f88c63
Building an RC6 now...
Yeah, I know that when I boot from SD card, then mmcblk0 is unwritable - that is, I cannot replace the bootloader on eMMC.
@inindev can you consider prioritising USB over NVME. IMO, it makes more sense to try removable media first (for emergency purposes).
Yeah, I know that when I boot from SD card, then mmcblk0 is unwritable - that is, I cannot replace the bootloader on eMMC.
When you boot, the external mmc is /dev/mmcblk0 and the internal emmc is /dev/mmcblk1, right?
@inindev can you consider prioritising USB over NVME. IMO, it makes more sense to try removable media first (for emergency purposes).
I see what you are telling me now, this is messing you up: https://github.com/inindev/nanopi-r5/blob/main/uboot/patches/0011-add-nvme-boot-target.patch
I agree, changing this...
It will take me an hour or so to patch and publish an rc6 addressing this. In the mean time, using the u-boot files from rc4 should address your issue: https://github.com/inindev/nanopi-r5/releases/tag/v12-rc4
Yeah, I know that when I boot from SD card, then mmcblk0 is unwritable - that is, I cannot replace the bootloader on eMMC.
When you boot, the external mmc is /dev/mmcblk0 and the internal emmc is /dev/mmcblk1, right?
Hm, it does not seem to be the case (with mask pressed, I mean).
@inindev can you consider prioritising USB over NVME. IMO, it makes more sense to try removable media first (for emergency purposes).
I see what you are telling me now, this is messing you up: https://github.com/inindev/nanopi-r5/blob/main/uboot/patches/0011-add-nvme-boot-target.patch
I agree, changing this...
Yeah, I have patched it, but have problems to flash a new version of u-boot into eMMC as it does not boot from USB and when booting from SD, eMMC is not writeable. I think I need to buy USB-A to USB-A cable to fix the device (will likely take a couple of days).
Do you have a serial monitor on your r5s? The image I produce has an expand filesystem one-time step which triggers a reboot when the mmc is first used. This can be confusing as if you dont know it is rebooting then it will reboot using the internal emmc. I describe a work-around on the nvme instructions:
Hold down the mask button while powering on. After 5 seconds the mask button can be released and the device will run initial setup then reboot (this will only happen one time). Note that without a serial terminal it will be difficult to know when the reboot has completed. Waiting two minutes then powering down and booting again with the mask button again should be sufficient to reach the second boot.
@inindev Aha, I see. That is, basically, boot the device with Mask button pressed and then reboot with Mask button pressed and reflash from SD card. Seems to do the trick!
I am not using your images right now, but my build of NixOS, which I intended to use for installation. I have patched up rc5 to exclude NVME, will try to flash it now.
@inindev Or, better yet, I would rather wait for rc6 then, and flash rc4 for the time being (patched with EFI support) and then start installation.
@inindev A bit unrelated topic: but can you also consider enabling UEFI support in your u-boot builds? That would make booting (some) official distro images much simpler.
Yes, I just need to get a chance to verify that it wont break anything else -- especially since I want to start supporting CentOS.
@inindev Sure thing. I am making the suggestion from my very limiting perspective and wearing my highly specialised tunnel vision glasses :)
@inindev Or, better yet, I would rather wait for rc6 then, and flash rc4 for the time being (patched with EFI support) and then start installation.
rc6 is published and no longer has nvme in the boot order
@inindev Aaargh, I cannot seem to make eMMC writeable the second time. Done.
@inindev Or, better yet, I would rather wait for rc6 then, and flash rc4 for the time being (patched with EFI support) and then start installation.
rc6 is published and no longer has nvme in the boot order
Thanks, will try to flash it, too.
@inindev Could you explain (in lame terms, at least) why eMMC was non-writeable? I think that it has happened because I was booting the device without the proper DTB specified, it seems to have worked fine once I specified it in the bootloader.
@inindev RC6 works fine. The device boots from both SD and USB just fine, just like before :+1: Thank you!
HELLO, Thank you for your port for Nanopi R5!
I encounter a problem with the management of the NVMe which does not seem to detect while it works perfectly with the FriendElec version of Debian Buster. Is there anything to do?
Thanks in advance
Friendlyelec debian 11
Debian 12 RC4