Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Kernel Geräte Namen werden willkürlich vergeben.
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 4160
Location: Bavaria

PostPosted: Wed Jul 26, 2023 5:37 pm    Post subject: Reply with quote

Nachricht als Moderator: Persönliches - insbesondere beleidigende Worte - sollten hier unterlassen werden. Ich sperre den Thread mal für 24 Stunden bis alle sich etwas beruhigt haben.

Edit 2023-07-27: Und wieder entsperrt.
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 565
Location: münchen.de

PostPosted: Thu Jul 27, 2023 12:26 pm    Post subject: Reply with quote

Die CPU ist über die Hostbridge mit den PCI und PCI-E Devices verbunden. Bei Power-On (!) "findet" die CPU diese Devices, vergibt eine Adresse und erkennt die Funktionalität des Geräts. Dieser Vorgang ist initiert von der CPU und die Informationen werden dabei im PCI Configuration Space abgelegt. Diese PCI Configuration wird dann von BIOS und Kernel verwendet. Der Kernel holt sich die Konfiguration der verfügbaren PCI und PCI-E Devices ab, erkennt Vendor ID, Device ID, physical Location etc. Wenn der Kernel das alles als valide akzeptiert, wird das Gerät zu den verfügbaren Geräten hinzugefügt und der Userspace benachrichtigt. Hier erst kommt udev ins Spiel. Udev wird hauptsächlich dazu verwendet, um /dev/ mit Device Nodes und Symlinks zu füllen (z.B. /dev/dri/card0). Man will ja nicht die kryptischen Device IDs bzw Adressen direkt nutzen.

Witzigerweise könntest du ausgerechnet udev mit seinen Regeln verwenden, wenn die Hardware Device ID Vergabe anscheinend zufällig funktioniert, um z.B. immer die gleichen Symlinks per Device in /dev/ zu erstellen. Aber das wird dir bei der X11 Config wohl nicht helfen, da man dort (wenn überhaupt) die BusID angibt. Und die muss man meines Wissens nur bei Dual-Card Konfigurationen angeben. Hat eine deiner CPUs eine Onboard GPU?

Da du Determinismus scheinbar magst, wäre auch ein deterministisches Vorgehen angebracht:
* Wann trat das Problem zum ersten Mal auf? Gab es da eine Änderung?
* Ist nur Gentoo oder dein aktuell eingesetzter Kernel betroffen?
* Wenn du meinst udev ist Schuld, dann teste doch mal eudev, mdev, oder besser noch statische /dev/ Nodes
* Tritt das Problem auch mit einer anderen Grafikkarte oder auf anderen Mainboards auf?
* Tritt das Problem auch auf, wenn du eine deiner CPUs (falls möglich) im BIOS deaktivierst oder (falls deaktivieren nicht möglich) temporär ausbaust?

Für mich sieht das so aus, als ob sich die Bus Number (Teil dieser ID) des PCI-E Devices ändert. Das würde darauf hindeuten, dass nach dem Power On jeweils die andere CPU (mit anderem Hostbridge Bus) dein Device erkennt und unterschiedliche Adressen in den PCI Configs für BIOS, Kernel und dadurch den User Space zur Verfügung stellt. Vielleicht stellen auch beide CPUs solche Configs bereit und BIOS oder Kernel wählen die Main CPU per Zufall (ich hab die Spec jetzt nicht gelesen).



PS: Alles was du seit deinem zweiten Post hier geschrieben hast, sagt mehr über deine Persönlichkeit als über dein technisches Problem aus. Bisher hast du alle angepöbelt, die dir helfen wollten.

PPS: Ja, dieser "Schrott" um die "bekloppte" dynamische Erkennung und ID Vergabe beginnt bereits auf Hardware Ebene und ist seit den frühen 90ern fixer Bestandteil in PCI und PCI-E Protokollen. Mit Hardware-Jumpern auf dem Mainboard wäre das nicht passiert!!!11
Mach die Augen auf! Die Verschwörung gegenüber uns Linux-Usern geht weit über udev, systemd, Rust und Co hinaus! In früheren Inkarnationen waren da Intel, M$ und BigBlue maßgeblich beteiligt. Und jeder weiß doch, von wem die unterwandert sind.

PPPS: Wer Kritik findet darf lachen, Sarkasmus bleibt aber weiterhin verboten!
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5191

PostPosted: Thu Jul 27, 2023 5:00 pm    Post subject: Reply with quote

alexander_ro wrote:
Ja aber mein Rechner ist nicht der einzige der zwei CPUs hat dann ist das kein Problem meiner Hardware sondern der Software die damit nicht umgehen kann.
Womit wir nach euren Aussagen wieder bei udev und den Systemd Machern wären der das nicht kann trotz anders lautender Angaben von FreeDesktop.

Tja nur das andere system mit multi socket CPUs halt nicht das problem haben. Besonders im Server space ist mir das nie untergekommen da ist nach jedem reboot die networkdevices nicht immer die gleichen device name haben (mit dem neuen namens schema)
Und du unterliegst einen Missverständniss, welches durch unwissenheit entsteht, wieso die alte namensvergabe der netzwerkgeärte ein Problem ist.

