Launched in 2004, dmesgd aims to provide a user-submitted repository of searchable *BSD dmesgs. The dmesg(8) command displays the system message buffer's content, and during boot a copy is saved to /var/run/dmesg.boot. This buffer contains the operating system release, name and version, a list of devices identified, plus a whole host of other useful information. We hope others find this resource useful and further contribute to its growth. Contact us at [ admin at lists dot nycbug dot org ]. Note that this site is not a substitute for sending the dmesg directly to the respective project.
Date: 2026-10-02 04:12:53
From: lwhsu
Description: Andes QiLai SoC/Voyager Development Platform (with NX27V)
Script started on Fri Oct 2 11:45:18 2026
Command: sudo cu -s 38400 -l /dev/cuaU1
Connected
Load DTB
Jump
U-Boot SPL 2022.04-00033-g9217e556f3 (May 08 2024 - 17:06:24 +0800)
Trying to boot from RAM
OpenSBI v1.2-59-g399aadb
____ _____ ____ _____
/ __ \ / ____| _ \_ _|
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | |_) || |_
\____/| .__/ \___|_| |_|_____/|____/_____|
| |
|_|
Andes OpenAMP mp hartid: 1
Andes OpenAMP sp hartid: 4
Andes OpenAMP sp sourceid: 0x4001
Andes OpenAMP andes_swmbox Addr:0x43fffc000 Size:0x4000
Andes OpenAMP Reserved Memory Addr:0x43f000000 Size:0x1000000
Platform Name : Generic
Platform Features : medeleg
Platform HART Count : 4
Platform IPI Device : andes_plicsw
Platform Timer Device : andes_plmt @ 62500000Hz
Platform Console Device : uart8250
Platform HSM Device : andes_smu
Platform PMU Device : andes_pmu
Platform Reboot Device : atcwdt200
Platform Shutdown Device : ---
Firmware Base : 0x400000000
Firmware Size : 228 KB
Runtime SBI Version : 1.0
Domain0 Name : root
Domain0 Boot HART : 1
Domain0 HARTs : 0*,1*,2*,3*
Domain0 Region00 : 0x0000000400000000-0x000000040003ffff ()
Domain0 Region01 : 0x0000000000100000-0x00000000001fffff (I,R)
Domain0 Region02 : 0x0000000000400000-0x00000000007fffff (I)
Domain0 Region03 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address : 0x0000000401200000
Domain0 Next Arg1 : 0x0000000401100000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Boot HART ID : 1
Boot HART Domain : root
Boot HART Priv Version : v1.11
Boot HART Base ISA : rv64imafdcnx
Boot HART ISA Extensions : none
Boot HART PMP Count : 16
Boot HART PMP Granularity : 8
Boot HART PMP Address Bits: 37
Boot HART MHPM Count : 4
Boot HART MHPM Bits : 64
Boot HART MIDELEG : 0x0000000000000222
Boot HART MEDELEG : 0x000000000000b109
U-Boot 2022.04-00033-g9217e556f3 (May 08 2024 - 17:06:24 +0800)
DRAM: 16 GiB
Core: 13 devices, 10 uclasses, devicetree: board
MMC: mmc@30c00000: 0
Loading Environment from SPIFlash... SF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB
OK
In: serial@30300000
Out: serial@30300000
Err: serial@30300000
Net: No ethernet found.
Hit any key to stop autoboot: 3 2 1 0
12254384 bytes read in 2456 ms (4.8 MiB/s)
Moving Image from 0x402000000 to 0x400200000, end=400dafcb0
## Flattened Device Tree blob at 7ff3fa130
Booting using the fdt blob at 0x7ff3fa130
Loading Device Tree to 0000000403ff7000, end 0000000403fffcd7 ... OK
Starting kernel ...
---<<BOOT>>---
GDB: debug ports: uart
GDB: current port: uart
KDB: debugger backends: ddb gdb
KDB: current backend: ddb
Physical memory chunk(s):
0x400000000 - 0x7ffffffff, 16384 MB (4194304 pages)
Excluded memory regions:
0x400000000 - 0x4001fffff, 2 MB ( 512 pages) NoAlloc NoDump
0x400400000 - 0x40101afff, 12 MB ( 3099 pages) NoAlloc
0x43f000000 - 0x43fffffff, 16 MB ( 4096 pages) NoAlloc NoDump
Found 4 CPUs in the device tree
Copyright (c) 1992-2026 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 16.0-CURRENT n289408-12e9e8307f0e VOYAGER riscv
FreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git llvmorg-21.1.8-0-g2078da43e25a)
WARNING: WITNESS option enabled, expect reduced performance.
WITNESS configuration requests 2856 KiB of startup allocations with witness_count=1536, lock_order_data_count=2048, lock_order_hash_size=1021
VT: init without driver.
Preloaded elf kernel "kernel" at 0xffffffc000be3968.
SBI: OpenSBI v1.2
SBI Specification Version: 1.0
CPU 0 : Vendor=Andes Core=AX45MP Processor (Hart 1)
marchid=0x8000000000008a45, mimpid=0xc43
MMU: 0x1<Sv39>
ISA: 0x112d<Atomic,Compressed,Double,Float,Mult/Div>
S-mode Extensions: 0
real memory = 17179869184 (16384 MB)
Physical memory chunk(s):
0x0000000400200000 - 0x00000004003fffff, 2097152 bytes (512 pages)
0x000000040101b000 - 0x000000043effffff, 1040076800 bytes (253925 pages)
0x0000000440000000 - 0x00000007ea390fff, 15740768256 bytes (3842961 pages)
avail memory = 16697339904 (15923 MB)
Starting CPU 3 (hart 0)
Starting CPU 1 (hart 2)
Starting CPU 2 (hart 3)
hart 2 isa extensions: i m a f d c zicntr zicsr zifencei zihpm xandespmu
hart 3 isa extensions: i m a f d c zicntr zicsr zifencei zihpm xandespmu
hart 0 isa extensions: i m a f d c zicntr zicsr zifencei zihpm xandespmu
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
CPU 1 : Vendor=Andes Core=AX45MP Processor (Hart 2)
CPU 2 : Vendor=Andes Core=AX45MP Processor (Hart 3)
CPU 3 : Vendor=Andes Core=AX45MP Processor (Hart 0)
random: no preloaded entropy cache
random: no platform bootloader entropy
arc4random: WARNING: initial seeding bypassed the cryptographic random device because it was not yet seeded and the knob 'bypass_before_seeding' was enabled.
VIMAGE (virtualized network stack) enabled
hostuuid: using 00000000-0000-0000-0000-000000000000
ULE: setup cpu 0
ULE: setup cpu 1
ULE: setup cpu 2
ULE: setup cpu 3
random: entropy device external interface
kbd0 at kbdmux0
mem: <memory>
null: <full device, null device, zero device>
openfirm: <Open Firmware control device>
tcp_log: tcp_log device
crypto: <crypto core>
ram0: reserving memory region: 400200000-400400000
ram0: reserving memory region: 40101b000-43f000000
ram0: reserving memory region: 440000000-800000000
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> on ofwbus0
clk_fixed0: <Fixed clock> on simplebus0
Clock: i2c_clk, parent: none, freq: 100000000
simplebus1: <Flattened device tree simple bus> on simplebus0
simplebus1: DMA window: memory at 0x400000000-0x7ffffffff is seen at 0x4400000000 by devices
simplebus2: <Flattened device tree simple bus> on simplebus0
simplebus2: DMA window: memory at 0x400000000-0x7ffffffff is seen at 0x4400000000 by devices
simplebus3: <Flattened device tree simple bus> on simplebus0
simplebus3: DMA window: memory at 0x400000000-0x7ffffffff is seen at 0x4400000000 by devices
sbi0: <RISC-V Supervisor Binary Interface>
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
cpu0: Nominal frequency 100Mhz
cpu1: <Open Firmware CPU> on cpulist0
cpu1: Nominal frequency 100Mhz
cpu2: <Open Firmware CPU> on cpulist0
cpu2: Nominal frequency 100Mhz
cpu3: <Open Firmware CPU> on cpulist0
cpu3: Nominal frequency 100Mhz
intc0: <RISC-V Local Interrupt Controller> on ofwbus0
sbi_ipi0: <RISC-V SBI Inter-Processor Interrupts> on sbi0
plic0: <RISC-V PLIC> mem 0x2000000-0x3ffffff irq 12,13,14,15,16,17,18,19 on simplebus0
gpio0: <Andes ATCGPIO100 GPIO controller> mem 0x30700000-0x307fffff irq 2 on simplebus0
gpio0: revision 0x2, 16 pins
gpiobus0: <OFW GPIO bus> on gpio0
timer0: <RISC-V Timer>
Timecounter "RISC-V Timecounter" frequency 62500000 Hz quality 1000
Event timer "RISC-V Eventtimer" frequency 62500000 Hz quality 1000
rcons0: <RISC-V console>
nx27v0: <Andes NX27V Vector Processor> on ofwbus0
nx27v0: hart ids: NX27V 4, host 1
nx27v0: reserved memory 0x43f000000-0x43fffffff
nx27v0: SMU at 0x30100000: reset vector 0x400800000, reset control 0x603f838, NMI 0x0, boot control 0x0
nx27v0: Andes SBI extension: answers (sbi_probe_extension says no)
nx27v0: PPMA: yes
nx27v0: PMA set up once all CPUs run
simplebus0: <smu@30100000> mem 0x30100000-0x301fffff compat andestech,atcsmu (no driver attached)
ftsdc0100: <Faraday FTSDC010 SD/MMC controller> mem 0x30c00000-0x30c00fff irq 0 on simplebus0
ftsdc0100: revision 0x30107, 16 byte FIFO, 4-bit bus, clock 100000000 Hz/(2*(n+1))
atciic0: <Andes ATCIIC100 I2C controller> mem 0x30800000-0x308fffff irq 1 on simplebus0
atciic0: revision 0x12, 4 byte FIFO, clock 100000000 Hz, setup 0x5252100 -> 0x10b51cd5
iicbus0: <OFW I2C bus> on atciic0
iic0: <I2C generic I/O> on iicbus0
ds13rtc0: <Dallas/Maxim DS1374 RTC> at addr 0xd0 on iicbus0
gpioc0: <GPIO controller> at pins 0-15 on gpiobus0
atcwdt0: <Andes ATCWDT200 Watchdog Timer> mem 0x30500000-0x305fffff on simplebus0
atcwdt0: 15000000 Hz external clock, timeouts up to 143 s
pcib0: <Andes QiLai PCIe Controller> mem 0xc0000000-0xdfffffff,0x4002000-0x4002fff,0-0xffff irq 21 on simplebus1
pcib0: DBI vendor/device 0xabcd16c3, class/rev 0x1
pcib0: Config space at 0x1800000000 is 0 on the parent bus
pcib0: Bus is cache-coherent
pcib0: ATU MEM window size is too large. Up to 4GB windows are supported, trimming window size to 4GB
pcib0: Using iATU unroll mode
pcib0: Detected outbound iATU regions: 4
pcib0: 32 MSI vectors, doorbell at 0x4401910000
pcib0: COHERENCY_CONTROL3: 0x78787878
pcib0: link is down on entry, LTSSM disabled
pcib0: link down (SII_PM_STATE 0)
pci0: <OFW PCI bus> on pcib0
pci0: domain=0, physical bus=0
found-> vendor=0x16c3, dev=0xabcd, revid=0x01
domain=0, bus=0, slot=0, func=0
class=06-04-00, hdrtype=0x01, mfdev=0
cmdreg=0x0107, statreg=0x0010, cachelnsz=0 (dwords)
lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
intpin=a, irq=255
powerspec 3 supports D0 D1 D3 current D0
MSI supports 32 messages, 64 bit, vector masks
map[10]: type Memory, range 64, base 0, size 33, enabled
secbus=1, subbus=255
pcib1: <PCI-PCI bridge> at device 0.0 on pci0
pcib1: domain 0
pcib1: secondary bus 1
pcib1: subordinate bus 255
pci1: <PCI bus> on pcib1
pcib1: allocated bus range (1-1) for rid 0 of pci1
pci1: domain=0, physical bus=1
pcib2: <Andes QiLai PCIe Controller> mem 0xa0000000-0xbfffffff,0x4001000-0x4001fff,0-0xffff irq 22 on simplebus2
pcib2: DBI vendor/device 0xabcd16c3, class/rev 0x1
pcib2: Config space at 0x1000000000 is 0 on the parent bus
pcib2: Bus is cache-coherent
pcib2: ATU MEM window size is too large. Up to 4GB windows are supported, trimming window size to 4GB
pcib2: Using iATU unroll mode
pcib2: Detected outbound iATU regions: 4
pcib2: 32 MSI vectors, doorbell at 0x4401b87000
pcib2: COHERENCY_CONTROL3: 0x78787878
pcib2: link is down on entry, LTSSM disabled
pcib2: link down (SII_PM_STATE 0)
pci2: <OFW PCI bus> on pcib2
pci2: domain=2, physical bus=0
found-> vendor=0x16c3, dev=0xabcd, revid=0x01
domain=2, bus=0, slot=0, func=0
class=06-04-00, hdrtype=0x01, mfdev=0
cmdreg=0x0107, statreg=0x0010, cachelnsz=0 (dwords)
lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
intpin=a, irq=255
powerspec 3 supports D0 D1 D3 current D0
MSI supports 32 messages, 64 bit, vector masks
map[10]: type Memory, range 64, base 0, size 33, enabled
secbus=1, subbus=255
pcib3: <PCI-PCI bridge> at device 0.0 on pci2
pcib3: domain 2
pcib3: secondary bus 1
pcib3: subordinate bus 255
pci3: <PCI bus> on pcib3
pcib3: allocated bus range (1-1) for rid 0 of pci3
pci3: domain=2, physical bus=1
pcib4: <Andes QiLai PCIe Controller> mem 0x80000000-0x9fffffff,0x4000000-0x4000fff,0-0xffff irq 23 on simplebus3
pcib4: DBI vendor/device 0xabcd16c3, class/rev 0x1
pcib4: Config space at 0x2000000000 is 0 on the parent bus
pcib4: Bus is cache-coherent
pcib4: ATU MEM window size is too large. Up to 4GB windows are supported, trimming window size to 4GB
pcib4: Using iATU unroll mode
pcib4: Detected outbound iATU regions: 4
pcib4: 32 MSI vectors, doorbell at 0x4401b78000
pcib4: COHERENCY_CONTROL3: 0x78787878
pcib4: link is down on entry, LTSSM disabled
pcib4: link down (SII_PM_STATE 0)
pci4: <OFW PCI bus> on pcib4
pci4: domain=4, physical bus=0
found-> vendor=0x16c3, dev=0xabcd, revid=0x01
domain=4, bus=0, slot=0, func=0
class=06-04-00, hdrtype=0x01, mfdev=0
cmdreg=0x0107, statreg=0x0010, cachelnsz=0 (dwords)
lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
intpin=a, irq=255
powerspec 3 supports D0 D1 D3 current D0
MSI supports 32 messages, 64 bit, vector masks
map[10]: type Memory, range 64, base 0, size 33, enabled
secbus=1, subbus=255
pcib5: <PCI-PCI bridge> at device 0.0 on pci4
pcib5: domain 4
pcib5: secondary bus 1
pcib5: subordinate bus 255
pci5: <PCI bus> on pcib5
pcib5: allocated bus range (1-1) for rid 0 of pci5
pci5: domain=4, physical bus=1
simplebus0: <timer@100000> mem 0x100000-0x1fffff irq 3,4,5,6 compat andestech,qilai-plmt (no driver attached)
simplebus0: <cache-controller@200000> mem 0x200000-0x2fffff irq 7 compat andestech,qilai-ax45mp-cache (no driver attached)
simplebus0: <interrupt-controller@400000> mem 0x400000-0x7fffff irq 8,9,10,11 compat andestech,qilai-plicsw (no driver attached)
simplebus0: no default resources for rid = 0, type = 4
uart0: <Non-standard ns8250 class UART with FIFOs> mem 0x30300000-0x303fffff irq 20 on simplebus0
uart0: console (38580,n,8,1)
uart0: fast interrupt
uart0: PPS capture mode: DCD
crypto: assign cryptosoft0 driver id 0, flags 0x6000000
Device configuration finished.
procfs registered
Timecounters tick every 1.000 msec
vlan: initialized, using hash tables with chaining
lo0: bpf attached
IPsec: Initialized Security Association Processing.
tcp_init: net.inet.tcp.tcbhashsize auto tuned to 131072
usb_needs_explore_all: no devclass
ds13rtc0: WARNING: oscillator stop flag is set; the time may be invalid (ignored as configured, the time is unverified)
ds13rtc0: registered as a time-of-day clock, resolution 1.000000s
sbi_ipi0: using for IPIs
Release APs
Secondary CPU 1 fully online
Trying to mount root from ufs:/dev/gpt/voyagerroot []...
Secondary CPU 2 fully online
Secondary CPU 3 fully online
nx27v0: PMA set on 4/4 CPUs
nx27v0: mailbox: sp_mbox 0xc31dccd8, opensbi_mbox 0xb13a1e6a, mp_status 0x3ce23327, sp_status 0x4ec5e195
WARNING: WITNESS option enabled, expect reduced performance.
regulator: shutting down unused regulators
ftsdc0100: card inserted
mmc0: <MMC/SD bus> on ftsdc0100
mmc0: Probing bus
mmc0: SD 2.0 interface conditions: OK
mmc0: SD probe: OK (OCR: 0x00ff8000)
mmc0: Current OCR: 0x00ff8000
mmc0: Probing cards
mmc0: New card detected (CID 275048534431364730da9c796b00fcaf)
mmc0: New card detected (CSD 400e00325b59000073a77f800a4000eb)
mmc0: Card at relative address 0x0007 added:
mmc0: card: SDHC SD16G 3.0 SN DA9C796B MFG 12/2015 by 39 PH
mmc0: quirks: 0
mmc0: bus: 4bit, 50MHz (high speed timing)
mmc0: memory: 30318592 blocks, erase sector 8192 blocks
mmc0: setting transfer rate to 25.000MHz (normal speed timing)
mmcsd0: 16GB <SDHC SD16G 3.0 SN DA9C796B MFG 12/2015 by 39 PH> at mmc0 25.0MHz/4bit/128-block
GEOM: new disk mmcsd0
mmc0: setting bus width to 4 bits normal speed timing
GEOM: mmcsd0: the secondary GPT header is not in the last LBA.
GEOM_PART: partition 1 on (mmcsd0, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 2 on (mmcsd0, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 3 on (mmcsd0, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 4 on (mmcsd0, GPT) is not aligned on 4194304 bytes
GEOM: diskid/DISK-DA9C796B: the secondary GPT header is not in the last LBA.
GEOM_PART: partition 1 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 2 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 3 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 4 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
ds13rtc0: providing initial system time
failed to load CTF for kernel: 2
start_init: trying /sbin/init
random: randomdev_wait_until_seeded unblock wait
random: randomdev_wait_until_seeded unblock wait
random: unblocking device.
Setting hostuuid: b95d7cb1-4069-4795-8597-54993175d388.
Setting hostid: 0x47697cf4.
Starting file system checks:
GEOM: diskid/DISK-DA9C796B: the secondary GPT header is not in the last LBA.
GEOM_PART: partition 1 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 2 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 3 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 4 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
/dev/gpt/voyagerroot: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/gpt/voyagerroot: clean, 432751 free (7 frags, 54093 blocks, 0.0% fragmentation)
GEOM: diskid/DISK-DA9C796B: the secondary GPT header is not in the last LBA.
GEOM_PART: partition 1 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 2 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 3 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
GEOM_PART: partition 4 on (diskid/DISK-DA9C796B, GPT) is not aligned on 4194304 bytes
Mounting local filesystems:.
Linux riscv64 ELF exec handler installed
linprocfs registered
pfs_add_node: homonymous siblings: 'pci0000:00/0000:00:00.0' type 2
linsysfs_run_bus: pcib3 omitted from sysfs tree, error 17
pfs_add_node: homonymous siblings: 'pci0000:00/0000:00:00.0' type 2
linsysfs_run_bus: pcib5 omitted from sysfs tree, error 17
linsysfs registered
[: -eq: unexpected operator
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
Setting hostname: voyager.
Setting up harvesting: RANDOMDEV,[CALLOUT],[UMA],[FS_ATIME],SWI,INTERRUPT,NET_NG,[NET_ETHER],NET_TUN,MOUSE,KEYBOARD,ATTACH,CACHED
Feeding entropy: .
lo0: link state changed to UP
Starting Network: lo0.
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet[_IP_XXXX] netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Starting devd.
add net fe80::: gateway ::1
add net ff02::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
Updating motd:.
Clearing /tmp (X related).
Updating /var/run/os-release done.
Creating and/or trimming log files.
Starting syslogd.
Mounting late filesystems:.
Starting cron.
Starting background file system checks in 60 seconds.
Fri Oct 2 03:44
FreeBSD/riscv (voyager) (ttyu0)
login: root
Oct 2 03:45:39 voyager login[1498]: ROOT LOGIN (root) ON ttyu0
FreeBSD 16.0-CURRENT (VOYAGER) n289408-12e9e8307f0e
FreeBSD on the Andes QiLai Voyager (4 x AX45MP, NX27V, 16 GiB) -- proof of concept.
Console: 38400 8N1. Root on the SD card. See /root/demo/README for what to try;
/root/demo/selftest.sh runs everything, /root/demo/nx27v.sh drives the NX27V.
7[r[999;999H[6n8root@voyager:~ # uname -v
FreeBSD 16.0-CURRENT n289408-12e9e8307f0e VOYAGER
root@voyager:~ # uname -a
FreeBSD voyager 16.0-CURRENT FreeBSD 16.0-CURRENT n289408-12e9e8307f0e VOYAGER riscv
root@voyager:~ # dmesg | grep nx27v
nx27v0: <Andes NX27V Vector Processor> on ofwbus0
nx27v0: hart ids: NX27V 4, host 1
nx27v0: reserved memory 0x43f000000-0x43fffffff
nx27v0: SMU at 0x30100000: reset vector 0x400800000, reset control 0x603f838, NMI 0x0, boot control 0x0
nx27v0: Andes SBI extension: answers (sbi_probe_extension says no)
nx27v0: PPMA: yes
nx27v0: PMA set up once all CPUs run
nx27v0: PMA set on 4/4 CPUs
nx27v0: mailbox: sp_mbox 0xc31dccd8, opensbi_mbox 0xb13a1e6a, mp_status 0x3ce23327, sp_status 0x4ec5e195
root@voyager:~ # ls -l /root /root/demo
/root:
total 3148
-rw-r--r-- 1 root wheel 1011 Oct 2 02:47 .cshrc
-rw-r--r-- 1 root wheel 66 Oct 2 02:47 .k5login
-rw-r--r-- 1 root wheel 316 Oct 2 02:47 .login
-rw-r--r-- 1 root wheel 472 Oct 2 02:47 .profile
-rw-r--r-- 1 root wheel 1213 Oct 2 02:47 .shrc
drwxr-xr-x 2 root wheel 512 Oct 2 02:47 demo
-rwxr-xr-x 1 root wheel 728336 Oct 2 02:47 fpsig
-rwxr-xr-x 1 root wheel 13768 Oct 2 02:47 linuxtest
-rwxr-xr-x 1 root wheel 732888 Oct 2 02:47 lmprobe
-rw-r--r-- 1 root wheel 2624 Oct 2 02:47 nx27v-fw.bin
-rwxr-xr-x 1 root wheel 764360 Oct 2 02:47 nx27vctl
-rwxr-xr-x 1 root wheel 726336 Oct 2 02:47 thrfp
/root/demo:
total 56
-rw-r--r-- 1 root wheel 2225 Oct 2 02:47 README
-rwxr-xr-x 1 root wheel 696 Oct 2 02:47 bench.sh
-rwxr-xr-x 1 root wheel 473 Oct 2 02:47 build.sh
-rwxr-xr-x 1 root wheel 558 Oct 2 02:47 debug.sh
-rwxr-xr-x 1 root wheel 336 Oct 2 02:47 dtrace.sh
-rwxr-xr-x 1 root wheel 579 Oct 2 02:47 go.sh
-rwxr-xr-x 1 root wheel 587 Oct 2 02:47 hwinfo.sh
-rwxr-xr-x 1 root wheel 401 Oct 2 02:47 jail.sh
-rwxr-xr-x 1 root wheel 520 Oct 2 02:47 kyua-quick.sh
-rwxr-xr-x 1 root wheel 555 Oct 2 02:47 linux.sh
-rwxr-xr-x 1 root wheel 4332 Oct 2 02:47 nx27v.sh
-rwxr-xr-x 1 root wheel 2097 Oct 2 02:47 selftest.sh
-rwxr-xr-x 1 root wheel 740 Oct 2 02:47 zfs.sh
root@voyager:~ # cat /etc/motd.template
FreeBSD on the Andes QiLai Voyager (4 x AX45MP, NX27V, 16 GiB) -- proof of concept.
Console: 38400 8N1. Root on the SD card. See /root/demo/README for what to try;
/root/demo/selftest.sh runs everything, /root/demo/nx27v.sh drives the NX27V.
root@voyager:~ # /root/demo/selftest.sh
== FreeBSD on the Andes QiLai Voyager: self test
FreeBSD voyager 16.0-CURRENT FreeBSD 16.0-CURRENT n289408-12e9e8307f0e VOYAGER riscv
PASS 4 CPUs online
PASS 16 GiB of memory
PASS Andes AX45MP
PASS RTC time is sane
PASS SD card readable
PASS root file system rw
PASS FP state across signals (fpsig)
PASS FP state at thr_create (thrfp)
PASS no MMU-bypass range (lmprobe)
PASS linux64.ko loaded
linux: jid 0 pid 1532 (linuxtest): unsupported clock_gettime clockid 12345
PASS Linuxulator test suite (linuxtest)
PASS Alpine (musl) chroot
PASS Debian (glibc) chroot
linux: jid 0 pid 1545 (go): syscall pidfd_open not implemented
PASS Go program on the Linuxulator
PASS kyua runs a test (bin/cat)
PASS NX27V driver up (PMA set on 4 CPUs)
nx27v0: START at 0x43f000000: reset control 0x603f838 -> 0x603f83c
PASS NX27V firmware boots and answers (nx27v.sh quick)
== ALL PASSED
root@voyager:~ # /root/demo/nx27v.sh
== NX27V: the driver's view (nx27vctl info)
rmem 0x43f000000 + 0x1000000 (16 MiB)
harts mp 1 (signalled by the NX27V), sp 4 (the NX27V)
sbi_andes 1 (the Andes SBI extension answers)
ppma 1 (present)
uncached 1 (the mapping is uncached)
smu reset_vec 0x43f000000 (hi 0x4, lo 0x3f000000)
smu nx_reset 0x603f838 (SMU + 0x570)
started 1 (START issued since attach)
== a firmware is running (heartbeat 1142471 -> 1nx27v0: START at 0x43f000000: reset control 0x603f838 -> 0x603f83c
407112): parking it first
park: status 0 OK, stage 7 PARKED
== load the firmware and start the core
0x43f000000-0x43f000a40: 2624 bytes, verified
record at 0x43fffc100 zeroed; entry 0x43f000000
started the NX27V at 0x43f000000
0.007 ms stage 6 READY (boot_count 1)
stage 6 READY
boot_count 1
mhartid 0x4
misa 0x8000000000b0312d rv64 ACDFIMNUVX
mvendorid 0x31e
marchid 0x8000000000008027
mcache_ctl 0x0
micm_cfg 0x2000719
mdcm_cfg 0x200071d
vlenb 64 (VLEN 512)
trap_count 1
trap_cause 0x2 illegal instruction
cache_enabled 0
== one round trip (ECHO)
echo 0x1234abcd -> 0x1234abcd (status 0 OK, 40 us issue to ack)
== SAXPY on 65536 floats x 10, caches OFF (reset state: every access goes to DRAM)
-- scalar, caches off: nx27vctl saxpy 65536 10 --scalar
saxpy: n 65536, reps 10, scalar (SAXPY_S); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 412374962 (result[0])
vl 0 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 bit-identical to the host's
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0016 (0.0032 flops/cycle)
issue to ack 433.302 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.43 s)
cycles/wall 951.7 MHz (result[0] over issue to ack; a lower bound)
NX27V time 412.379 ms for the kernel (cycles / clock)
AX45MP time 2.878 ms, the same loop in plain C on the host (0.2277 elements/ns)
ratio the AX45MP is 143.28x faster
saxpy: PASS
-- vector, caches off: nx27vctl saxpy 65536 10
saxpy: n 65536, reps 10, vector (SAXPY_V); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 14186888 (result[0])
vl 128 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 within 10 ulp of the host's (max 0 ulp)
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0462 (0.0924 flops/cycle)
issue to ack 35.064 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 404.6 MHz (result[0] over issue to ack; a lower bound)
NX27V time 14.187 ms for the kernel (cycles / clock)
AX45MP time 2.879 ms, the same loop in plain C on the host (0.2276 elements/ns)
ratio the AX45MP is 4.93x faster
saxpy: PASS
== turn the NX27V's caches on (CACHE_ON: mcache_ctl IC_EN|DC_EN, record kept coherent by CCTL)
status 0 OK
mcache_ctl 0x0 before, 0x3 after (IC_EN 1, DC_EN 1)
cache_enabled 1
echo 0xcafe -> 0xcafe (status 0 OK, 38 us issue to ack)
== SAXPY on 65536 floats x 10, caches ON
-- scalar, caches on: nx27vctl saxpy 65536 10 --scalar
saxpy: n 65536, reps 10, scalar (SAXPY_S); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 7217515 (result[0])
vl 0 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 bit-identical to the host's
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0908 (0.1816 flops/cycle)
issue to ack 7.629 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 946.1 MHz (result[0] over issue to ack; a lower bound)
NX27V time 7.218 ms for the kernel (cycles / clock)
AX45MP time 2.864 ms, the same loop in plain C on the host (0.2288 elements/ns)
ratio the AX45MP is 2.52x faster
saxpy: PASS
-- vector, caches on: nx27vctl saxpy 65536 10
saxpy: n 65536, reps 10, vector (SAXPY_V); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 1497124 (result[0])
vl 128 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 within 10 ulp of the host's (max 0 ulp)
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.4377 (0.8755 flops/cycle)
issue to ack 1.916 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 781.4 MHz (result[0] over issue to ack; a lower bound)
NX27V time 1.497 ms for the kernel (cycles / clock)
AX45MP time 2.869 ms, the same loop in plain C on the host (0.2285 elements/ns)
ratio the NX27V is 1.92x faster
saxpy: PASS
== summary (y = 1.5*x + y, 65536 floats x 10; the AX45MP column is this core's cached scalar C loop)
NX27V cycles NX27V ms AX45MP ms ratio
scalar, caches off 412374962 412.379 2.878 the AX45MP is 143.28x faster PASS
vector, caches off 14186888 14.187 2.879 the AX45MP is 4.93x faster PASS
scalar, caches on 7217515 7.218 2.864 the AX45MP is 2.52x faster PASS
vector, caches on 1497124 1.497 2.869 the NX27V is 1.92x faster PASS
== the firmware keeps running (nx27vctl watch 5 shows its heartbeat); ./nx27v.sh again parks and restarts it
== NX27V OK
root@voyager:~ # /root/demo/nx27v.sh big
== NX27V: the driver's view (nx27vctl info)
rmem 0x43f000000 + 0x1000000 (16 MiB)
harts mp 1 (signalled by the NX27V), sp 4 (the NX27V)
sbi_andes 1 (the Andes SBI extension answers)
ppma 1 (present)
uncached 1 (the mapping is uncached)
smu reset_vec 0x43f000000 (hi 0x4, lo 0x3f000000)
smu nx_reset 0x603f838 (SMU + 0x570)
started 1 (START issued since attach)
== a firmware is running (heartbeat 29172736 -> nx27v0: START at 0x43f000000: reset control 0x603f838 -> 0x603f83c
32744448): parking it first
park: status 0 OK, stage 7 PARKED
== load the firmware and start the core
0x43f000000-0x43f000a40: 2624 bytes, verified
record at 0x43fffc100 zeroed; entry 0x43f000000
started the NX27V at 0x43f000000
0.007 ms stage 6 READY (boot_count 1)
stage 6 READY
boot_count 1
mhartid 0x4
misa 0x8000000000b0312d rv64 ACDFIMNUVX
mvendorid 0x31e
marchid 0x8000000000008027
mcache_ctl 0x0
micm_cfg 0x2000719
mdcm_cfg 0x200071d
vlenb 64 (VLEN 512)
trap_count 1
trap_cause 0x2 illegal instruction
cache_enabled 0
== one round trip (ECHO)
echo 0x1234abcd -> 0x1234abcd (status 0 OK, 38 us issue to ack)
== SAXPY on 65536 floats x 10, caches OFF (reset state: every access goes to DRAM)
-- scalar, caches off: nx27vctl saxpy 65536 10 --scalar
saxpy: n 65536, reps 10, scalar (SAXPY_S); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 412768954 (result[0])
vl 0 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 bit-identical to the host's
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0016 (0.0032 flops/cycle)
issue to ack 433.699 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.43 s)
cycles/wall 951.7 MHz (result[0] over issue to ack; a lower bound)
NX27V time 412.770 ms for the kernel (cycles / clock)
AX45MP time 2.861 ms, the same loop in plain C on the host (0.2291 elements/ns)
ratio the AX45MP is 144.30x faster
saxpy: PASS
-- vector, caches off: nx27vctl saxpy 65536 10
saxpy: n 65536, reps 10, vector (SAXPY_V); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 14186904 (result[0])
vl 128 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 within 10 ulp of the host's (max 0 ulp)
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0462 (0.0924 flops/cycle)
issue to ack 35.244 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 402.5 MHz (result[0] over issue to ack; a lower bound)
NX27V time 14.187 ms for the kernel (cycles / clock)
AX45MP time 2.866 ms, the same loop in plain C on the host (0.2287 elements/ns)
ratio the AX45MP is 4.95x faster
saxpy: PASS
== turn the NX27V's caches on (CACHE_ON: mcache_ctl IC_EN|DC_EN, record kept coherent by CCTL)
status 0 OK
mcache_ctl 0x0 before, 0x3 after (IC_EN 1, DC_EN 1)
cache_enabled 1
echo 0xcafe -> 0xcafe (status 0 OK, 38 us issue to ack)
== SAXPY on 65536 floats x 10, caches ON
-- scalar, caches on: nx27vctl saxpy 65536 10 --scalar
saxpy: n 65536, reps 10, scalar (SAXPY_S); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 7222007 (result[0])
vl 0 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 bit-identical to the host's
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.0907 (0.1815 flops/cycle)
issue to ack 7.636 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 945.8 MHz (result[0] over issue to ack; a lower bound)
NX27V time 7.222 ms for the kernel (cycles / clock)
AX45MP time 2.884 ms, the same loop in plain C on the host (0.2272 elements/ns)
ratio the AX45MP is 2.50x faster
saxpy: PASS
-- vector, caches on: nx27vctl saxpy 65536 10
saxpy: n 65536, reps 10, vector (SAXPY_V); x at 0x43f800000, y at 0x43f840000
status 0 OK
cycles 1495960 (result[0])
vl 128 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 65536/65536 within 10 ulp of the host's (max 0 ulp)
sum(y) 0x4fefffad = 8.05302118e+09 (result[1]); host's sum of the y read back: 0x4fefffad (same)
elements/cycle 0.4381 (0.8762 flops/cycle)
issue to ack 1.911 ms (host clock)
NX27V clock 1000.1 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 782.8 MHz (result[0] over issue to ack; a lower bound)
NX27V time 1.496 ms for the kernel (cycles / clock)
AX45MP time 2.873 ms, the same loop in plain C on the host (0.2281 elements/ns)
ratio the NX27V is 1.92x faster
saxpy: PASS
== SAXPY on 524288 floats x 4, caches on: 2 MiB per array, beyond the 512 KiB D-cache
-- vector, caches on, 2 MiB: nx27vctl saxpy 524288 4
saxpy: n 524288, reps 4, vector (SAXPY_V); x at 0x43f800000, y at 0x43fa00000
status 0 OK
cycles 42116998 (result[0])
vl 128 (result[2])
rdtime delta 0 (result[3]; 0: rdtime traps or does not count)
y check 524288/524288 within 4 ulp of the host's (max 0 ulp)
sum(y) 0x5240012e = 2.06163378e+11 (result[1]); host's sum of the y read back: 0x5240012e (same)
elements/cycle 0.0498 (0.0996 flops/cycle)
issue to ack 50.331 ms (host clock)
NX27V clock 1000.0 MHz (cycle_now against the host clock over 0.20 s)
cycles/wall 836.8 MHz (result[0] over issue to ack; a lower bound)
NX27V time 42.116 ms for the kernel (cycles / clock)
AX45MP time 10.990 ms, the same loop in plain C on the host (0.1908 elements/ns)
ratio the AX45MP is 3.83x faster
saxpy: PASS
== summary (y = 1.5*x + y, 65536 floats x 10; the AX45MP column is this core's cached scalar C loop)
NX27V cycles NX27V ms AX45MP ms ratio
scalar, caches off 412768954 412.770 2.861 the AX45MP is 144.30x faster PASS
vector, caches off 14186904 14.187 2.866 the AX45MP is 4.95x faster PASS
scalar, caches on 7222007 7.222 2.884 the AX45MP is 2.50x faster PASS
vector, caches on 1495960 1.496 2.873 the NX27V is 1.92x faster PASS
vector, caches on, 2 MiB 42116998 42.116 10.990 the AX45MP is 3.83x faster PASS
== the firmware keeps running (nx27vctl watch 5 shows its heartbeat); ./nx27v.sh again parks and restarts it
== NX27V OK
root@voyager:~ # /root/nx27vctl watch 5
s stage heartbeat passes/s cycle_now MHz time_now
0 READY 35311616 - 11133214498 - 0
1 READY 38781952 3470241 12133204648 1000.0 0
2 READY 42252288 3470349 13133194062 1000.0 0
3 READY 45722624 3470315 14133181490 1000.0 0
4 READY 49192960 3470311 15133164098 1000.0 0
5 READY 52663296 3470372 16133152024 1000.0 0
root@voyager:~ # /root/nx27vctl info
rmem 0x43f000000 + 0x1000000 (16 MiB)
harts mp 1 (signalled by the NX27V), sp 4 (the NX27V)
sbi_andes 1 (the Andes SBI extension answers)
ppma 1 (present)
pma_rc cpu0 0, cpu1 0, cpu2 0, cpu3 0 (SET_PMA per CPU)
ncpus 4
uncached 1 (the mapping is uncached)
smu reset_vec 0x43f000000 (hi 0x4, lo 0x3f000000)
smu nx_reset 0x603f838 (SMU + 0x570)
smu nmi 0x0 (SMU + 0x578)
smu boot_ctrl 0x0 (SMU + 0x44c)
mbox sp_mbox 0xc31dccd8, opensbi_mbox 0xb13a1e6a, mp_status 0x3ce23327, sp_status 0x4ec5e195
started 1 (START issued since attach)
stopped 0 (STOP issued since attach)
stop nx_reset 0x0 before, 0x0 after (SMU + 0x570 around the last STOP)
root@voyager:~ # shutdown -p now
Shutdown NOW!
shutdown: [pid 1850]
root@voyager:~ # Oct 2 03:49:23 voyager shutdown[1850]: power-down by root:
Stopping cron.
Waiting for PIDS: 1472.
Stopping devd.
Waiting for PIDS: 989.
Writing entropy file: .
Writing early boot entropy file: .
.
Terminated
Oct 2 03:49:32 voyager syslogd: exiting on signal 15
Waiting (max 60 seconds) for system process `vnlru' to stop... done
Waiting (max 60 seconds) for system process `syncer' to stop...
Syncing disks, vnodes remaining... 1 0 0 done
All buffers synced.
Unmounting 1/10 /compat/debian/proc
Unmounting 2/10 /compat/debian/dev
Unmounting 3/10 /compat/linux/dev/shm
Unmounting 4/10 /compat/linux/dev/fd
Unmounting 5/10 /compat/linux/dev
Unmounting 6/10 /compat/linux/sys
Unmounting 7/10 /compat/linux/proc
Unmounting 8/10 /tmp
Unmounting 9/10 /
Unmounting 10/10 /dev
Uptime: 5m40s
Command exit status: 0
Script done on Fri Oct 2 11:51:16 2026