Booting RPI CM4 from Samsung NVMEs

Hi,
I'm seeing this problem where booting from Samsung EVO 970 / 980 NVMEs isn't possible with the latest version of u-boot master branch on the RPI CM4 IO-Board, at:
commit 6d3c46ed0e230d999c3f20f7fd4f3a88c03b14ca (origin/master, origin/WIP/05Mar2022, origin/HEAD) Merge: 0444cbbe77 cfcf1952c1 Author: Tom Rini Date: Sat Mar 5 20:46:55 2022 -0500
Unfortunately older revisions don't work with these NVMEs either.
This is what I'm seeing in the logs:
RPi: BOOTLOADER release VERSION:d8b208d3 DATE: 2022/02/22 TIME: 09:33:50 BOOTMODE: 0x00000006 part: 0 BUILD_TIMESTAMP=1645522430 0xf3f44c15 0f PM_RSTS: 0x00001000 part 00000000 reset_info 00000000 uSD voltage 3.3V Initialising SDRAM 'Samsung' 16Gb x2 total-size: 32 Gbit 3200
Boot mode: NVME (06) order f2541 VID 0x144d MN Samsung SSD 980 500GB NVME on MBR: 0x00002000, 81920 type: 0x0c MBR: 0x00016000, 655360 type: 0x83 MBR: 0x000b6000, 655360 type: 0x83 MBR: 0x00156000, 458752 type: 0x0f Trying partition: 0 type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' resin-boot ' rsc 32 fat-sectors 630 c-count 80628 c-size 1 root dir cluster 2 sectors 0 entries 0 FAT32 clusters 80628 Trying partition: 0 type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' resin-boot ' rsc 32 fat-sectors 630 c-count 80628 c-size 1 root dir cluster 2 sectors 0 entries 0 FAT32 clusters 80628 Read config.txt bytes 36328 hnd 0x00000000 Read start4cd.elf bytes 800028 hnd 0x00000000 Read fixup4cd.dat bytes 3145 hnd 0x00000000 Firmware: bd88f66f8952d34e4e0613a85c7a6d3da49e13e2 Jan 20 2022 13:57:04 0x00c03140 0x00000000 0x00000fff MEM GPU: 16 ARM: 998 TOTAL: 1014 Starting start4cd.elf @ 0xff000200 partition 0 +
U-Boot 2022.04-rc3 (Mar 06 2022 - 01:46:55 +0000)
DRAM: 3.9 GiB RPI Compute Module 4 (0xc03140) Core: 203 devices, 14 uclasses, devicetree: board MMC: mmcnr@7e300000: 1, mmc@7e340000: 0 Loading Environment from FAT... Card did not respond to voltage select! : -110 In: serial Out: serial Err: serial Net: eth0: ethernet@7d580000 pci_uclass_pre_probe, bus=0/pcie@7d500000, parent=scb decode_regions: len=7, cells_per_record=7 decode_regions: region 0, pci_addr=c0000000, addr=600000000, size=40000000, space_code=2 - type=0, pos=0 pci_get_dma_regions: len=7, cells_per_record=7 PCIe BRCM: link up, 5.0 Gbps x1 (SSC) pci_uclass_post_probe: probing bus 0 pci_bind_bus_devices: bus 0/pcie@7d500000: found device 0, function 0: find ret=-19 pci_find_and_bind_driver: Searching for driver: vendor=14e4, device=2711 pci_find_and_bind_driver: No match found: bound generic driver instead pci_auto_config_devices: start pci_auto_config_devices: device pci_0:0.0 dm_pci_hose_probe_bus pci_get_bus_max: ret=0 dm_pci_hose_probe_bus: bus = 1/pci_0:0.0 pci_uclass_pre_probe, bus=-1/pci_0:0.0, parent=pcie@7d500000 pci_uclass_post_probe: probing bus 1 pci_bind_bus_devices: bus 1/pci_0:0.0: found device 0, function 0: find ret=-19 pci_find_and_bind_driver: Searching for driver: vendor=144d, device=a809 nvme_bind pci_find_and_bind_driver: Match found: nvme pci_auto_config_devices: start pci_auto_config_devices: device nvme#0 pci_auto_config_devices: done pci_get_bus_max: ret=1 pci_auto_config_devices: done starting USB... Bus usb@7e980000: USB DWC2 scanning bus usb@7e980000 for devices... 2 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Hit any key to stop autoboot: 0
U-Boot> nvme scan nvme_probe 0x144d # Added log here U-Boot> nvme dev
no nvme devices available
U-Boot> pci list
Found PCI device 00.00.00: vendor ID = 0x14e4 device ID = 0x2711 command register ID = 0x0006 status register = 0x1010 revision ID = 0x20 class code = 0x06 (Bridge device) sub class code = 0x04 programming interface = 0x00 cache line = 0x08 latency time = 0x00 header type = 0x01 BIST = 0x00 base address 0 = 0x00000000 base address 1 = 0x00000000 primary bus number = 0x00 secondary bus number = 0x01 subordinate bus number = 0x01 secondary latency timer = 0x00 IO base = 0x00 IO limit = 0x00 secondary status = 0x0000 memory base = 0xc000 memory limit = 0xc000 prefetch memory base = 0xfff1 prefetch memory limit = 0x0001 prefetch memory base upper = 0x00000000 prefetch memory limit upper = 0x00000000 IO base upper 16 bits = 0x0000 IO limit upper 16 bits = 0x0000 expansion ROM base address = 0x00000000 interrupt line = 0x00 interrupt pin = 0x01 bridge control = 0x0000
Found PCI device 01.00.00: vendor ID = 0x144d device ID = 0xa809 command register ID = 0x0006 status register = 0x1010 revision ID = 0x00 class code = 0x01 (Mass storage controller) sub class code = 0x08 programming interface = 0x02 cache line = 0x08 latency time = 0x00 header type = 0x00 BIST = 0x00 base address 0 = 0xc0000004 base address 1 = 0x00000000 base address 2 = 0x00000000 base address 3 = 0x00000000 base address 4 = 0x00000000 base address 5 = 0x00000000 cardBus CIS pointer = 0x00000000 sub system vendor ID = 0x144d sub system ID = 0xa801 expansion ROM base address = 0x00000000 interrupt line = 0xff interrupt pin = 0x01 min Grant = 0x00 max Latency = 0x00
Nvme scan takes about 6-7 seconds to complete and returns 1, without any error logs. Any idea what could be causing this problem? Are there some logs that I could add to help in debugging this?
Thank you
participants (1)
-
Alexandru-Dorian Costache