On Mon, Mar 06, 2023 at 03:05:42PM +0100, Kevin Keijzer via coreboot wrote:
> Hello,
> 
> I've been trying to figure out how predictable interface naming works,
> especially the "on-board index number", that the firmware apparently
> passes(?)
> 
> I'm currently working on a port for the ASRock B75M-ITX, which has a Realtek
> NIC as PCI device 03:00.0. The Linux kernel calls this device enp3s0, which
> makes sense and works fine. However, on my ASUS P8Z77-V and my Lenovo X230,
> the Intel NIC is called eno0, which makes more sense, because it's "ethernet
> onboard 0" and not a physical network card stuck in a PCI Express slot.
> 
> At first I thought that maybe this was an e1000e-specific way of naming
> interfaces, but at the office I have an old Gigabyte GA-G41M-ES2L-based file
> server, running coreboot, also with a Realtek NIC, also being PCI device
> 03:00.0, which is called eno0 by the kernel as well, with enp3s0 as altname.
> (So it's not that.)
> 
> I ended up reading about the interface (re)naming process, which seems to be
> handled by systemd-udevd [1]:
> 
~~~~
> 
> It looks like my B75M-ITX currently uses option 3, while I want it to use
> option 1, like all my other machines do. So according to the documentation,
> interfaces called enoX or ensX use index numbers provided by the firmware.
> However, I have no idea how or where this is defined. I would expect
> something to be in devicetree.cb, but I can't see anything seemingly related
> anywhere.
> 
> So my question is: how does coreboot pass "index numbers for on-board
> devices" to the kernel / udev, and how can I define them properly on boards
> where this is not working the way it should?
> 

I think you simply need to explicitly list the device in the device tree, and a
SMBIOS type 41 entry will be generated automatically.  See 
https://github.com/coreboot/coreboot/blob/73e9ac66ad8ff8f4b15389b5685f808ac20e204c/src/arch/x86/smbios.c#L1318

And for instance

https://github.com/coreboot/coreboot/blob/b5df65a9aaee50421913ace6d7a4b35e0ddff676/src/mainboard/supermicro/x9scl/devicetree.cb#L23-L25

https://github.com/coreboot/coreboot/blob/b5df65a9aaee50421913ace6d7a4b35e0ddff676/src/mainboard/supermicro/x9scl/devicetree.cb#L32-L38

Seems with CONFIG_SMBIOS_TYPE41_PROVIDED_BY_DEVTREE you can even control
which NIC gets what index if you have more than one.
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to