geerlingguy / sbc-reviews

Jeff Geerling's SBC review data - Raspberry Pi, Radxa, Orange Pi, etc.
MIT License
350 stars 9 forks source link

Milk-V Mars CM #22

Open geerlingguy opened 8 months ago

geerlingguy commented 8 months ago

DSC04058

Basic information

Linux/system information

# output of `neofetch`
       _,met$$$$$gg.          root@starfive 
    ,g$$$$$$$$$$$$$$$P.       ------------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux bookworm/sid riscv64 
 ,$$P'              `$$$.     Host: Milk-V Mars CM eMMC 
',$$P       ,ggs.     `$$b:   Kernel: 5.15.0 
`d$$'     ,$P"'   .    $$$    Uptime: 30 mins 
 $$P      d$'     ,    $$P    Packages: 1324 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.2.2 
 $$;      Y$b._   _,d$P'      Terminal: /dev/pts/0 
 Y$$.    `.`"Y$$$$P"'         CPU: (4) @ 1.500GHz 
 `$$b      "-.__              Memory: 426MiB / 3874MiB 
root@starfive:~# 
   `Y$$.
     `$$b.
       `Y$$b.
          `"Y$b._
              `"""

# output of `uname -a`
Linux starfive 5.15.0 #9 SMP Sun Oct 8 17:14:43 CST 2023 riscv64 GNU/Linux

Benchmark results

CPU

Power

Disk

Built-in 16 GB eMMC Module

Benchmark Result
fio 1M sequential read 45.3 MB/s
iozone 1M random read 37.70 MB/s
iozone 1M random write 26.12 MB/s
iozone 4K random read 14.39 MB/s
iozone 4K random write 14.30 MB/s

2TB Kioxia XG8 NVMe SSD (via PCIe Gen 2 x1 interface)

Benchmark Result
fio 1M sequential read 151.00 MB/s
iozone 1M random read 242.58 MB/s
iozone 1M random write 248.08 MB/s
iozone 4K random read 38.09 MB/s
iozone 4K random write 88.16 MB/s

curl https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh | sudo bash

Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading. Download the script with curl -o disk-benchmark.sh [URL_HERE] and run sudo DEVICE_UNDER_TEST=/dev/sda DEVICE_MOUNT_PATH=/mnt/sda1 ./disk-benchmark.sh (assuming the device is sda).

Also consider running PiBenchmarks.com script.

Network

iperf3 results:

1 Gbps Ethernet (built-in)

WiFi (built-in)

GPU

Memory

tinymembench results:

Click to expand memory benchmark result ``` tinymembench v0.4.10 (simple benchmark for memory throughput and latency) ========================================================================== == Memory bandwidth tests == == == == Note 1: 1MB = 1000000 bytes == == Note 2: Results for 'copy' tests show how many bytes can be == == copied per second (adding together read and writen == == bytes would have provided twice higher numbers) == == Note 3: 2-pass copy means that we are using a small temporary buffer == == to first fetch data into it, and only then write it to the == == destination (source -> L1 cache, L1 cache -> destination) == == Note 4: If sample standard deviation exceeds 0.1%, it is shown in == == brackets == ========================================================================== C copy backwards : 993.0 MB/s (0.7%) C copy backwards (32 byte blocks) : 991.7 MB/s C copy backwards (64 byte blocks) : 991.7 MB/s C copy : 1002.3 MB/s C copy prefetched (32 bytes step) : 1001.8 MB/s (0.4%) C copy prefetched (64 bytes step) : 1003.6 MB/s (0.4%) C 2-pass copy : 829.9 MB/s C 2-pass copy prefetched (32 bytes step) : 833.9 MB/s C 2-pass copy prefetched (64 bytes step) : 832.6 MB/s (0.1%) C fill : 868.7 MB/s (0.2%) C fill (shuffle within 16 byte blocks) : 864.9 MB/s C fill (shuffle within 32 byte blocks) : 868.8 MB/s (0.3%) C fill (shuffle within 64 byte blocks) : 876.2 MB/s (0.4%) --- standard memcpy : 1004.5 MB/s standard memset : 884.3 MB/s (0.6%) ========================================================================== == Memory latency test == == == == Average time is measured for random memory accesses in the buffers == == of different sizes. The larger is the buffer, the more significant == == are relative contributions of TLB, L1/L2 cache misses and SDRAM == == accesses. For extremely large buffer sizes we are expecting to see == == page table walk with several requests to SDRAM for almost every == == memory access (though 64MiB is not nearly large enough to experience == == this effect to its fullest). == == == == Note 1: All the numbers are representing extra time, which needs to == == be added to L1 cache latency. The cycle timings for L1 cache == == latency can be usually found in the processor documentation. == == Note 2: Dual random read means that we are simultaneously performing == == two independent memory accesses at a time. In the case if == == the memory subsystem can't handle multiple outstanding == == requests, dual random read has the same timings as two == == single reads performed one after another. == ========================================================================== block size : single random read / dual random read 1024 : 0.0 ns / 0.0 ns 2048 : 0.0 ns / 0.0 ns 4096 : 0.0 ns / 0.0 ns 8192 : 0.0 ns / 0.0 ns 16384 : 0.0 ns / 0.0 ns 32768 : 0.0 ns / 0.0 ns 65536 : 5.4 ns / 10.5 ns 131072 : 8.1 ns / 15.8 ns 262144 : 9.5 ns / 18.6 ns 524288 : 15.4 ns / 28.6 ns 1048576 : 16.0 ns / 30.6 ns 2097152 : 21.9 ns / 38.5 ns 4194304 : 84.8 ns / 166.5 ns 8388608 : 122.4 ns / 242.6 ns 16777216 : 143.7 ns / 285.6 ns 33554432 : 157.2 ns / 313.1 ns 67108864 : 167.7 ns / 334.6 ns ```

