Trying to get opensuse running on an R3. The kernel loads & runs, but fails to mount the ssd & eventually fails to emergency mode where I can log in.
Kernel is 6.6.2 & I am using the generated dts blob for that kernel.
Loading the nvme & pcie_mediatek_gen3 modules, I would have thought that would be enough to create the devices, but no. There is not even a sniff of /dev/nvme0 or its children.
It would appear that for some reason pinctrl-moorefield is taking precedence over pinctrl-mt7986. Other than rebuilding the kernel, is there anyway of prioritising mt7986 over moorefield?
[ 4.890363][ T38] mt7986a-pinctrl 1001f000.pinctrl: pin GPIO_4 already requested by pinctrl_moore:521; cannot claim for 11280000.pcie
[ 4.902586][ T38] mt7986a-pinctrl 1001f000.pinctrl: pin-9 (11280000.pcie) status -22
[ 4.916687][ T38] mt7986a-pinctrl 1001f000.pinctrl: could not request pin 9 (GPIO_4) from group pcie_clk on device pinctrl_moore
Well, I applied the patch to pcie-mediatek-gen3.c & I just deleted the reset-key section, but it still fails. I also loaded up a shed load of kernel modules to see if something was missing, but still nothing.
Does anyone have a working config for >=6.6 kernels that I can try?
I am sure no one is interested, but doing make modules on the R3 takes about 26 hours on a single core, and it need some swap. The swap was created on the nvme whilst running & building on openwrt.
I run archlinuxarm on the R3. The packages also need to be built on the same architecture. Then I modified the linux-kernel package to use the cross-compiler if makepkg is run from x86_64.
My defconfig is here (it is not a config, but defconfig):
It is an archlinuxarm package, but it is also simply a .tar.xz archive file, so easy to extract. Filename will change when version updates.
I can double-check if exactly this version works with my nvme (on my R3mini at the moment) later this week, but it should be fine.
Perhapse the hardware is not compatible? We should keep a list of know working nvme devices… Perhaps openwrt adds a quirk for your nvme if there it works ok?
Yes, built with your defconfig. Just copied across, make deconfig, all & install. Same source, same devicetree, nothing else changed. Still a few issues though such as the nvme root being mounted ro, but progress.
Trying to get it to run with the standard opensuse install, that is, without having to resort to rebuilding the kernel. Like I said earlier, it’s for fits’n;giggles.
The default arm64 defconfig should have all needed for all plattforms (and maybe all other compiled as module) which makes it also very large…but this is a personal decision…i like as small as possible kernels
The loading of the kernel module fails with trying the PCIE_PE_RSTB call.
After applying the 611-pcie-mediatek-gen3-PERST-for-100ms.patch patch, everything, return codes, parameters etc up to the following is identical between builtin & module: