Progress on running Haiku on VisionFive 2

A developer named " X512" have made some progress on running Haiku on VisionFive 2, the following is his post:

I recently got VisionFive 2 RISC-V board and trying to run Haiku on it.
Current recommended U-Boot version that come with default Debian distro do not supports USB or NVMe boot yet, so I am using SD card for now. It should be possible to start Haiku booting from SD card with Haiku EFI boot loader and kernel with boot drivers and then continue Haiku booting from USB/NVMe when kernel will load PCI/XHCI/NVMe boot drivers.

Hopefully U-Boot have built-in framebuffer support (but with some update artifacts, maybe some write alignment is needed), so it should be possible to boot into Haiku desktop without writing dedicated video drivers.

I currently managed to boot until “PANIC: did not find any boot partitions!” stage. Next it will be needed to write PCI host controller driver (PLDA PCI (linux/pcie-plda.c at JH7110_VisionFive2_devel · starfive-tech/linux · GitHub )) to get USB/NVMe working and continue booting.

screenshot563

Log:

arch_smp_boot_other_cpus(0x80000000000c8d01, 0xffffffc00209878e)
  hart status:
    hart 0: started
    hart 1: stopped
    hart 2: stopped
    hart 3: stopped
  starting CPU 2
  stack: 0xffffffc0026ea000 - 0xffffffc0026eefff
a  rsctha_rctpiu_nge nCtPrUy 23(2
)
  
stack: 0xffffffc0026ef000 - 0xffffffc0026f3fff
a r csht_acrtpui_negn tCrPyU 2(43
)
 
 
stack: 0xffffffc0026f4000 - 0xffffffc0026f8fff
a r chhar_ctp us_teanttusry:2
(
 4 ) 
 
hart 0: started
    hart 1: started
    hart 2: started
    hart 3: started
arch_enter_kernel(satp: 0x80000000000c8d01, kernelArgs: 0xcc591c48, kernelEntry: 0xffffffc00209878e, sp: 0xffffffc00280b000)
Welcome to kernel debugger output!
Haiku revision: hrev56792+44, debug level: 2
vm_translation_map_init: entry
physical memory ranges:
  40080000 - 47ef1000
  47f0f000 - c0110000
  c0200000 - cb579000
  cb57a000 - cb57d000
  cb580000 - cb581000
  cb585000 - ccda4000
  ccda5000 - 240000000
allocated physical ranges:
  c7a2f000 - c9513000
  c9514000 - cb514000
  cb593000 - ccda4000
  ccda5000 - f0000000
  f2000000 - 100000000
allocated virtual ranges:
  10000000 - 10010000
  c8d02000 - c9513000
  c9514000 - cb571000
  cb579000 - cb57a000
  cb57d000 - cb580000
  cb581000 - cb585000
  cb593000 - f0000000
  f2000000 - 100000000
  ffffffc002000000 - ffffffc006831000
  fffffffe00080000 - 0
kernel args ranges:
  ffffffc002000000 - ffffffc002010000
  ffffffc00226e000 - ffffffc002309000
  ffffffc00235d000 - ffffffc00236d000
  ffffffc002399000 - ffffffc0023a9000
  ffffffc0023cc000 - ffffffc0023dc000
  ffffffc002479000 - ffffffc0024a6000
  ffffffc0024b7000 - ffffffc0024c7000
  ffffffc002507000 - ffffffc002517000
  ffffffc002556000 - ffffffc002566000
  ffffffc00258d000 - ffffffc00259d000
  ffffffc0025ca000 - ffffffc0025da000
  ffffffc00265a000 - ffffffc00266a000
  ffffffc002693000 - ffffffc0026b0000
  ffffffc0026ce000 - ffffffc0026de000
  ffffffc0026f9000 - ffffffc002705000
