[systemd-devel] Proposal: Add biosdevname naming scheme to systemd

Lukáš Nykrýn lnykryn at redhat.com
Fri Feb 5 06:08:34 PST 2016


Jordan Hargrave píše v Čt 04. 02. 2016 v 13:24 -0600:
> 
> 
> On Tue, Oct 20, 2015 at 10:04 PM, Jordan Hargrave <jharg93 at gmail.com>
> wrote:
> > On Tue, Oct 20, 2015 at 3:02 PM, Andrei Borzenkov <
> > arvidjaar at gmail.com> wrote:
> > > 20.10.2015 17:30, Jordan Hargrave пишет:
> > >
> > >> On Tue, Oct 20, 2015 at 1:15 AM, Andrei Borzenkov <
> > arvidjaar at gmail.com>
> > >> wrote:
> > >>>
> > >>> On Tue, Oct 20, 2015 at 7:46 AM, Jordan Hargrave <
> > jharg93 at gmail.com>
> > >>> wrote:
> > >>>>
> > >>>> On Mon, Mar 2, 2015 at 1:17 PM, Tom Gundersen <teg at jklm.no>
> > wrote:
> > >>>>>
> > >>>>> Hi Jordan,
> > >>>>>
> > >>>>> On Mon, Mar 2, 2015 at 4:45 PM, Jordan Hargrave <
> > jharg93 at gmail.com>
> > >>>>> wrote:
> > >>>>>>
> > >>>>>> There are currently two competing naming mechanisms for
> > network cards,
> > >>>>>> biosdevname and systemd.  Systemd currently has some
> > limitations on
> > >>>>>> naming
> > >>>>>> cards that use network partitioning or support SR-IOV.
> > >>>>>
> > >>>>>
> > >>>>> Could you point to an example so we can fix it? I thought all
> > bug
> > >>>>> reports had been handled, but maybe I lost track of
> > something.
> > >>>>>
> > >>>>
> > >>>> I have a quad-port NIC:
> > >>>> 0000:40:00.0 = PCIE bridge (SMBIOS Slot 2)
> > >>>> 0000:41:00.0 = Ethernet Device (port1)
> > >>>> 0000:41:00.1 = Ethernet Device (port2)
> > >>>> 0000:42:00.0 = Ethernet Device (port3)
> > >>>> 0000:42:00.1 = Ethernet Device (port4)
> > >>>>
> > >>>> biosdevname would name these p2p1, p2p2, p2p3, p2p4
> > respectively.
> > >>>>
> > >>>
> > >>> How does it determine that 41 and 42 are the same device? I.e.
> > how
> > >>> does it differ from real bridge with two independent two-port
> > cards
> > >>> behind? Could you explain what information it is using? Is it
> > exported
> > >>> in sysfs?
> > >>>
> > >>> ...
> > >>
> > >>
> > >> It knows they are on the same slot as the parent device has
> > SMBIOS
> > >> Slot#2 (Type 9).  So all child devices of a physical slot are on
> > the
> > >> same card.  I'm currently using a patch to systemd that reads
> > SMBIOS
> > >> type 9.  There isn't a kernel sysfs variable that displays this.
> > >>
> > >
> > > This gives us slot ID, but how do we know which of function 0 on
> > this slot
> > > ID is port 0 and which is port 2? There is nothing in SMBIOS
> > description of
> > > Type 9 that answers it.
> > 
> > 
> Looking for a resolution for this.. adding port numbers to systemd
> enumeration of devices in PCI slots.
> 
> Systemd still doesn't have the concept of a 'Port' number, so multi
> -port NICs get named with enp<BUS>s<DEV>f<FUNC> instead of
> ens<SLOT>p<PORT>.
> 
> There needs to be a way to generate systemd names that have the
> following variables for add-in cards:
>   Slot Number
>   Port Number
>   Instance Number (for SR-IOV or Network Partitioned devices)
> 
> It is possible to calculate the port number without any knowledge of
> sibling devices.  Requires knowledge of device PCI ID, parent tree
> and 'dev_port' attribute (for mellanox cards). Then the devices could
> be named ensSLOTpPORT

Aren't we already doing that with:

s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number



More information about the systemd-devel mailing list