Arch Linux Image for VisionFive 2

May be the two firmware files are not included in the initrd image?

They are included:

$ lsinitcpio /boot/initrd.img-5.15.2-cwt13.orig | grep rgx
usr/lib/firmware/rgx.fw.36.50.54.182
usr/lib/firmware/rgx.sh.36.50.54.182
$ lsinitcpio /boot/initrd.img-5.15.2-cwt13.orig | grep rgx
usr/lib/firmware/rgx.fw.36.50.54.182
usr/lib/firmware/rgx.sh.36.50.54.182

lsinitcpio to files and compare …

$ diff /tmp/orig.txt /tmp/new.txt 
0a1
> VERSION
12,13d12
< etc/modprobe.d/rtl88x2bu.conf
< etc/modprobe.d/rtw8822bu.conf
202a202
> usr/lib/libc.so.6
207d206
< usr/lib/libcrypto.so.3
210c209
< usr/lib/libc.so.6
---
> usr/lib/libcrypto.so.3
223a223
> usr/lib/libm.so.6
226d225
< usr/lib/libm.so.6
271c270
< usr/lib/systemd/libsystemd-shared-253.4-1.so
---
> usr/lib/systemd/libsystemd-shared-253.5-2.so
288d286
< VERSION

However, we’re getting closer. One firmware file in the original initramfs is different from the firmware file on the image (same name).

From lsinitcpio -v and diff the two:

< -rw-r--r--   0 root     root       122880 Jan  1  1970 usr/lib/firmware/rgx.fw.36.50.54.182
---
> -rw-r--r--   0 root     root       126976 Jan  1  1970 usr/lib/firmware/rgx.fw.36.50.54.182

I think we have a winner. Next, copy the firmware file from the original initramfs and build a new one.

Done.

  • cwt13 shipped different rgx.fw.36.50.54.182 files in the initramfs and in /usr/lib/firmware (thank you upstream for providing two versions with the same name).
  • The rgx.fw.36.50.54.182 of 122880 bytes allows GPU initialisation without error
  • The not-working firmware file was on the file system, so generating a new initramfs would break GPU initialisation.
1 Like

And finally, cwt13 3.0.4-2 (packaged kernel) with rootfs on f2fs, properly initialised GPU.

1 Like

I have created new kernel packages and the GPU driver package based on the latest release VF2_v3.1.5. If you are already running the cwt13 image, you can simply download and install the following packages by running the commands below:

$ mkdir cwt14 && cd cwt14
$ wget https://github.com/cwt/pkgbuild-linux-cwt-starfive-visionfive2/releases/download/cwt14-3.1.5-1/linux-cwt-515-starfive-visionfive2-14.3.1.5-1-riscv64.pkg.tar.zst
$ wget https://github.com/cwt/pkgbuild-linux-cwt-starfive-visionfive2/releases/download/cwt14-3.1.5-1/linux-cwt-515-starfive-visionfive2-headers-14.3.1.5-1-riscv64.pkg.tar.zst
$ wget https://github.com/cwt/pkgbuild-linux-cwt-starfive-visionfive2/releases/download/cwt14-3.1.5-1/linux-cwt-515-starfive-visionfive2-soft_3rdpart-14.3.1.5-1-riscv64.pkg.tar.zst
$ wget https://github.com/cwt/aur-visionfive2-img-gpu/releases/download/cwt14-1.19.6345021-2/visionfive2-img-gpu-1.19.6345021-2-riscv64.pkg.tar.zst

Note that if you use the cwt13 image without the packaged kernel that came after the cwt13 image release, you will need to overwrite any existing files using the following command:

$ sudo pacman -U --overwrite "*" *.zst

Also, ensure that your /boot/extlinux/extlinux.conf file is correctly set up as follows:

default Arch

menu title U-Boot menu
prompt 0
timeout 50

label Arch
    menu label Arch Linux
    linux /vmlinuz
    initrd /initramfs-linux.img
    fdtdir /dtbs/
    append root=/dev/mmcblk1p4 rw console=tty1 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0 rootflags=defaults,discard=async,compress=lzo,user_subvol_rm_allowed,subvol=arch

Change /dev/mmcblk1p4 to /dev/nvme0n1p4 if you are already on NVMe SSD.

The new cwt14 image will be released later this week.

4 Likes

Excellent, no problems at all. Really nice to have packages rather than scraping files off an image.

3 Likes

Really didn’t expect this to work. cwt14, wayfire-git. Wobbly windows, cube.

The build script for cwt14 is complete. The new image differs from my previous images as it is now based on the latest Arch RISC-V rootfs, and the btrfs subvolumes are created according to the Arch Wiki guidelines. The kernel, StarFive’s soft_3rdpart, and the GPU driver are built and installed as packages. The image can be downloaded directly from the GitHub release page at Releases · cwt/Arch-VF2-Image · GitHub.

2 Likes

Can you explain your setup? I think many people want to try.

1 Like

Some notes. Too big to post here.

You can read them on your VF2.

1 Like

I Just update the Mesa to version 21.2.5. Could you try it please? Release v21.2.5-1 · cwt/aur-mesa-pvr-vf2 · GitHub

Thanks for the update.
I installed it. No user perceptible difference to the prior version.

1 Like

It didn’t fix the problem about the missing symbol, right?

The Arch’s official Mesa is version 23.x.x, this one is just version 21.x.x. @sajattack said it’s very hard to migrate pvr driver into the newer version, and from what I see in the 23 source code, there is a new driver name imagination-experimental, and also this: Imagination PowerVR Rogue GPU Vulkan Driver Merged Into Mesa 22.1 - Phoronix

May be we can use the new driver soon without patching.

It did not fix the missing symbol. I didn’t really expect it to, 21 → 23 is too big a jump. There seems to be a lot of work happening without much concrete detail.

For anyone who wanna try the Real-Time kernel, you can download from here: Release cwt14-rt 3.1.5-1 · cwt/pkgbuild-linux-cwt-starfive-visionfive2 · GitHub

1 Like

OK, it’s running here. I don’t need an RT kernel; I have a full backup so let’s see what happens. Nothing out of the ordinary so far.

@cwt, the dtbs/starfive/jh7110-visionfive-v2.dtb shipped in cwt14 differs in content from the same in cwt13 (it’s the only changed dtbs file).
The jh7110-visionfive-v2.dtb file from cwt14 limits RAM to 4GB on an 8GB system; the version from cwt13 does not have this limitation.

(note this is not dependent on the kernel version, both 5.15.2-cwt-3.1.5 and the rt kernel show this behaviour).

@stronnag $ free said it has only 4G? or 8G but you can’t actually allocate the memory more than 4G? because on my VF2 both version 1.2a and 1.3b said I still have 8G or RAM.

Edit: I just tried allocate 2GB of RAM on 3 dd at the same time, I can actually allocate 6GB of RAM successfully.