physMapBase: 0xfffffffe00080000
physMemBase: 0x40080000
mark_page_range_in_use(0x0, 0x40080): start page is before free list
reserve_boot_loader_ranges(): Skipping range: 0x0000000010000000, 65536
reserve_boot_loader_ranges(): Skipping range: 0x00000000c8d02000, 8458240
reserve_boot_loader_ranges(): Skipping range: 0x00000000c9514000, 33935360
reserve_boot_loader_ranges(): Skipping range: 0x00000000cb579000, 4096
reserve_boot_loader_ranges(): Skipping range: 0x00000000cb57d000, 12288
reserve_boot_loader_ranges(): Skipping range: 0x00000000cb581000, 16384
reserve_boot_loader_ranges(): Skipping range: 0x00000000cb593000, 614912000
reserve_boot_loader_ranges(): Skipping range: 0x00000000f2000000, 234881024
vm_translation_map_init_post_area: entry
SBI spec version: 0x1000000
SBI implementation ID: 0x1
SBI implementation version: 0x10002
SBI vendor ID: 0x489
SBI arch ID: 0x8000000000000007
arch_smp_init()
allocate_commpage_entry(2, 16) -> 0x0000000000000200
timerFrequency: 4000000
system_time_conversion_factor: 1073741824
arch_vm_init_end(): 1 virtual ranges to keep:
  start: 0xffffffc002811000, size: 0x4020000
scheduler_init: found 4 logical cpus and 0 cache levels
scheduler switches: single core: false, cpu load tracking: false, core load tracking: true
scheduler: switching to low latency mode
slab memory manager: created area 0xffffffc001001000 (160)
allocate_commpage_entry(3, 56) -> 0x0000000000000210
allocate_commpage_entry(4, 10) -> 0x0000000000000248
register_child_devices: 0 nodes registered
PCI: pci_module_init
register_child_devices: 0 nodes registered
Last message repeated 44 times.
PlicInterruptController::InitDriver
  irqCount: 136
fdt_device_get_interrupt("plic@c000000", 0)
  context 0
    cause: 11
    hartId: 0
fdt_device_get_interrupt("plic@c000000", 1)
  context 1
    cause: 11
    hartId: 1
fdt_device_get_interrupt("plic@c000000", 2)
  context 2
    cause: 9
    hartId: 1
fdt_device_get_interrupt("plic@c000000", 3)
  context 3
    cause: 11
    hartId: 2
fdt_device_get_interrupt("plic@c000000", 4)
  context 4
    cause: 9
    hartId: 2
fdt_device_get_interrupt("plic@c000000", 5)
  context 5
    cause: 11
    hartId: 3
fdt_device_get_interrupt("plic@c000000", 6)
  context 6
    cause: 9
    hartId: 3
fdt_device_get_interrupt("plic@c000000", 7)
  context 7
    cause: 11
    hartId: 4
fdt_device_get_interrupt("plic@c000000", 8)
  context 8
    cause: 9
    hartId: 4
reserve_io_interrupt_vectors: reserved 137 vectors starting from 0
register_child_devices: 0 nodes registered
Last message repeated 231 times.
get_boot_partitions(): boot volume message:
KMessage: buffer: 0xffffffc0026d5d18 (size/capacity: 255/255), flags: 0xa
  field: "partition offset"  (LLNG): 2830090240 (0xa8afc000)
  field: "packaged"          (BOOL): true
  field: "boot method"       (LONG): 0 (0x0)
  field: "disk identifier"   (RAWT): data at 0xffffffc0026d5dc8, 79 bytes
get_boot_partitions(): boot method type: 0
intel: ep_std_ops(0x1)
intel: ep_std_ops(0x2)
intel: pm_std_ops(0x1)
intel: pm_std_ops(0x2)
dos_std_ops()
dos_std_ops()
KDiskDeviceManager::InitialDeviceScan() returned error: No such file or directory
PANIC: did not find any boot partitions! 
Welcome to Kernel Debugging Land...
Thread 17 "main2" running on CPU 2
Stack:
FP: 0xffffffc006878940
FP: 0xffffffc006878960, PC: 0xffffffc0021554b6 <kernel_riscv64> arch_debug_call_with_fault_handler + 32
FP: 0xffffffc0068789b0, PC: 0xffffffc0020d5ecc <kernel_riscv64> debug_call_with_fault_handler.localalias + 128
FP: 0xffffffc006878a40, PC: 0xffffffc0020d724c <kernel_riscv64> _ZL20kernel_debugger_loopPKcS0_Pvi + 320
FP: 0xffffffc006878ab0, PC: 0xffffffc0020d75f2 <kernel_riscv64> _ZL24kernel_debugger_internalPKcS0_Pvi + 284
FP: 0xffffffc006878af0, PC: 0xffffffc0020d7884 <kernel_riscv64> panic + 86
FP: 0xffffffc006878f70, PC: 0xffffffc002121d42 <kernel_riscv64> vfs_mount_boot_file_system + 452
FP: 0xffffffc006878fc0, PC: 0xffffffc002098616 <kernel_riscv64> _ZL5main2Pv + 220
FP: 0xffffffc006878fe0, PC: 0xffffffc0020ba234 <kernel_riscv64> _ZL19common_thread_entryPv + 52
FP: 0x0, PC: 0xffffffc002154288 <kernel_riscv64> arch_thread_entry + 0
initial commands:  syslog | tail 15
Last message repeated 231 times.
get_boot_partitions(): boot volume message:
KMessage: buffer: 0xffffffc0026d5d18 (size/capacity: 255/255), flags: 0xa
  field: "partition offset"  (LLNG): 2830090240 (0xa8afc000)
  field: "packaged"          (BOOL): true
  field: "boot method"       (LONG): 0 (0x0)
  field: "disk identifier"   (RAWT): data at 0xffffffc0026d5dc8, 79 bytes
get_boot_partitions(): boot method type: 0
intel: ep_std_ops(0x1)
intel: ep_std_ops(0x2)
intel: pm_std_ops(0x1)
intel: pm_std_ops(0x2)
dos_std_ops()
dos_std_ops()
KDiskDeviceManager::InitialDeviceScan() returned error: No such file or directory
kdebug>

PCI bus, MSI interrupts and NVMe disk reading is working.

+PciControllerPlda::InitDriver()
 bus-range: 0 - 255
 interrupt-map:
   bus: 0, dev: 0, fn: 0, childIrq: 1, parentIrq: (5, 1)
   bus: 0, dev: 0, fn: 0, childIrq: 2, parentIrq: (5, 2)
   bus: 0, dev: 0, fn: 0, childIrq: 3, parentIrq: (5, 3)
   bus: 0, dev: 0, fn: 0, childIrq: 4, parentIrq: (5, 4)
 ranges:
   MMIO32 (0x82000000): child: 30000000, parent: 30000000, len: 8000000
   MMIO64 (0xc3000000): child: 900000000, parent: 900000000, len: 40000000
 regs: 2b000000, 01000000
 config: 940000000, 10000000
 skipping device
driver busses/pci/plda/driver_v1 init failed: General system error
register_child_devices: 0 nodes registered
+PciControllerPlda::InitDriver()
 bus-range: 0 - 255
 interrupt-map:
   bus: 0, dev: 0, fn: 0, childIrq: 1, parentIrq: (5, 1)
   bus: 0, dev: 0, fn: 0, childIrq: 2, parentIrq: (5, 2)
   bus: 0, dev: 0, fn: 0, childIrq: 3, parentIrq: (5, 3)
   bus: 0, dev: 0, fn: 0, childIrq: 4, parentIrq: (5, 4)
 ranges:
   MMIO32 (0x82000000): child: 38000000, parent: 38000000, len: 8000000
   MMIO64 (0xc3000000): child: 980000000, parent: 980000000, len: 40000000
 regs: 2c000000, 01000000
 config: 9c0000000, 10000000
fdt_device_get_interrupt("pcie@2C000000", 0)
MsiInterruptCtrlPlda::Init()
 irq: 57
 fMsiPhysAddr: 0x190
MsiInterruptCtrlPlda::InterruptReceivedInt()
allocate_io_interrupt_vectors: allocated 32 vectors starting from 137
 fMsiStartIrq: 137