Phoronix Test Suite

Results from pi-general-benchmark.sh:

sbc-bench results

Device / details Clockspeed Kernel Distro 7-zip multi 7-zip single AES memcpy memset kH/s
Milk-V Mars CM (JH7110) 1500 MHz 5.15 Bookworm riscv64 4110 1195 25070 930 830 -
geerlingguy commented 8 months ago

Just plopped this board on my Compute Module 4 IO Board, and it seems to do some sort of boot process, arriving at a flashing green LED (two flashes, then 1 second break, repeating).

The network LEDs light up too, but I don't see a new device on the network. No HDMI output, and I'm not 100% sure if the GPIO pinout is the same as Pi CM4, so I don't want to plug in UART yet...

I tried accessing the 'Get Started' docs page listed on the side of the box (http://milkv.io/docs/mars-cm), but that page is currently giving a 404 Page Not Found.

I've opened up an issue on the MilkV Community Forum: Mars CM - Getting Started guide missing?.

It would be great if this JH7110-based board could run as a drop-in replacement of the Compute Module 4... we'll see!

geerlingguy commented 8 months ago

Attaching to UART using the same pins as Mars (see Serial Console docs), I was able to monitor boot output...

U-Boot SPL 2021.10 (Oct 08 2023 - 17:13:43 +0800)
LPDDR4: 4G version: g8ad50857.
Trying to boot from SPI

OpenSBI v1.2
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|___./_____|
        | |
        |_|

Platform Name             : StarFive VisionFive V2
Platform Features         : medeleg
Platform HART Count       : 5
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 4000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : ---
Platform PMU Device       : ---
Platform Reboot Device    : pm-reset
Platform Shutdown Device  : pm-reset
Platform Suspend Device   : ---
Firmware Base             : 0x40000000
Firmware Size             : 392 KB
Firmware RW Offset        : 0x40000
Runtime SBI Version       : 1.0

Domain0 Name              : root
Domain0 Boot HART         : 1
Domain0 HARTs             : 0*,1*,2*,3*,4*
Domain0 Region00          : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
Domain0 Region01          : 0x0000000040000000-0x000000004003ffff M: (R,X) S/U: ()
Domain0 Region02          : 0x0000000040040000-0x000000004007ffff M: (R,W) S/U: ()
Domain0 Region03          : 0x0000000000000000-0xffffffffffffffff M: (R,W,X) S/U: (R,W,X)
Domain0 Next Address      : 0x0000000040200000
Domain0 Next Arg1         : 0x0000000042200000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes
Domain0 SysSuspend        : yes

Boot HART ID              : 1
Boot HART Domain          : root
Boot HART Priv Version    : v1.11
Boot HART Base ISA        : rv64imafdcbx
Boot HART ISA Extensions  : none
Boot HART PMP Count       : 8
Boot HART PMP Granularity : 4096
Boot HART PMP Address Bits: 34
Boot HART MHPM Count      : 2
Boot HART MIDELEG         : 0x0000000000000222
Boot HART MEDELEG         : 0x000000000000b109

U-Boot 2021.10 (Oct 08 2023 - 17:13:43 +0800)

CPU:   rv64imacu_zba_zbb
Model: StarFive VisionFive V2
DRAM:  4 GiB
cdns3_bind: unsupported dr_mode
MMC:   sdio0@16010000: 0, sdio1@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

StarFive EEPROM format v2
...

It looks like it does automatically boot into Debian, and it says an eth0 link is up... (this is with no microSD card attached). Trying to find it on my network now.

geerlingguy commented 8 months ago

I can't figure out the login/password. I tried user/starfive, user/user, and riscv/starfive so far, to no avail.

Aha! It's root/milkv

geerlingguy commented 8 months ago

SSH password authentication was disabled, so to enable it (without messing with vi/nano over UART), I ran the oneliners:

sed -i '/PasswordAuthentication yes/s/^#//g' /etc/ssh/sshd_config
sed -i '/PermitRootLogin prohibit-password/s/^#//g' /etc/ssh/sshd_config
sed -i '/PermitRootLogin prohibit-password/s/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

And restarted SSH with:

systemctl restart sshd

Now I can login via SSH!

geerlingguy commented 8 months ago

I'm in, but apt is incredibly slow (like in the single-digit-kilobytes per second range). Not sure why. Waiting for an install to complete so I can fetch some more info about the system. An apt upgrade might take all night at this range!

geerlingguy commented 8 months ago

The disk partition was not expanded initially, so I realized when I ran out of disk space (only about 4 GB is allocated by default), I had to run through the process documented on StarFive's website for extending the partition on the eMMC storage.

Once I did that, I wound up with about 11 GB of usable disk space.

Geekbench 6 preview downloaded about about 15 MB/sec, so not sure what was up with Apt...

Judging by VisionFive's warning not to upgrade, maybe I shouldn't try an apt upgrade on here yet?

geerlingguy commented 8 months ago

I'm unable to install Ansible via pip on the board because pip can't be upgraded to the latest version (easily at least), and thus cryptography libraries aren't getting installed.

So I'll run my Top500 benchmark through Ansible on my Mac, over SSH instead.

christiancelona commented 8 months ago

https://community.milkv.io/t/mars-cm-getting-started-guide-missing/845/5?u=christian

christiancelona commented 8 months ago

From the image provided by MilkV, following the instructions previously reported: https://github.com/milkv-mars/mars-buildroot-sdk/releases/tag/20230723

sudo apt install python3-pip

Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: build-essential bzip2 dpkg dpkg-dev fakeroot javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libbz2-1.0 libdpkg-perl libexpat1 libexpat1-dev libfakeroot libfile-fcntllock-perl libjs-jquery libjs-sphinxdoc libjs-underscore liblzma5 libperl5.36 libpython3-dev libpython3.11-dev patch perl perl-base perl-modules-5.36 python3-dev python3-distutils python3-lib2to3 python3-pkg-resources python3-setuptools python3-wheel python3.11-dev xz-utils zlib1g zlib1g-dev Suggested packages: bzip2-doc debsig-verify debian-keyring apache2 | lighttpd | httpd git bzr ed diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl libtap-harness-archive-perl python-setuptools-doc The following NEW packages will be installed: build-essential bzip2 dpkg-dev fakeroot javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.11-dev patch python3-dev python3-distutils python3-lib2to3 python3-pip python3-setuptools python3-wheel python3.11-dev xz-utils zlib1g-dev The following packages will be upgraded: dpkg libbz2-1.0 libexpat1 liblzma5 libperl5.36 perl perl-base perl-modules-5.36 python3-pkg-resources zlib1g 10 upgraded, 27 newly installed, 0 to remove and 825 not upgraded. Need to get 30.1 MB of archives. After this operation, 146 MB of additional disk space will be used. Do you want to continue? [Y/n]

sudo apt install ansible

Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: ansible-core ieee-data libselinux1 libyaml-0-2 python-babel-localedata python3-anyio python3-argcomplete python3-babel python3-cffi-backend python3-click python3-colorama python3-cryptography python3-dnspython python3-h11 python3-h2 python3-hpack python3-httpcore python3-httplib2 python3-httpx python3-hyperframe python3-jinja2 python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-markdown-it python3-markupsafe python3-mdurl python3-netaddr python3-ntlm-auth python3-packaging python3-passlib python3-pygments python3-pyparsing python3-requests-ntlm python3-requests-toolbelt python3-resolvelib python3-rfc3986 python3-rich python3-selinux python3-simplejson python3-sniffio python3-tz python3-winrm python3-xmltodict python3-yaml Suggested packages: cowsay sshpass python-cryptography-doc python3-cryptography-vectors python3-trio python3-aioquic python-jinja2-doc python-lockfile-doc ipython3 python-netaddr-docs python-pygments-doc ttf-bitstream-vera python-pyparsing-doc The following NEW packages will be installed: ansible ansible-core ieee-data libyaml-0-2 python-babel-localedata python3-anyio python3-argcomplete python3-babel python3-cffi-backend python3-click python3-colorama python3-cryptography python3-dnspython python3-h11 python3-h2 python3-hpack python3-httpcore python3-httplib2 python3-httpx python3-hyperframe python3-jinja2 python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-markdown-it python3-markupsafe python3-mdurl python3-netaddr python3-ntlm-auth python3-packaging python3-passlib python3-pygments python3-pyparsing python3-requests-ntlm python3-requests-toolbelt python3-resolvelib python3-rfc3986 python3-rich python3-selinux python3-simplejson python3-sniffio python3-tz python3-winrm python3-xmltodict python3-yaml The following packages will be upgraded: libselinux1 1 upgraded, 46 newly installed, 0 to remove and 824 not upgraded. Need to get 30.3 MB of archives. After this operation, 343 MB of additional disk space will be used. Do you want to continue? [Y/n]

christiancelona commented 8 months ago

I'm unable to install Ansible via pip on the board because pip can't be upgraded to the latest version (easily at least), and thus cryptography libraries aren't getting installed.

We use different images https://github.com/milkv-mars/mars-buildroot-sdk/releases/tag/20230723

ansible --version ansible [core 2.14.11] config file = None configured module search path = ['/home/christian/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /home/christian/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.11.6 (main, Oct 8 2023, 05:06:43) [GCC 13.2.0] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True

geerlingguy commented 8 months ago

To monitor the SoC temps, I installed lm-sensors and monitored with watch:

# apt install -y lm-sensors
# watch sensors
Every 2.0s: sensors                                                              starfive: Sat Oct 28 03:22:46 2023

120e0000.tmon-isa-0000
Adapter: ISA adapter
temp1:        +52.6 C

(That was with a heatsink only. SoC throttle limit seems to be 85°C.)

geerlingguy commented 8 months ago

It's funny, about 10 minutes after I boot the thing, I get a system message that it will suspend. Not sure why... and it doesn't actually suspend:

Broadcast message from user@starfive (Sat 2023-10-28 03:38:48 UTC):

The system will suspend now!

Looks like maybe it's a Gnome thing: https://forums.debian.net/viewtopic.php?t=156005 and https://discussion.fedoraproject.org/t/gnome-suspends-after-15-minutes-of-user-inactivity-even-on-ac-power/79801

geerlingguy commented 8 months ago

I tried using nmtui to configure a wifi connection (there were already details for a test connection in there), but after that it just output errors about trying to connect, like:

[ 6178.841606] [dhd] [wlan0] dhd_pri_stop : tx queue stopped
[ 6178.847110] [dhd] [wlan0] dhd_stop : Enter
[ 6178.851239] [dhd] dhd_stop: ######### called for ifidx=0 #########
[ 6178.877674] [dhd] dhd_stop: making dhdpub up FALSE
[ 6178.882480] [dhd] dhd_tcpack_suppress_set 377: already set to 0
[ 6178.888442] [dhd] [wlan0] dhd_stop : Exit
[ 6178.893123] [dhd] [wlan0] dhd_set_mac_address : macaddr = ae:34:61:e0:da:c8
[ 6178.900123] [dhd] CFG80211-ERROR) wl_cfg80211_macaddr_sync_reqd : no macthing if type
[ 6178.908044] [dhd] dhd_set_mac_addr_handler: interface info not available/down 
[ 6179.014288] [dhd] [wlan0] dhd_open : Enter
[ 6179.018445] [dhd] dhd_open: ######### called for ifidx=0 #########
[ 6179.047426] [dhd] CFG80211-ERROR) wl_cfg80211_generate_mac_addr : wl_cfg80211_generate_mac_addr:generated new MAC=36:85:ba:e6:7b:50 
[ 6179.065959] [dhd] CFG80211-ERROR) __wl_update_wiphybands : error reading txbf_bfe_cap (-23)
[ 6179.075253] [dhd] CFG80211-ERROR) __wl_update_wiphybands : error reading txbf_bfr_cap (-23)
[ 6179.101182] [dhd] CFG80211-ERROR) init_roam_cache : roamscan_mode iovar failed. -23
[ 6179.108860] [dhd] CFG80211-ERROR) wl_cfg80211_up : Failed to enable RCC.
[ 6179.116226] [dhd] [wlan0] dhd_open : Exit ret=0
[ 6179.120789] [dhd] [wlan0] dhd_pri_open : tx queue started
[ 6179.127869] [dhd] [wlan0] _dhd_set_mac_address : MACID ae:34:61:e0:da:c8 is overwritten
[ 6179.237736] [dhd] [wlan0] wl_run_escan : LEGACY_SCAN sync ID: 184, bssidx: 0
[ 6181.683969] [dhd] CFG80211-ERROR) wl_set_auth_type : set auth failed (-2)
[ 6181.690788] [dhd] CFG80211-ERROR) wl_config_assoc_security : Invalid auth type
[ 6181.698024] [dhd] CFG80211-ERROR) wl_cfg80211_connect : config assoc security failed
[ 6181.705772] [dhd] CFG80211-ERROR) wl_cfg80211_connect : connect error (-2)
eshattow commented 8 months ago

