Zitat von Miguel Landaeta <mig...@miguel.cc>:
Synopsis: Samsung NVMe M.2 SSD 970 EVO Plus fails to attach on
VisionFive 2 (JH7110 SoC) board
Category: riscv64
Environment:
System : OpenBSD 7.3
Details : OpenBSD 7.3-current (GENERIC.MP) #377: Fri Jul 14
04:39:21 MDT 2023
dera...@riscv64.openbsd.org:/usr/src/sys/arch/riscv64/compile/GENERIC.MP
Architecture: OpenBSD.riscv64
Machine : riscv64
Description:
Samsung NVMe M.2 SSD 970 EVO Plus fails to attach on VisionFive 2
(JH7110 SoC) board
I just got a Samsung NVMe M.2 SSD 970 EVO Plus to test the recently added
support for PCIE devices to JH7110 SoC but it has not been working correctly
with this disk.
The behavior I'm observing is a little erratic, the NVMe disk only attached
correctly like in 1 of 10 or more boot attempts.
Only a couple of times worked OK, but most of the times one of the following
is observed:
- No nvme0 device detected during autoconf phase, nothing related to the
device shows up in dmesg and no sd0 device is attached. When this
happens the board boots OK and SD/MMC devices are detected and attached.
- nvme0 device is detected during autoconf, sd0 device attaches but boot
hangs. Looks like kernel never reaches diskconf() or if it reached it
something is preventing the kernel from print the typical message:
root on sd0a (062aeb9d33543517.a) swap on sd0b dump on sd0b
- nvme0 device appears in dmesg but the device fails to attach with the
following message:
nvme0 at pci3 dev 0 function 0 "Samsung SM981/PM981 NVMe" rev 0x00:
unable to map registers
- To workaround this I'm just booting the kernel with -c option to disable
nvme driver in UKC and proceed with the boot.
I tried to debug more by building a kernel with DEBUG option set to
gather more
info but unfortunately if I boot such a kernel my board gets stuck very early
in the boot process just after printing how much real memory is available.
I'm more than happy to provide more info if required or to try patches if
that helps to troubleshoot the issue.
Thanks.
Miguel.
Someone assumes it has to do with a delay:
At a guess the very large and very fast (very higher power) NVMe
devices draw so much current that they are glitching the power and
clocks of the VF2, and it needs an extra delay beyond what the
specification suggests from them to both stabilise to before the NVMe
can be accessed.
http://forum.rvspace.org/t/unlocking-new-possibilities-starfive-visionfive-2-sbc-now-supports-tianocore-edk-ii-uefi/2779/44?u=rpx
Is this the place to look for in OpenBSD ?
https://github.com/openbsd/src/blob/master/sys/dev/ic/nvme.c
Maybe anybody knows how to change this delay ?
Thank you.