[gelöst] Priorität/Reihenfolge der Kernelmodule beim Start?

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Norcoen
Beiträge: 61
Registriert: 27.08.2013 19:08:03

[gelöst] Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von Norcoen » 19.12.2015 23:27:56

Guten Abend liebe Debianer,

kann mir jemand sagen, ob es eine Möglichkeit gibt Kernelmodule, die beim Start/boot geladen werden zu priorisieren?
Vielleicht bin ich ja total auf dem Holzweg, aber ich denke das pci-stub bei mir viel zu spät geladen wird.

Mein konkretes Problem ist, dass ich einer KVM einige Hardware übergeben möchte (Grafikkarte, Ethernet, USB-PCIe-Erweiterungkarte).
Unter Fedora 21 hatte das bisher funktioniert, indem ich die Hardware beim booten pci-stub überlassen habe
(per Kernelparameter:

Code: Alles auswählen

GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on rdblacklist=radeon pci-stub.ids=8086:153b,1002:6819,1002:aab0,1b73:1100"
)
und dann ganz normal an die KVM durchgereicht habe.

Mit Debian8 scheint dies nicht zu funktionieren, da pci-stub nur als Modul konfiguriert wurde im Kernel (jedenfalls nehme ich aktuell an, dass dies das Problem ist)
Ich kann zwar die Grafikkarte an pci-stub binden indem ich dies in /etc/initramfs-tools/modules eintrage:

Code: Alles auswählen

:~# cat /etc/initramfs-tools/modules 
# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax:  module_name [args ...]
pci_stub ids=1002:6819,1002:aab0,1b73:1100,8086:153b
Dies funktioniert aber nur weil ich das Modul "radeon" auf der Blacklist habe und es nicht geladen wird. Die andern beiden Module (e1000e und xhci_hcd) werden geladen lange bevor pci-stub seine Arbeit verrichtet.
Daher sind das Ergebnis dann so aus:

Code: Alles auswählen

:~# dmesg | grep pci-stub
[    3.133142] pci-stub: add 1002:6819 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.133622] pci-stub 0000:01:00.0: claimed by stub
[    3.134071] pci-stub: add 1002:AAB0 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.134530] pci-stub 0000:01:00.1: claimed by stub
[    3.134969] pci-stub: add 1B73:1100 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.135414] pci-stub: add 8086:153B sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000

Code: Alles auswählen

:~# lspci -nnk
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05)
	Subsystem: ASRock Incorporation Device [1849:8c31]
	Kernel driver in use: xhci_hcd

[...]

00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I217-V [8086:153b] (rev 05)
	Subsystem: ASRock Incorporation Device [1849:153b]
	Kernel driver in use: e1000e

[...]

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850] [1002:6819]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2553]
	Kernel driver in use: pci-stub
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:aab0]
	Kernel driver in use: pci-stub

[...]

06:00.0 USB controller [0c03]: Fresco Logic Device [1b73:1100] (rev 01)
	Subsystem: Fresco Logic Device [1b73:1100]
	Kernel driver in use: xhci_hcd
Hat jemand eine Idee dazu?

LG, Frank
Zuletzt geändert von Norcoen am 21.12.2015 10:21:27, insgesamt 1-mal geändert.

Benutzeravatar
smutbert
Beiträge: 8343
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von smutbert » 19.12.2015 23:55:45

Wenn es nur darum geht die Module in der gewünschten Reihenfolge zu laden würde ich folgendes versuchen, wenn beispielsweise pci-stub vor radeon geladen werden soll

Code: Alles auswählen

install radeon /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install radeon
und das in eine .conf-Datei in »/etc/modprobe.d« packen und die initrd aktualisieren

Code: Alles auswählen

# update-initramfs -u
damit es bereits in der initrd gilt. Näheres steht in der Manpage von modprobe.d

Keine Ahnung ob dir das weiterhilft - mit der Virtualisierung hab ichs nicht so.

Norcoen
Beiträge: 61
Registriert: 27.08.2013 19:08:03

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von Norcoen » 20.12.2015 02:30:55

Ich hab das mal mit dem Ethernet versucht:

Code: Alles auswählen

:~# cat /etc/modprobe.d/pci-stub.conf 
install e1000e /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install e1000e
Aber jetzt scheint pci-stub gar nicht mehr zu funktionieren, es taucht im dmesg nicht mehr auf und keines der Devices wird mehr gebunden.
Wenn ich die manpage richtig verstehe, definiere ich: Lade pci-stub wenn e1000e geladen werden soll. Klingt als wäre es ziemlich nah an dem was ich möchte.

LG, Frank

Benutzeravatar
smutbert
Beiträge: 8343
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von smutbert » 20.12.2015 11:18:28