With regard to gnome not functioning after apt upgrade of the vendor provided OS via Debian unstable package repo, gnome-shell (and gdm3...) count among the packages that are failing to build at the moment on the Debian unstable repo (task-gnome-desktop is uninstallable). For a while now package building machines as part of Debian infrastructure ran into a Linux kernel regression causing builds to randomly fail with riscv64 on real hardware. This regression was identified and reverted in stable kernel series 6.5.8 which was only just recently packaged for Debian unstable and may/may not yet be rolled out to actually be running on the build machines. You can verify this with a Debian QuIck Baker image in a virtual machine for example https://people.debian.org/~gio/dqib/ to get a baseline riscv64 Debian unstable system, and then following along of https://buildd.debian.org/status/architecture.php?a=riscv64&suite=sid for an overview of what packages are stuck in the re-build churn.

geerlingguy commented 8 months ago

A number of the Phoronix Test Suite tests failed, for example, trying to do the mp3 encode test:

UNAME_MACHINE = riscv64
UNAME_RELEASE = 5.15.0
UNAME_SYSTEM  = Linux
UNAME_VERSION = #9 SMP Sun Oct 8 17:14:43 CST 2023
configure: error: cannot guess build type; you must specify one
make: *** No targets specified and no makefile found.  Stop.
make: *** No rule to make target 'install'.  Stop.

And then for things like the linux kernel build, it ran out of space. For now I'll leave those tests out, 16 GB isn't that much space to play with :)

geerlingguy commented 8 months ago

I still can't get WiFi to connect.

# ip link
...
4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT mode DORMANT group default qlen 1000
    link/ether ee:49:09:26:18:b5 brd ff:ff:ff:ff:ff:ff permaddr b8:2d:28:25:5d:0e

nmtui upon activating a WiFi link just sits Connecting... while error messages like those earlier are printed in dmesg.

That was with my 5 GHz network. Trying two different 2.4 GHz networks (one is on an older router that works better with ancient or weird WiFi hardware), I could get nothing from either of those too (same errors).

So maybe the WiFi driver's a bit flaky in the OS image I have installed?

geerlingguy commented 8 months ago

Checking on the JH7110 Linux kernel Upstreaming Status, it looks like most interfaces are upstream now, with the rest on their way. Quite nice! And happening more quickly than many of the Arm SoCs these days...

geerlingguy commented 8 months ago

Testing PCIe:

root@starfive:~# sudo lspci -vvvv
00:00.0 PCI bridge: PLDA XpressRich-AXI Ref Design (rev 02) (prog-if 00 [Normal decode])
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 32 bytes
    Interrupt: pin A routed to IRQ 0
    Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
    Memory behind bridge: 30000000-300fffff [size=1M] [32-bit]
    Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
    BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
        PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
    Capabilities: [80] Express (v2) Root Port (Slot+), MSI 00
        DevCap: MaxPayload 128 bytes, PhantFunc 0
            ExtTag+ RBE+
        DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
            RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
            MaxPayload 128 bytes, MaxReadReq 512 bytes
        DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
        LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
            ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
        LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta: Speed 5GT/s, Width x1
            TrErr- Train- SlotClk- DLActive- BWMgmt+ ABWMgmt-
        SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
            Slot #0, PowerLimit 0W; Interlock- NoCompl-
        SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
            Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
        SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
            Changed: MRL- PresDet- LinkState-
        RootCap: CRSVisible-
        RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
        RootSta: PME ReqID 0000, PMEStatus- PMEPending-
        DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
             10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix-
             EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
             FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
             AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
        DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled, ARIFwd-
             AtomicOpsCtl: ReqEn- EgressBlck-
        LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
        LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
             Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
             Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
        LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
             EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
             Retimer- 2Retimers- CrosslinkRes: unsupported
    Capabilities: [e0] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Address: 0000000000000000  Data: 0000
        Masking: 00000000  Pending: 00000000
    Capabilities: [f8] Power Management version 3
        Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
        Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [100 v1] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
    Capabilities: [200 v2] Advanced Error Reporting
        UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
        CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
        CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
        AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap+ ECRCChkEn-
            MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
        HeaderLog: 00000000 00000000 00000000 00000000
        RootCmd: CERptEn- NFERptEn- FERptEn-
        RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
             FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
        ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