-PciControllerPlda::InitDriver()
pci_init_deferred()
PCI: FixupDevices: checking bus 1 behind 1556:1111
PCI: dom 0, bus 0, dev  0, func 0, changed PCI bridge control from 0x0000 to 0x0003
PCI: [dom 0, bus  0] bus   0, device  0, function  0: vendor 1556, device 1111, revision 02
PCI:   class_base 06, class_function 04, class_api 00
PCI:   line_size 08, latency 00, header_type 01, BIST 00
PCI:   subsystem_id 0000, subsystem_vendor_id 0080
PCI:   primary_bus 00, secondary_bus 01, subordinate_bus 01, secondary_latency 00
PCI:   I/O window 0000-0fff
PCI:   memory window 38000000-380fffff
PCI:   prefetchable memory window 0000000900000000-00000009000fffff
PCI:   bridge_control 0003, secondary_status 0000
PCI:   interrupt_line 00, interrupt_pin 01
PCI:   ROM base host 00000000, pci 00000000, size ??
PCI:   base reg 0: host 00000000, pci 00000000, size 00004000, flags 0c
PCI:   base reg 1: host 00000000, pci 00000000, size 00000000, flags 00
PCI:   Capabilities: PCIe, MSI, PM
PCI:   Extended capabilities: Vendor Unique, Advanced Error Reporting
PCI: [dom 0, bus  1] bus   1, device  0, function  0: vendor 1987, device 5013, revision 01
PCI:   class_base 01, class_function 08, class_api 02
PCI:   line_size 08, latency 00, header_type 00, BIST 00
PCI:   ROM base host 00000000, pci 00000000, size 00000000
PCI:   cardbus_CIS 00000000, subsystem_id 5013, subsystem_vendor_id 1987
PCI:   interrupt_line 00, interrupt_pin 01, min_grant 00, max_latency 00
PCI:   base reg 0: host 0000000038000000, pci 0000000038000000, size 00004000, flags 04 00
PCI:   base reg 2: host 00000000, pci 00000000, size 00000000, flags 00
PCI:   base reg 3: host 00000000, pci 00000000, size 00000000, flags 00
PCI:   base reg 4: host 00000000, pci 00000000, size 00000000, flags 00
PCI:   base reg 5: host 00000000, pci 00000000, size 00000000, flags 00
PCI:   Capabilities: PCIe, MSI-X, MSI, PM
PCI:   Extended capabilities: Latency Tolerance Reporting, L1 Power Management Substates, Advanced Error Reporting, Secondary PCIe
register_child_devices: 0 nodes registered
Last message repeated 61 times.
get_boot_partitions(): boot volume message:
KMessage: buffer: 0xffffffc0026d9d18 (size/capacity: 255/255), flags: 0xa
 field: "partition offset"  (LLNG): 2830090240 (0xa8afc000)
 field: "packaged"          (BOOL): true
 field: "boot method"       (LONG): 0 (0x0)
 field: "disk identifier"   (RAWT): data at 0xffffffc0026d9dc8, 79 bytes