Ja, es sollte statt, dass das Modul geladen wird, der angegebene Befehl ausgeführt werden und dieser Befehl lädt zuerst ein anderes Modul und erst dann das geforderte und die Option "--ignore-install" ist notwendig, damit er nicht noch einmal zuerst das andere bereits geladene Modul lädt und es in einer Endlosschleife jedes Mal beim Versuch das Modul zu laden von vornge beginnt.

Ich habe das gerade auf meinem System mit zwei anderen Module getestet und es hat auf Anhieb funktioniert

Code: Alles auswählen

install snd-aloop /sbin/modprobe xfs; /sbin/modprobe --ignore-install snd-aloop
(xfs und snd-aloop sind die beiden ersten Module, die mir eingefallen sind, die man auch ohne zugehörige Hardware laden kann und die bei mir nicht bereits geladen sind)

Kurz gesagt, ich weiß nicht woran es bei dir scheitert... ist denn nach dem Start pci-stub nach dem Start laut »lsmod« geladen?
Wenn ja, fehlen pci-stub vielleicht nur die Optionen? Die könntest du doch ebenfalls in »/etc/modprobe.d« eintragen

Code: Alles auswählen

options pci-stub ids=1002:6819,1002:aab0,1b73:1100,8086:153b
und danach wieder

Code: Alles auswählen

# update-initramfs -u
edit:
Im Gegenzug könntest du dir das Angeben der Moduloptionen für pci-stub in der »/etc/initramfs-tools/modules« ersparen, zur Anwendung kommen sie ohnehin nicht, wenn das Modul durch einen anderen „Mechanismus“ geladen wird und die Optionen in der »/etc/modprobe.d« sollten immer und überall gelten.

Norcoen
Beiträge: 61
Registriert: 27.08.2013 19:08:03

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von Norcoen » 20.12.2015 13:11:17

Vielen Dank, ich denke ich habe es jetzt soweit hinbekommen :hail:

Code: Alles auswählen

options pci-stub ids=1002:6819,1002:aab0,1b73:1100,8086:153b
hatte ich schomal drin, hatte aber nicht funktioniert.
Ich habe jetzt anstatt ein Modul auszuprobieren einfach mal alle genommen die es betrifft und ihre Abhängigkeiten laut lsmod:

Code: Alles auswählen

:~# cat /etc/modprobe.d/pci-stub.conf 
install radeon /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install radeon
install e1000e /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install e1000e
install xhci_hcd /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install xhci_hcd
# Abhängigkeiten:
install ptp /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install ptp
install pps_core /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install pps_core
install usbcore /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install usbcore
install usb_common /sbin/modprobe pci-stub; /sbin/modprobe --ignore-install usb_common

options pci-stub ids=1002:6819,1002:aab0,1b73:1100,8086:153b
Jetzt sind alle Geräte, die ich durchreichen möchte an pci-stub gebunden:

Code: Alles auswählen

~# dmesg | grep pci-stub
[    3.292409] pci-stub: add 1002:6819 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.292419] pci-stub 0000:01:00.0: claimed by stub
[    3.292421] pci-stub: add 1002:AAB0 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.292428] pci-stub 0000:01:00.1: claimed by stub
[    3.292429] pci-stub: add 1B73:1100 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.292638] pci-stub 0000:06:00.0: claimed by stub
[    3.292642] pci-stub: add 8086:153B sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    3.292648] pci-stub 0000:00:19.0: claimed by stub

Code: Alles auswählen

~# lspci -nnk
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I217-V [8086:153b] (rev 05)
	Subsystem: ASRock Incorporation Device [1849:153b]
	Kernel driver in use: pci-stub
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850] [1002:6819]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2553]
	Kernel driver in use: pci-stub
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:aab0]
	Kernel driver in use: pci-stub
04:00.0 Ethernet controller [0200]: Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03)
	Subsystem: ASRock Incorporation Device [1849:1539]
	Kernel driver in use: igb
06:00.0 USB controller [0c03]: Fresco Logic Device [1b73:1100] (rev 01)
	Subsystem: Fresco Logic Device [1b73:1100]
	Kernel driver in use: pci-stub
Ein bisschen Sorgen machen mir jetzt gewisse Meldungen zu den Geräten im Bootlog:
journalctl [...]

Code: Alles auswählen

Dez 20 12:57:41 dom0 kernel: random: systemd-udevd urandom read with 2 bits of entropy available
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_for_each_dev (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_resume_root_hub (err 0)
Dez 20 12:57:41 dom0 kernel: dca service started, version 1.12.1
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_unlink_urb_from_ep (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_start_port_resume (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_resume_root_hub (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hc_died (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_disabled (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_check_unlink_urb (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcds_loaded (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_end_port_resume (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_calc_bus_time (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol ehci_cf_port_reset_rwsem (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_link_urb_to_ep (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hub_clear_tt_buffer (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_giveback_urb (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_pci_probe (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_unlink_urb_from_ep (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hc_died (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_wakeup_notification (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_irq (err 0)
Dez 20 12:57:41 dom0 kernel: SCSI subsystem initialized
Dez 20 12:57:41 dom0 kernel: e1000e: Unknown symbol ptp_clock_index (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_unlink_urb_from_ep (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hc_died (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_wakeup_notification (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_irq (err 0)
Dez 20 12:57:41 dom0 kernel: SCSI subsystem initialized
Dez 20 12:57:41 dom0 kernel: e1000e: Unknown symbol ptp_clock_index (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_poll_rh_status (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_debug_root (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_root_hub_lost_power (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_for_each_dev (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_resume_root_hub (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_unlink_urb_from_ep (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_start_port_resume (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hc_died (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_disabled (err 0)
Dez 20 12:57:41 dom0 kernel: e1000e: Unknown symbol ptp_clock_register (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_check_unlink_urb (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcds_loaded (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_end_port_resume (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_calc_bus_time (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol ehci_cf_port_reset_rwsem (err 0)
Dez 20 12:57:41 dom0 kernel: e1000e: Unknown symbol ptp_clock_unregister (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_link_urb_to_ep (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hub_clear_tt_buffer (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_giveback_urb (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_hcd_poll_rh_status (err 0)
Dez 20 12:57:41 dom0 kernel: ehci_hcd: Unknown symbol usb_debug_root (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_is_primary_hcd (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_acpi_power_manageable (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_put_hcd (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_giveback_urb (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_poll_rh_status (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_acpi_set_power_state (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_pci_remove (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_remove_hcd (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_add_hcd (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_create_shared_hcd (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_root_hub_lost_power (err 0)
Dez 20 12:57:41 dom0 kernel: igb: Unknown symbol ptp_clock_index (err 0)
Dez 20 12:57:41 dom0 kernel: igb: Unknown symbol ptp_clock_register (err 0)
Dez 20 12:57:41 dom0 kernel: igb: Unknown symbol ptp_clock_unregister (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_resume_root_hub (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_pci_probe (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_unlink_urb_from_ep (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hc_died (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_wakeup_notification (err 0)
Dez 20 12:57:41 dom0 kernel: libata version 3.00 loaded.
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_irq (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_check_unlink_urb (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_pci_pm_ops (err 0)
Dez 20 12:57:41 dom0 kernel: xhci_hcd: Unknown symbol usb_hcd_pci_shutdown (err 0)
Allein die schiere Masse an Meldungen macht mir schon Sorgen. Muss ich da noch was tun oder hab ich ich zu weit getrieben mit dem Überschreiben von Modulen?

LG, Frank

Benutzeravatar
smutbert
Beiträge: 8343
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von smutbert » 20.12.2015 13:49:30

Keine Ahnung ob es gut wäre gegen die Meldungen etwas zu unternehmen. Ich vermute die einzige Folge ist, dass die Hardware unter dem Kernel nicht funktioniert, aber sie soll ja ohnehin durchgereicht werden.
Norcoen hat geschrieben:[…]

Code: Alles auswählen

options pci-stub ids=1002:6819,1002:aab0,1b73:1100,8086:153b
hatte ich schomal drin, hatte aber nicht funktioniert.[…]
Kann es sein, dass du da nur das »update-initramfs -u« weggelassen hast, die Moduloption in der initrd daher noch nicht gesetzt war, das Modul aber bereits von der initrd geladen wurde?

Norcoen
Beiträge: 61
Registriert: 27.08.2013 19:08:03

Re: Priorität/Reihenfolge der Kernelmodule beim Start?

Beitrag von Norcoen » 20.12.2015 14:25:43

Könnte natürlich sein, dass ich das irgendwann mal vergessen hab, aber ich hatte beim booten immer mal andere Effeckte, es hätte mir also eigentlich auffallen müssen, wenn sich mal nichts geändert hat.

Ich hab es gerade nochmal ausprobiert, wenn ich nur diese Zeile setze, dann wird nur die GPU, aber nicht das dazu gehörige HDMI-Audio an pci-stub gebunden und auch Ethernet und USB nicht.
Ich nehme an, dass die Grafikkarte nur funktioniert, weil ich "blacklist radeon" in /etc/modprobe.d/blacklist.conf stehen habe.
Die Unterschiede ob man es per modprobe.d, initramfs oder Kernelparameter macht sind schon erstaunlich für mich.

Antworten