Die Initialisierung der pci-ids ist in einem system statisch, wenn die HW ausstattung statisch ist und der gleiche initialisierungsweg genutzt wird.
Und aktuell sieht es so aus als ob bei deinem system der zweite part (Der gleiche Initialisierungsweg) nicht gegeben ist.

Ja eth0-ethX wird vom kernel vergeben und zwar in der reihenfolge wie der kernel die im system vorhandenen Netzwerkkarten vollständig initialisieren kann.
z.b. Wir haben ein System, mit einer CPU, mit 3 "PCI-Slots" (und hier ist nicht ein physikalischer slot gemeint)
Slot1, Slot2 und Slot3

Die hardware enumeriert beim Startup die Slots immer in dieser reihenfolge:
Slot1, Slot2, Slot3
Dementsprechend sind die PCI-IDs auch immer gleich z.b.
Slot1 = PCIID-01
Slot2 = PCIID-02
Slot3 = PCIID-03

An Slot2 und Slot3 ist jeweils eine Netzwerkkarte angeschlossen.
Die initialisierung von PCI geräten im Linux Kernel erfolgt aktuell, soweit ich das weis, parallel (um den boot process zu beschleunigen)

Das bedeutet der Kernel prüft parallel die "PCI-Slots" Slot1, Slot2 und Slot3 ob an dem ein Gerät angeschlossen ist und wenn ja wird das gerät dann versucht zu initialisieren (wenn ein treiber vorhanden ist)
In unserem Beispiel findet der Kernel am Slot2 und Slot3 dass da eine Netzwerkkarte angeschlossen ist und versucht diese zu initialisieren
Die Karte im Slot2 wird dabei zu erst vollständig initialisiert und bekommt den device namen eth0
Die Karte im Slot3 wird kurze Zeit später (eventuell nur ein paar nano sekunden) vollständig initialisiert und bekommt den device namen eth1.

Mit etwas Glück verläuft dieser process bei jedem start des systems wie oben beschrieben wodurch die zuordnung
Slot2 = eth0 und Slot3 = eth1 immer gegeben ist.

Aber wehe die Netzwerkkarte in Slot2 braucht mal beim start etwas länger um vollständig initialisiert zu werden (da braucht es nur ein paar zusätzliche nano sekunden)
Dadurch wird die Karte im Slot3 zu erst initialisiert und bekommt den device namen eth0
Und die karte im Slot2 bekommt den device namen eth1
Und schon ist die Zuordnung nicht mehr eindeutige .
Der andere fall wo die zuordnung sich ändert ist der fall wenn Änderung an der HW gemacht wird.
z.b. In Slot1 wird eine weitere Netzwerkkarte eingebaut, welche zu erst vollständig initialisiert wird und dadurch zu eth0 wird
Oder die Netzwerkkarte in Slot2 wird entfernt, dann ist auf einmal die Karte in Slot3 eth0

Mit dem neuen namensschema existiert das Problem nicht.
Das bekommt die Netzwerkkarte im SlotX immer die Bezeichnung z.b. en(für ethernet)slotX
Im beispiel setup würde es dann sol aussehen:
Slot2 = enslot2
Slot3 = enslot3

Und da ist es egal in welcher Reihenfolge die Netzwerkkarten in den Slots vollständig initialisiert werden oder ob eine karte entfernt oder hinzugefügt wird.

Wie schon forrestfunk81 geschrieben hat scheint es so dass bei deinem system auf einmal bei jedem start die vewendete CPU für die initiale enumeration der pci geräte wechselt, wodurch sich die pci-ids ändern da die eine CPU wahrscheinlich über eine weitere "Bridge" mit den "pci-slots" verbunden ist, an denen deine GPU und die beiden Netzwerkkarten hängen.

Falls der name der selben netzwerkkarte immer zwischen (von dir genannt) enp7s0f1 und enp8s0f1 wechselt.
Also das beim start des systems die selbe karte immer eine der beiden namen bekommt dann liese sich das ganze wie folgt lösen;
leg einfach für beide devices separate konfigurationen mit identischen werten an.
Da die selbe Netzwerkkarte immer einen der beiden Namen bekommt und die andere Karte zwischen zwei anderen namen wechselt werden die Netzwerkkarten immer mit ihrer konfiguration konfiguriert.

Ähnlich wie bei den Netzwerkkarten könnte man das auch mit der GPU lösen.
Wenn deren PCI-ID immer zwischen zwei IDs wechselt könntest du einfach auch hier einen dupliakten konfigurationseintrag erstellen, falls die angabe von mehrere PCI-IDs für einen Eintrag nicht funktioniert.

Um zu prüfen ob die Vermutung richtig ist, dass das System beim start zwischen den beiden CPUs springt, welche als "BOOT CPU" genutzt wird könntest du folgendes machen:
Falls es im BIOS/FW geht, deaktiviere mal einen der beiden CPU sockel
Falls es nicht via BIOS/FW dann müsste man zum testen einen der beiden CPUs ausbauen.

Wenn dann nur mit einer CPU gebootet wird, so sollte sich die pci-ids zwischen neustarts sich nicht ändern.

Unabhängig davon liegt dein Problem sehr wahrscheinlich an einem HW/FW fehler und die Software, wie udev und co, haben keinerlei Schuld!
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum