[root@p550:~]# lspci
00:00.0 PCI bridge: Device 1fe1:2030 (rev 01)
01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GA106 High Definition Audio Controller (rev a1)
[root@p550:~]# rmmod nouveau
[root@p550:~]# modprobe nouveau
[ 266.049389] genirq: Flags mismatch irq 12. 00000080 (nvkm) vs. 00000000 (ccache_ecc)
[Fri Jul 5 18:07:20 2024] genirq: Flags mismatch irq 12. 00000080 (nvkm) vs. 00000000 (ccache_ecc)
[Fri Jul 5 18:07:20 2024] nouveau: probe of 0000:01:00.0 failed with error -16
And on other occasions:[ 1.382830] nouveau 0000:01:00.0: Adding to iommu group 5
[ 1.382892] nouveau 0000:01:00.0: enabling device (0000 -> 0003)
[ 1.391069] nouveau: probe of 0000:01:00.0 failed with error -16
To unsubscribe from this group and stop receiving emails from it, send an email to devboard-commun...@riscv.org.
Seems like you are a not on
the correct branch? You probably want to be on
https://github.com/sifive/riscv-linux/commits/rel/kernel/hifive-premier-p550/
and the latest commit is 022315aa62e5160face9de04d895090794d088b2
which is what I am using. You also want to make sure you have a
recent release of linux-firmware installed and the correct
decompressors in your kernel (I'll attach my kernel config as
well).
That branch has the all import ELF Relocation Optimization patch, that will make many errors go away and improve system performance overall. I'm attaching the path I use for that which enables FPU support in the kernel for the AMDGPU driver on rDNA based cards. With those patches, I'm down to the following errors with an RX5500:
[ 13.871647] amdgpu 0000:03:00.0: amdgpu: Fetched VBIOS from ROM BARI'll try the nouveau cards again by EOW.
-Carl
The kernel commit is tagged as the Ubuntu release. I don't know if the image is available yet, but it's pretty easy to make one. I'm currently running Arch off a SATA SSD, but using debootstrap to get Ubuntu installed is pretty simple as well.
-Carl
Yes, with some major caveats: like most boards that have come out recently all the EIC7700 based boards have eMMC, and that is where the SPL, OpenSBI, and U-Boot live. You can also boot of the SD card slot. You can't boot off SATA or NVMe directly. Unlike many of the recent boards, the U-Boot is extremely modern and has most of it's options turned on (including extlinux support, SATA support, and NVMe support). So my system has a small ext2 boot partition on the eMMC which then can pull kernels and initrds from the SATA SSD. The other major problem is the PCIe interface: the EIC7700 only has a single PCIe root port with 4 lanes. On the P550 it's wired to the x16 mechanical slot (it's still only x4 electrical). You can put an M.2 adapter in there to use an NVMe drive, but then you limited to a single PCIe device so that precludes having a GPU as well. The Megrez board seems to have the single port wired to both an M.2 slot and a x4 Mechanical and Electrical slot so you can choose to use either (but not both). So if fast storage is your desire, it's possible.
-Carl
Thank you for that update Samuel! I will point my packages at your kernel tomorrow and try again. Looking forward to sharing the results.
-Carl
Yes, the reason I am using the dev branch instead of the rel
branch is because of a compiler error relating to the IMG_VOLCANIC
stuff that's in the p550 defconfig, this error does not exist on
the dev branch. But I can just disable the volcanic GPU for now in
order to try your suggestions.
In file included from
../include/linux/string.h:294,
from ../include/linux/bitmap.h:11,
from ../include/linux/cpumask.h:12,
from ../include/linux/smp.h:13,
from ../include/linux/lockdep.h:14,
from ../include/linux/mutex.h:17,
from
/build/source/drivers/gpu/drm/img/img-volcanic/include/lock_types.h:53,
from
/build/source/drivers/gpu/drm/img/img-volcanic/services/shared/include/lock.h:50,
from
/build/source/drivers/gpu/drm/img/img-volcanic/services/shared/include/sync_internal.h:52,
from
/build/source/drivers/gpu/drm/img/img-volcanic/services/server/include/device.h:54,
from
../drivers/gpu/drm/img/img-volcanic/services/server/devices/volcanic/rgxdevice.h:53,
from
../drivers/gpu/drm/img/img-volcanic/services/server/devices/volcanic/rgxdebug.c:48:
In function 'strlcpy',
inlined from '_FillAppForFWFaults' at
../drivers/gpu/drm/img/img-volcanic/services/server/devices/volcanic/rgxdebug.c:1126:5,
inlined from '_RecordFaultInfo' at
../drivers/gpu/drm/img/img-volcanic/services/server/devices/volcanic/rgxdebug.c:1281:7,
inlined from '_RGXDumpFWHWRInfo' at
../drivers/gpu/drm/img/img-volcanic/services/server/devices/volcanic/rgxdebug.c:2154:7:
../include/linux/fortify-string.h:255:25: error: call to
'__write_overflow' declared with attribute error: detected write
beyond size of object (1st parameter)
255 | __write_overflow();
| ^~~~~~~~~~~~~~~~~~
Using Samuel's branch, I can confirm that every Radeon card I have is now working:
radeon driver tested with HD6450
amdgpu driver tested with RX240 RX550 RX590 RX5500 RX6600
I've decided to make two variants of the kernel, one with the iGPU support enabled and one without. The DGPUs work with the iGPU enabled but there are weird quirks: Wayland is very unstable, there are phantom monitors, you never get a text console on the DGPU, etc. Sadly the drivers for the ESWIN DRM driver and the IMG GPU cannot be built as modules, hence why I've decided to split into two drivers. I'll be posting both to GitHub later today and I'll reply here with links once I do. I just need the DGPU only kernel to compile and then run some quick tests.
The other thing I am going to try and debug over the weekend is nouveau driver support. I've bumped the logging levels so hopefully I can get more insight other than "Error -19". I'll keep everyone posted.
-Carl
Here are my repos with configs and pointers to the source trees. This first one enables various dGPUs and the iGPU:
https://github.com/edolnx/linux-edolnx-sifive-p550
And this one does not enable the iGPU, and only supports dGPUs:
https://github.com/edolnx/linux-edolnx-sifive-p550-dgpu
I've built the configs so that they should be friendly to most distros. I'm building on Arch, but it has a lot of the necessary options enabled to be used on Fedora as well (mostly xz initramfs and firmware support).
Feedback welcome, still working on nouveau/nvidia compatibility and getting the text console working (which is being very stubborn for some reason).
-Carl