Hi Michael,

Just to finally get back to your other questions/comments.
Apart from the boot.scr issue (fixed by removing the boot.scr file), Core 171 is working well on the Ten64.

On Tue, Oct 4, 2022, at 7:56 PM, Michael Tremer wrote:
Hello Mathew,

Good to hear from you again...
[snip]

Will any of the changes in this patchset be incompatible with 6.0, or is it 
all in fact backported from mainline?

It's all backported from mainline. I'm not aware of any upcoming changes that will break things.

> There are four components to this patch:
> 1: Enable the relevant kernel options for our box
> This follows our doc at https://ten64doc.traverse.com.au/kernel/

I assume that this is all part of the upstream kernel. So I have no problem 
with enabling this. It should be very unlikely to break anything.

> 2: Add patches to fully support SFP+
> One of these patches came in after 5.15+, while the other
> fixes a deadlock issue that occurs when detaching/unloading
> the SFP+ ports (such as rebooting the system). Unfortunately
> this issue has been stalled upstream without resolution for
> a while now.

:(
The upstream experience for this particular SoC has been better than previous ones, but there are novel parts of it that breaks assumptions kernel (and other) developers have about network hardware. It's those parts which have been stalled upstream.

The network complex is not a "fixed function" device, network interfaces and PHYs can be connected in arbitrary pairs (for example, I could change the PHY of a running interface from an SFP to a 1000Base-T port). It basically has a pool of resources across all the network ports which one then configures the way they want.


> 3: Fix our real time clock (rtc-rx8025) not being modprobed
> I haven't been able to figure out why our RTC driver does not
> get loaded, given every other relevant module (like GPIO, I2C)
> does get loaded.
>
> If there is a better way to do this, feel free to NAK and
> suggest a better method.

This is kind of ugly. But it is not as bad as trying to load the module on 
all machines. You have a good way to determine if there is at least a chance 
to be successful.

I can live with this for now, but maybe it is a good idea to file a bug 
upstream and have them work on the module being automatically loaded as all 
the others?

I'm not sure if anything is broken with the upstream kernel, but I think I need to understand what causes a kernel module to be loaded without a modprobe first.

The bigger distributions deal with it by modprobing all the available *.ko's in initrd.
In our own kernel configuration for testing we just set CONFIG_RTC_RX8035=y so it's built-in.

I could do the same if you're happy to have it as a builtin (like the x86 BIOS/CMOS rtc.)

[snip]
> Here is the fireinfo from a Ten64:
https://fireinfo.ipfire.org/profile/97f7fd96a529ca2e5488ab095b7d9effe67d0ef3
> (Note to self: I should figure out how to improve the fireinfo output on 
> ARM platforms)

Oh, this is indeed a little bit short. Are the network interfaces not 
connected using PCIe or some other bus that can be enumerated?
Indeed, they come from a special "fsl-mc-bus".

My suggestion would be to crawl through the [sysfs] device/ and device/driver for each net class device to identify the full device path and driver.

$ ls /sys/class/net/
eth0  eth1  eth2  eth3  eth4  eth5  eth6  eth7  eth8  eth9  lo

$ readlink -f /sys/class/net/eth0/device/
/sys/devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.9
$ readlink -f /sys/class/net/eth1/device/
/sys/devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.8
..
$ readlink -f /sys/class/net/eth9/device/
/sys/devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.0

$ readlink -f /sys/class/net/eth0/device/driver
/sys/bus/fsl-mc/drivers/fsl_dpaa2_eth

$ ls -la /sys/bus/fsl-mc/drivers/fsl_dpaa2_eth/
drwxr-xr-x    2 root     root             0 Oct 10 05:33 .
drwxr-xr-x    8 root     root             0 Oct 10 05:33 ..
--w-------    1 root     root          4096 Oct 10 05:33 bind
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.0 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.0
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.1 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.1
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.2 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.2
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.3 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.3
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.4 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.4
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.5 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.5
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.6 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.6
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.7 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.7
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.8 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.8
lrwxrwxrwx    1 root     root             0 Oct 10 05:33 dpni.9 -> ../../../../devices/platform/soc/80c000000.fsl-mc/dprc.1/dpni.9
--w-------    1 root     root          4096 Oct 10 05:33 uevent
--w-------    1 root     root          4096 Oct 10 05:33 unbind


Regards,
Matt

> I have also tested this on an AWS Graviton (ARM64) instance
> to verify there are no regressions on other "standard"
> (EFI-capable) ARM64 systems.

That is very good to know. IPFire works like a charm on those :)

> Mathew McBride (4):
>  linux: enable options for NXP Layerscape
>  kernel: add patches for SFP support on NXP Layerscape/DPAA2 (arm64)
>  config: u-boot: bypass the u-boot script on Traverse Ten64
>  initscripts: load RTC module (RX8025) for Ten64 board:w
>
> config/kernel/kernel.config.aarch64-ipfire    | 76 +++++++++++++----
> config/u-boot/boot.cmd                        |  9 +++
> lfs/linux                                     |  3 +
> src/initscripts/system/setclock               |  8 ++
> ...rm64-dpaa2-add-support-for-10g-modes.patch | 39 +++++++++
> ...inux-5.15-arm64-dpaa2-fix-lock-issue.patch | 81 +++++++++++++++++++
> 6 files changed, 202 insertions(+), 14 deletions(-)
> create mode 100644 
> src/patches/linux/linux-5-15-arm64-dpaa2-add-support-for-10g-modes.patch
> create mode 100644 
> src/patches/linux/linux-5.15-arm64-dpaa2-fix-lock-issue.patch

Core Update 171 is technically closed, but I would suggest to still merge 
those patches into it, since the big testing phase has not yet been started.

I do not want to ship another kernel in the next update if we don’t have to, 
so it makes sense to have this merged now. It is very unlikely to break 
anything else.

@Peter: Could you please merge this? I will submit my tags shortly.

-Michael

>
> -- 
> 2.30.1
>