lspci: Unable to load libkmod resources: error -2

01:00.0 Non-Volatile memory controller: KIOXIA Corporation Device 0010 (rev 01) (prog-if 02 [NVM Express])
    Subsystem: KIOXIA Corporation Device 0001
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0
    Interrupt: pin A routed to IRQ 53
    Region 0: Memory at 30000000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [80] Power Management version 3
        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
        Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [90] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Address: 0000000000000000  Data: 0000
        Masking: 00000000  Pending: 00000000
    Capabilities: [b0] MSI-X: Enable+ Count=65 Masked-
        Vector table: BAR=0 offset=00002000
        PBA: BAR=0 offset=00003000
    Capabilities: [c0] Express (v2) Endpoint, MSI 00
        DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
            ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W
        DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
            RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop- FLReset-
            MaxPayload 128 bytes, MaxReadReq 512 bytes
        DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
        LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM L1, Exit Latency L1 <32us
            ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
        LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta: Speed 5GT/s (downgraded), Width x1 (downgraded)
            TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
        DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
             10BitTagComp+ 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix-
             EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
             FRS- TPHComp- ExtTPHComp-
             AtomicOpsCap: 32bit- 64bit- 128bitCAS-
        DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
             AtomicOpsCtl: ReqEn-
        LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
        LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
             Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
             Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
        LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
             EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
             Retimer- 2Retimers- CrosslinkRes: unsupported
    Capabilities: [100 v2] Advanced Error Reporting
        UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
        UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
        CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
        CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
        AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
            MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
        HeaderLog: 00000000 00000000 00000000 00000000
    Capabilities: [150 v1] Virtual Channel
        Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
        Arb:    Fixed- WRR32- WRR64- WRR128-
        Ctrl:   ArbSelect=Fixed
        Status: InProgress-
        VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
            Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
            Status: NegoPending- InProgress-
    Capabilities: [260 v1] Latency Tolerance Reporting
        Max snoop latency: 0ns
        Max no snoop latency: 0ns
    Capabilities: [300 v1] Secondary PCI Express
        LnkCtl3: LnkEquIntrruptEn- PerformEqu-
        LaneErrStat: 0
    Capabilities: [360 v1] Data Link Feature <?>
    Capabilities: [380 v1] Physical Layer 16.0 GT/s <?>
    Capabilities: [400 v1] L1 PM Substates
        L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1- L1_PM_Substates+
              PortCommonModeRestoreTime=60us PortTPowerOnTime=150us
        L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
               T_CommonMode=0us LTR1.2_Threshold=0ns
        L1SubCtl2: T_PwrOn=10us
    Capabilities: [470 v1] Lane Margining at the Receiver <?>
    Kernel driver in use: nvme