get_boot_partitions(): boot method type: 0
intel: ep_std_ops(0x1)
intel: ep_std_ops(0x2)
intel: pm_std_ops(0x1)
intel: pm_std_ops(0x2)
dos_std_ops()
dos_std_ops()
publish device: node 0xffffffc0077cd208, path disk/nvme/0/raw, module drivers/disk/nvme_disk/device_v1
register_child_devices: 0 nodes registered
nvme_disk: attached to NVMe device "SPCC M.2 PCIe SSD (7EF607140B6800005305)"
nvme_disk: 	maximum transfer size: 262144
nvme_disk: 	qpair count: 8
nvme_disk: namespace 0
nvme_disk: 	block size: 512, stripe size: 0
msix configured for 1 vectors
msi-x enabled: 0x8008
nvme_disk: using MSI-X
MsiInterruptCtrlPlda::EnableIoInterrupt(137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
slab memory manager: created area 0xffffffc001801000 (1322)
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
DMAResource@0xffffffc00709faa8: low/high 0/ffffffffffffffff, max segment count 126, align 4096, boundary 0, max transfer 262144, max segment size 18446744073709551615
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
intel: ep_std_ops(0x1)
intel: ep_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
EFI header: EFI PART
EFI revision: 10000
header size: 92
header CRC: 10fecf69
absolute block: 1
alternate block: 500118191
first usable block: 34
last usable block: 500118158
disk GUID: 971a5571-e75a-4297-ab81-d82a4f71c2c6
entries block: 2
entry size:  128
entry count: 128
entries CRC: 4511a4b3
EFI header: EFI PART
EFI revision: 10000
header size: 92
header CRC: b7c862a7
absolute block: 500118191
alternate block: 1
first usable block: 34
last usable block: 500118158
disk GUID: 971a5571-e75a-4297-ab81-d82a4f71c2c6
entries block: 500118159
entry size:  128
entry count: 128
entries CRC: 4511a4b3
[  0] partition type: c12a7328-f81f-11d2-ba4b-00a0c93ec93b
     unique id: 035ddb53-1ada-4240-922b-4376e757c98a
     start block: 40
     end block: 65575
     size: 31.999 MB
     attributes: 0
     name: esp
[  3] partition type: 0fc63daf-8483-4772-8e79-3d69d8477de4
     unique id: 2a34702b-93d3-44ff-8129-9c68a8e94119
     start block: 286720
     end block: 249204735
     size: 121541.999 MB
     attributes: 0
     name: root
[  4] partition type: 42465331-3ba3-10f1-802a-4861696b7521
     unique id: 37569eb1-c715-094c-a48e-574bcca7b7da
     start block: 249204736
     end block: 500117503
     size: 122515.999 MB
     attributes: 0
     name: Haiku-nvme
intel: pm_std_ops(0x1)
intel: pm_identify_partition(0, 0: 0, 256060514304, 512)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: Found GPT signature, ignoring.
intel: pm_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
btrfs: [24258499:    17] invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mexfat:e[0m invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mext2:e[0m invalid superblock!
identify(0, 0xffffffc0077d6cc0)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
ntfs: error: identify_partition: boot signature doesn't match
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
dos_std_ops()
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
dos_std_ops()
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
efi_gpt_scan_partition(cookie = 0xffffffc00700db60)
intel: ep_std_ops(0x1)
intel: ep_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x1)
intel: pm_identify_partition(0, 1: 20480, 33554432, 512)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
btrfs: [24418457:    17] invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mexfat:e[0m invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mext2:e[0m invalid superblock!
identify(0, 0xffffffc0077d6cc0)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
ntfs: error: identify_partition: boot signature doesn't match
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
dos_std_ops()
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
intel: ep_std_ops(0x1)
intel: ep_identify_partition(0, 146800640, 127446024192, 512)
intel: ep_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x1)
intel: pm_identify_partition(0, 2: 146800640, 127446024192, 512)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
btrfs: [24599677:    17] invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mexfat:e[0m invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
identify(0, 0xffffffc0077d6cc0)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
ntfs: error: identify_partition: boot signature doesn't match
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: ep_std_ops(0x1)
intel: ep_identify_partition(0, 127592824832, 128467337216, 512)
intel: ep_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x1)
intel: pm_identify_partition(0, 3: 127592824832, 128467337216, 512)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
intel: pm_std_ops(0x2)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
btrfs: [24753080:    17] invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mexfat:e[0m invalid superblock!
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
e[34mext2:e[0m invalid superblock!
identify(0, 0xffffffc0077d6cc0)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
ntfs: error: identify_partition: boot signature doesn't match
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
device 0: /dev/disk/nvme/0/raw
 media status:      No error
 device flags:      2
 offset:            0
 size:              256060514304 (244198.335 MB)
 content size:      256060514304
 block size:        512
 physical block size: 512
 child count:       3
 index:             -1
 status:            0
 flags:             5
 volume:            -1
 disk system:       partitioning_systems/efi_gpt/v1
 name:              <NULL>
 content name:      <NULL>
 type:              <NULL>
 content type:      GUID Partition Map
 params:            <NULL>
 content params:    <NULL>
 partition 1: /dev/disk/nvme/0/0
   offset:            20480
   size:              33554432 (32 MB)
   content size:      33554432
   block size:        512
   physical block size: 512
   child count:       0
   index:             0
   status:            0
   flags:             2
   volume:            -1
   disk system:       file_systems/fat/v1
   name:              esp
   content name:      esp
   type:              EFI system data
   content type:      FAT32 File System
   params:            <NULL>
   content params:    <NULL>
 partition 2: /dev/disk/nvme/0/1
   offset:            146800640
   size:              127446024192 (121542 MB)
   content size:      3637473280
   block size:        4096
   physical block size: 512
   child count:       0
   index:             1
   status:            0
   flags:             2
   volume:            -1
   disk system:       file_systems/ext2/v1
   name:              root
   content name:      cloudimg-rootfs
   type:              Linux data
   content type:      Ext2 File System
   params:            <NULL>
   content params:    <NULL>
 partition 3: /dev/disk/nvme/0/2
   offset:            127592824832
   size:              128467337216 (122516 MB)
   content size:      128467337216
   block size:        2048
   physical block size: 512
   child count:       0
   index:             2
   status:            0
   flags:             2
   volume:            -1
   disk system:       file_systems/bfs/v1
   name:              Haiku-nvme
   content name:      Haiku-nvme
   type:              Be File System
   content type:      Be File System
   params:            <NULL>
   content params:    <NULL>
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
PANIC: did not find any boot partitions! 
Welcome to Kernel Debugging Land...
Thread 17 "main2" running on CPU 2
Stack:
FP: 0xffffffc00687c940
FP: 0xffffffc00687c960, PC: 0xffffffc0021554b6 <kernel_riscv64> arch_debug_call_with_fault_handler + 32
FP: 0xffffffc00687c9b0, PC: 0xffffffc0020d5ecc <kernel_riscv64> debug_call_with_fault_handler.localalias + 128
FP: 0xffffffc00687ca40, PC: 0xffffffc0020d724c <kernel_riscv64> _ZL20kernel_debugger_loopPKcS0_Pvi + 320
FP: 0xffffffc00687cab0, PC: 0xffffffc0020d75f2 <kernel_riscv64> _ZL24kernel_debugger_internalPKcS0_Pvi + 284
FP: 0xffffffc00687caf0, PC: 0xffffffc0020d7884 <kernel_riscv64> panic + 86
FP: 0xffffffc00687cf70, PC: 0xffffffc002121d42 <kernel_riscv64> vfs_mount_boot_file_system + 452
FP: 0xffffffc00687cfc0, PC: 0xffffffc002098616 <kernel_riscv64> _ZL5main2Pv + 220
FP: 0xffffffc00687cfe0, PC: 0xffffffc0020ba234 <kernel_riscv64> _ZL19common_thread_entryPv + 52
FP: 0x0, PC: 0xffffffc002154288 <kernel_riscv64> arch_thread_entry + 0
initial commands:  syslog | tail 15
   child count:       0
   index:             2
   status:            0
   flags:             2
   volume:            -1
   disk system:       file_systems/bfs/v1
   name:              Haiku-nvme
   content name:      Haiku-nvme
   type:              Be File System
   content type:      Be File System
   params:            <NULL>
   content params:    <NULL>
MsiInterruptCtrlPlda::InterruptReceivedInt()
MSI IRQ: 0 (137)
 istatusLocal: 0x880000
kdebug> 

It booted to GUI!


I finally got Haiku desktop with USB working. Booted from NVMe. Four CPU cores are working.

11 Likes

Case: Acrylic Case for Visionfive 2

4 Likes

Nice! Even if I’m not a fan of Haiku itself, I bet it could be a “conventional” RISC-OS for RISC-V hardware, so I watch this :eyes:

4 Likes

Looks great.
If you let me know how to get Haiku up and it is stable, I may be able to port Cuis Smalltalk (also runs under riscv64/VisionFive under Linux via X11 or framebuffer).

I’ve not been able to build the VF2 Haiku image yet. I need to work out how to cross compile Haiku packages first.

1 Like

This is amazing. Great work. Please share a download of your image on archive.org or Google Drive. I would love to run this on my VisionFive 2

There is no image and its not trivial to build Haiku for the VF2 currently.

There might be some confusion, I was replying to Chloe’s post.

As Chloe has it running I am asking Chloe to take the NVME storage on the VisionFive 2 that is running Haiku and make an image of it

I don’t believe I replied to your post but if I did it was in error

Seems you’re a bit confused. Chloe copy/pasted X512’s post from the Haiku forums.If you go look at the the source thread on the Haiku forums, you will see I’ve been the main person quizzing X512 and attempting to reproduce their build without success. I doubt Chloe knows much more than I do but if they do - great!

Oh I am aware Chloe was posting partially using using X512’s post but I was under the impression that Chloe had gotten Haiku running. No need for Haiku on the VisionFive 2 to be individually built each time someone wants to run it if someone already has built it, ya know? They can just image the storage. After all we are all on the same platform. In any event yeah I was asking Chloe, not you. Good luck in your endeavour!

If you had read the original forum post you’d see that myself and a few others have already requested X512 provide build instructions or ideally upload an image but they haven’t done so yet for whatever reason. X512 has provided a few hints towards building it but thats all at this point.

I have been successful in getting the Haiku image for the VF2 to build but I’ve not been able to get it to boot yet.

See the Haiku forum thread for all the details.

Sorry for the late reply. I’ve been really busy recently.
I’ve seen a lot of updates on this topic, and hope this link can help you:Progress on running Haiku on VisionFive 2 - #68 by danboid - OS - Haiku Community

2 Likes

I have now got Haiku booting directly from NVMe on my VF2!

I’ve not been able to get any of my USB keyboards to work with it so its not quite ready to be a daily driver yet but its still amazing to see Haiku running on such a new platform. Hopefully it won’t take too much longer to become usable.

EDIT

USB keyboards DO work, just not at the same time as a mouse, due to a known bug (or missing feature) in Haiku’s support for integrated USB 3 hubs it seems. You can only use a USB keyboard or a USB mouse as it stands but there are a couple of Haiku apps that provide an onscreen keyboard as a workaround.

5 Likes

This is AMAZING. Actually the most impressive thing about this board so far is the rapid community support of an Operating System. Not to pleased with the company behind the hardware or their progress, but consistently astounded by the community.

2 Likes