root@starfive:~# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
...
nvme0n1      259:0    0  1.9T  0 disk 
|-nvme0n1p1  259:1    0  256M  0 part 
`-nvme0n1p2  259:2    0  1.9T  0 part 
geerlingguy commented 8 months ago

I formatted the 2TB NVMe SSD, then ran my disk benchmarks, and got 150 MB/sec for fio, and 250 MB/sec for 1M sequential read/write via iozone. Not amazing, but a lot better than built-in eMMC!

See full benchmark results in OP.

christiancelona commented 8 months ago

From the Linux kernel 6.6 changelog released today there are several commits regarding RISC-V and many more on StarFive’s JH7110 SoC:

geerlingguy commented 8 months ago

@christiancelona - Do you know why the buildroot image for these devices is still on kernel 5.15.x?

christiancelona commented 8 months ago

I would have preferred not to write it to you :) https://lupyuen.github.io/articles/display3

With Ubuntu 23.10 the onboard GPU is not supported, USB are not supported by the 6.2 kernel and the OS do not work with the 6.5 kernel.

I believe that there is little point in engaging in benchmarks of this SoC, except in the case in which you want to measure the benefits brought by good software support, which has so far been absent.

I'm waiting for the new integrated SMB in kernel that might make my SBC more suitable for my purposes. Up until now I have always used Raspberry Pi but the latest one is absolutely not in my purchase plans and not because of the cost. For those who wanted to use the Milk-V Mars SBC as a low-power desktop, the biggest obstacle to using the new kernels was certainly the display controller driver for Verisilicon DC8200 (for me the Chinese ideograms are a big obstacle) and an HMDI driver, now patched, check again the documentation at the line HDMI/ DC8200.

I am waiting for the new images from Armbian (Armbian 23.11 Topi release, announced today) on November 1st or 2nd a Debian Topi should be ready to try, or in future DietPi too.

But perhaps you have clearer ideas about the propagation time of new kernels in Linux distributions. Tonight I want to try an intermediate solution, Debian Backports provides new packages with new features on supported Debian stable releases, switching /etc/apt/sources.list to deb http://deb.debian.org/debian bookworm-backports main.

christiancelona commented 8 months ago

Update: Skipping acquire of configured file 'main/binary-riscv64/Packages' as repository 'http://deb.debian.org/debian bookworm-backports InRelease' doesn't support architecture 'riscv64'

It's better not to follow my experiments, I updated everything and still lost the graphic environment. I'm starting from scratch.

christiancelona commented 8 months ago

Milk-V Mars, sbc-bench v0.9.49 result: http://ix.io/4KoX StarFive JH7110 | 1500 MHz | 5.15 | Armbian 23.11.0-trunk.243 lunar riscv64/riscv | 4000 | 1174 | 24900 | 870 | 790 | - |

geerlingguy commented 8 months ago

@christiancelona - Interesting, it looks like every score besides the memcpy/memset scores was slower in your run (compared to the one I ran on the StarFive kernel).

christiancelona commented 8 months ago

I wondered if it could depend on the software and I redid the tests with a Raspberry Pi 4B and Armbian (non the same, lunar vs jammy).

RPi 4 Model B Rev 1.4, sbc-bench v0.9.49 result: http://ix.io/4Kpg BCM2711 Rev B0 | 1800 MHz | 6.1 | Armbian 23.11.0-trunk.243 jammy arm64 | 5580 | 1704 | 36240 | 2400 | 2940 | - |

Remember that we are comparing two slightly different hardware too. I couldn't boot from SD with the same image as you, my testing time is over today.

ThomasKaiser commented 8 months ago

@christiancelona with 6.5 it doesn't look better (memory latency and CPU clockspeeds the same but scores for whatever reason slightly lower):

Kernel Clockspeed Distro 7-zip multi 7-zip single AES memcpy memset
5.15 1500 MHz Lunar riscv64 4000 1174 24900 870 790
6.5 1500 MHz Lunar riscv64 3910 1114 24100 870 840
christiancelona commented 8 months ago

Thank you. I installed the StarFive image, they are different for SD or whatever. Indeed, the difference in performance is also noticeable in use, not only from the benchmarks, the system is more responsive.

I have no idea what changes between kernels, other than the version, at the moment the image provided by the SoC manufacturer is the best, despite being older. Furthermore, the SoC temperature is now lower.

rhinot commented 8 months ago

Hey Folks - How can I help contribute here? I have a Milk-V Mars. What do you recommend as an image at this point?

geerlingguy commented 8 months ago

@rhinot - See the 3rd comment above; you'll need to get console access using UART if you want to set things up headless. You might also be able to flash a newer image to microSD if you bought a 'lite' version without eMMC baked in.

I'll be posting more about the Mars CM tomorrow too, on my blog and on YouTube. I haven't personally tested Mars (sans CM) though.

tumetuoppi commented 8 months ago

I was able to get an image over HDMI with the eMMC version without using UART. First boot there was no image, unplugged power and plugged the power back on -> Linux loading texts showed up on the monitor and eventually it booted in to Gnome. Subsequent boots the HDMI has been working fine.

geerlingguy commented 8 months ago

@tumetuoppi - That's good—I wonder if it could be that my older HP monitor is just not recognized for some reason? I have booted and rebooted at least 20-30x now, both reboots and unplug/replugs (sometimes waiting a while between boots).

I also don't know the process for re-flashing the eMMC, so I wonder if maybe the slightly newer OS image for the Mars available for download from the Debian page could help?

taspenwall commented 8 months ago

Has anyone been able to get the buildroot image working? it just hangs while booting for me.

carbonfix commented 8 months ago

@geerlingguy The process for re-flashing the eMMC image has been updated to the document:

https://milkv.io/docs/mars/compute-module/boot

rhinot commented 8 months ago

In case it helps... Milk-V Mars, sbc-bench v0.9.50 result: http://ix.io/4KNT StarFive JH7110 | 1500 MHz | 6.1.59 | Debian GNU/Linux trixie/sid riscv64 | 4090 | 1191 | 24600 | 865 | 828 | - |

Similar to @ThomasKaiser & @christiancelona's Armbian Lunar numbers on 5.15 & 6.5, although slightly higher. Big differences: 8GB version, counterfeit SD, VNC service running, DietPi stock build from Nov 3

platima commented 8 months ago

Attaching to UART using the same pins as Mars (see Serial Console docs), I was able to monitor boot output...

U-Boot SPL 2021.10 (Oct 08 2023 - 17:13:43 +0800)
LPDDR4: 4G version: g8ad50857.
Trying to boot from SPI

OpenSBI v1.2
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|___./_____|
        | |
        |_|

Platform Name             : StarFive VisionFive V2
Platform Features         : medeleg
Platform HART Count       : 5
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 4000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : ---
Platform PMU Device       : ---
Platform Reboot Device    : pm-reset
Platform Shutdown Device  : pm-reset
Platform Suspend Device   : ---
Firmware Base             : 0x40000000
Firmware Size             : 392 KB
Firmware RW Offset        : 0x40000
Runtime SBI Version       : 1.0

Domain0 Name              : root
Domain0 Boot HART         : 1
Domain0 HARTs             : 0*,1*,2*,3*,4*
Domain0 Region00          : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
Domain0 Region01          : 0x0000000040000000-0x000000004003ffff M: (R,X) S/U: ()
Domain0 Region02          : 0x0000000040040000-0x000000004007ffff M: (R,W) S/U: ()
Domain0 Region03          : 0x0000000000000000-0xffffffffffffffff M: (R,W,X) S/U: (R,W,X)
Domain0 Next Address      : 0x0000000040200000
Domain0 Next Arg1         : 0x0000000042200000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes
Domain0 SysSuspend        : yes

Boot HART ID              : 1
Boot HART Domain          : root
Boot HART Priv Version    : v1.11
Boot HART Base ISA        : rv64imafdcbx
Boot HART ISA Extensions  : none
Boot HART PMP Count       : 8
Boot HART PMP Granularity : 4096
Boot HART PMP Address Bits: 34
Boot HART MHPM Count      : 2
Boot HART MIDELEG         : 0x0000000000000222
Boot HART MEDELEG         : 0x000000000000b109

U-Boot 2021.10 (Oct 08 2023 - 17:13:43 +0800)

CPU:   rv64imacu_zba_zbb
Model: StarFive VisionFive V2
DRAM:  4 GiB
cdns3_bind: unsupported dr_mode
MMC:   sdio0@16010000: 0, sdio1@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

StarFive EEPROM format v2
...

It looks like it does automatically boot into Debian, and it says an eth0 link is up... (this is with no microSD card attached). Trying to find it on my network now.

Had this same issue last week testing the non-CM board. Corrupt SBC config on SPI flash seemingly resulted in it looking for kernel on eMMC as default, but their image wanted SD card. I flashed both, booted, then changed /boot/extlinux/extlinux.cfg to use mmcblk0 so no SD card required, and it works a treat.

Next week I'm going to try to flash OpenSBI again with correct config, see if that does it. Released eMMC image for now anyway; https://plati.ma/milk-v-mars/ (should have seen this post and enabled password-full SSH, dang it)

Cheers for your RV contributions mate!

mr-c commented 7 months ago

Update: Skipping acquire of configured file 'main/binary-riscv64/Packages' as repository 'http://deb.debian.org/debian bookworm-backports InRelease' doesn't support architecture 'riscv64'

@christiancelona Switch to sid trixie (the testing development version of the next stable Debian release, where riscv64 is a first class architecture) from bookwarm in your /etc/apt/sources.list

platima commented 7 months ago

Switch to trixie (the testing version of the next stable Debian release, where riscv64 is a first class architecture) from bookwarm in your /etc/apt/sources.list

OH this repo is live? I am so damn excited; was looking for it the other day when messing with a Mars SBC. Thank you kindly!

mr-c commented 7 months ago

Switch to trixie (the testing version of the next stable Debian release, where riscv64 is a first class architecture) from bookwarm in your /etc/apt/sources.list

OH this repo is live? I am so damn excited; was looking for it the other day when messing with a Mars SBC. Thank you kindly!

Whoops, I should have tested that. Use sid instead, I guess the riscv64 packages haven't migrated to Trixie yet.

platima commented 7 months ago

Whoops, I should have tested that. Use sid instead, I guess the riscv64 packages haven't migrated to Trixie yet.

You set me up, just to let me down 💔

eshattow commented 7 months ago

Whoops, I should have tested that. Use sid instead, I guess the riscv64 packages haven't migrated to Trixie yet.

/etc/apt/sources.list.d/debian.sources:

Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: unstable
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

/etc/apt/sources.list.d/debian-experimental.sources:

Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: experimental
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

There is a PCB revision needed to fix some problems and so the next batch of Mars CM is delayed until later this month (November 2023). Until I get a Mars CM in-hand I am following along with Debian riscv64 progress by a running qemu instance and the DQIB image as mentioned above.

platima commented 7 months ago

@eshattow oh super interesting to know! Can I ask what problems are being fixed if you have any insight?

Ripper to see rv64 in unstable now, did not recall seeing that previously. Looks like it's got kernel 6.5 in there too; https://packages.debian.org/unstable/linux-image-6.5.0-4-riscv64

I've got a Mars SBC (not CM) I am tempted to test with.

eshattow commented 7 months ago

@platima I too am curious. That was the summary of a reply from the distributor customer support person. 🤷

platima commented 7 months ago

oh, Crush? Hah

------ Original Message ------ From "E Shattow" @.> To "geerlingguy/sbc-reviews" @.> Cc "platima" @.>; "Mention" @.> Date 9/11/2023 4:40:41 PM Subject Re: [geerlingguy/sbc-reviews] Milk-V Mars CM (Issue #22)

@platima https://github.com/platima I too am curious. That was the summary of a reply from the distributor customer support person. 🤷

— Reply to this email directly, view it on GitHub https://github.com/geerlingguy/sbc-reviews/issues/22#issuecomment-1803381127, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADIYAQF7WCT3MIAKGBY2XDTYDSJITAVCNFSM6AAAAAA6TL34OGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMBTGM4DCMJSG4. You are receiving this because you were mentioned.Message ID: @.***>

rhinot commented 7 months ago

@platima I installed the linux-image-riscv64 which installs 6.5.10-1 and a few other utils.

Install goes fine, but haven't figured how to get the system to boot that kernel (no grub). Happy to try any ideas you have, so you don't have to switch over for nothing.

platima commented 7 months ago

Hey if it's all setup right, should just be a matter of modifying /boot/extlinux/extlinux.conf from memory! You can even have both kernel options in there just in case.

Eg see how the Ox64 image has two extlinux entries depending on the platform: https://github.com/openbouffalo/buildroot_bouffalo/blob/main/board/pine64/ox64/rootfs-overlay/boot/extlinux/extlinux.conf

Just make sure the kernels are both present and have unique names.

------ Original Message ------ From "rhinot" @.> To "geerlingguy/sbc-reviews" @.> Cc "platima" @.>; "Mention" @.> Date 18/11/2023 6:32:57 AM Subject Re: [geerlingguy/sbc-reviews] Milk-V Mars CM (Issue #22)

@platima https://github.com/platima I installed the linux-image-riscv64 https://packages.debian.org/unstable/linux-image-riscv64 which installs 6.5.10-1 and a few other utils.

Install goes fine, but haven't figured how to get the system to boot that kernel (no grub). Happy to try any ideas you have, so you don't have to switch over for nothing.

— Reply to this email directly, view it on GitHub https://github.com/geerlingguy/sbc-reviews/issues/22#issuecomment-1806625320, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADIYAQFUGFIDVPDP4EIKARLYE7QZTAVCNFSM6AAAAAA6TL34OGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMBWGYZDKMZSGA. You are receiving this because you were mentioned.Message ID: @.***>

rhinot commented 7 months ago

Thanks, @platima!

That was helpful, as I tried loading the 6.5 kernel, it failed, and this allowed me to fall back to 6.1. For other's reference, I also found this extlinux.conf sample clarifying.

Do you know where I can find what failed when the system tried to boot into my 6.5 kernel? I tried journalctl, but there is nothing even with the timestamps of the attempted boot with that kernel.

platima commented 7 months ago

Very welcome.

And damn, that's a tough one. Not too sure TBH, I'd just watch the debug output via serial in PuTTy, and scroll back up to read it hah.

------ Original Message ------ From "rhinot" @.> To "geerlingguy/sbc-reviews" @.> Cc "platima" @.>; "Mention" @.> Date 18/11/2023 2:14:26 PM Subject Re: [geerlingguy/sbc-reviews] Milk-V Mars CM (Issue #22)

Thanks, @platima https://github.com/platima!

That was helpful, as I tried loading the 6.5 kernel, it failed, and this allowed me to fall back to 6.1. For other's reference, I also found this extlinux.conf sample https://github.com/jetsonhacks/bootFromUSB/blob/main/sample-extlinux.conf clarifying.

Do you know where I can find what failed when the system tried to boot into my 6.5 kernel? I tried journalctl, but there is nothing even with the timestamps of the attempted boot with that kernel.

— Reply to this email directly, view it on GitHub https://github.com/geerlingguy/sbc-reviews/issues/22#issuecomment-1817409090, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADIYAQFFVO7BVXGH4SKMBDDYFBG4FAVCNFSM6AAAAAA6TL34OGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJXGQYDSMBZGA. You are receiving this because you were mentioned.Message ID: @.***>

eshattow commented 6 months ago

milkv_marscm101_flatscan_lossy_face milkv_marscm101_flatscan_lossy_obverseflip Flatbed scan of rev 1.01 (bottom scan is flipped and aligned in post-process so it matches where components are viewed from the top down).

Identified chip markings overall:

milkv_marscm101_flatscan_lossy_obverse_eepromdetail Detail view from above obverse scan of eeprom chip. Note the markings in contrast to Milk-V vendor SDK devicetree eeprom hack mars-buildroot-sdk.git/linux/arch/riscv/boot/dts/starfive/jh7110-milkv-mars-cm.dtsi:

        eeprom@50 {
                compatible = "atmel,24c02";
                reg = <0x50>;
                pagesize = <16>;
        };

The eeprom here has wrong data as it indicates a 16GB eMMC (E016) and there is no eMMC (E000). Correct this by shorting the eeprom Write Protect pin at "EN" test point to ground and write new value from U-Boot:

milkv_mars_cm_eeprom_wp_disable IMG_20240417_154541

mac --------EEPROM INFO-------- Vendor : MILK-V Product full SN: MARC-V10-2340-D004E016-00001234 ... mac product_id MARC-V10-2340-D004E000-00001234 mac write_eeprom Programming passed.

eshattow commented 5 months ago

Fun fact you can use the U-Boot 'dhcp' command to set up the network PHY ahead of loading a kernel. Otherwise MOTORCOMM_PHY in addition to defconfig is needed for mainline Linux kernel, and if you want SD Card function that will be I2C_DESIGNWARE_PLATFORM && MFD_AXP20X_I2C && REGULATOR_AXP20X. No patches needed for SDCard and it seems "good enough" to use the in-tree DTB: starfive/jh7110-starfive-visionfive-2-v1.3b.dtb (although it doesn't exactly match the Mars CM hardware).

The official debian-installer can be run successfully in EFI mode: https://d-i.debian.org/daily-images/riscv64/