PCI zurück zu Host?

El_Don

New Member
Sep 13, 2020
19
0
1
53
Hallo Gemeinde,

ich leite erfolgreich meinen PCI Bus (USB) zu den VMs durch.
Leider sind PCI Bus und die USB devices nach shutdown der VM für den Host nicht mehr ersichtlich.
Allerdings kann ich dieses PCI ohne Probleme danach wieder an eine andere VM durchleiten.
Gibt es einen Befehl mit dem ich nach VM shutdown den PCI USB wieder mit Proxmox verknüpfen kann?
Im Moment muss ich den Server rebooten, was ja nicht Sinn der Sache sein kann.

Nur schon mal erwähnt: Ich weiß, dass ich auch einzelne USB Ports oder Geräte an die VM durchleiten kann.
In meinem speziellen Fall muss es aber leider der komplette PCI Bus sein.

Vielen Dank im voraus.
 
Nur ein Schuss ins blaue, event. ein Kernelmodul entladen und dann wieder neu laden?
 
Ja, das sind gute Ansätze.

@LnxBil So wie ich das verstehe, ist in dem Link von USB-Devices die Rede. Wenn ich bei mir unter sys/bus/usb/devices schaue, dann habe ich da nichts drin. Logisch, denn in dem Moment kennt Proxmox quasi kein USB mehr. Aber von der Idee her könnte es passen, wenn ich das gleiche unter /sys/bus/pci/ mache. Dort finde ich die ID für meinen PCI USB bus wieder.
Werde ich ausprobieren und das Ergebnis mitteilen.

@fireon Bestimmt auch eine Möglichkeit Allerdings tue ich mich gerade schwer das richtige Module dafür zu finden.
Mache ich 'lsmod | grep -i usb' , dann bekomme ich die module usbmouse, usbkbd, usbhid, usb_storage und hid angezeigt.
Da weiß ich ehrlich gesagt nicht, ob und welches Modul für den PCI bus sein soll. Hast Du eine Idee?

Danke aber in jedem Fall für die guten Ansätze.
 
Aber von der Idee her könnte es passen, wenn ich das gleiche unter /sys/bus/pci/ mache. Dort finde ich die ID für meinen PCI USB bus wieder.
Werde ich ausprobieren und das Ergebnis mitteilen.

Ja, das geht auch. Verwende das in der Praxis eigentlich nur für PCI-Geräte, so funktioniert auch das dynamische Umhängen von Geräten von einer VM an den Host und wieder an andere VMs. Ich wollte nur einen Link haben, der erklärt wie es generell geht. Im PCI-Fall muss man die BUS-ID verwenden.
 
Okay, ich glaube ich benötige doch noch einmal Eure Hilfe, da es scheinbar nicht so funktioniert wie ich mir das dachte.
Also... Ich hole mir mit
Code:
lspci -v
die Infos über die Hardware. Für den gesuchten USB Controller erscheint:


00:14.0 USB controller: Intel Corporation Device 06ed (prog-if 30 [XHCI])
Subsystem: ASRock Incorporation Device 06ed
Flags: medium devsel, IRQ 16
Memory at 4000100000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Capabilities: [80] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [90] Vendor Specific Information: Len=14 <?>
Kernel driver in use: vfio-pci

Prima, jetzt kenne ich den Treiber (vfio.pci).
Dann versuche ich mit einem simplen
Code:
echo -n "00:14.0" > /sys/bus/pci/drivers/vfio-pci/bind
die Device ID ins bind zu schreiben.
Komischerweise erhalte ich daraufhin die Meldung: echo: write error: No such device
Mit device ID 0000:00:14.0 wie ich es in der Proxmox Weboberfläche sehe funktioniert es übrigens auch nicht.

Mache ich da was falsch, oder habe ich gerade einen Denkfehler?
 
Konnte mir die Frage selbst beantworten.
Ich habe einen Forumseintrag gefunden, der mir geholfen hat.
Guckst Du hier: Linuxfoundation

Zusammengefasst:

Zunächst
Code:
echo ssss:bb:dd.f > /sys/bus/pci/devices/ssss:bb:dd.f/driver/unbind
und dann
Code:
echo ssss:bb:dd.f > /sys/bus/pci/drivers/vfio-pci/bind

Am Testsystem hat es so funktioniert. Später probiere ich es mal am Produktivsystem.

UPDATE:
Pustekuchen... die Befehle gingen zwar ohne Fehler durch, aber die USB Devices sind immer noch nicht da.
Jetzt bin ich genau so schlau wie vorher. :-(
 
Last edited:
Okay, das war's... falls jemand das gleiche Problem haben sollte, funktioniert die Lösung folgendermaßen:

Sobald man ein PCI-Device an die VM durchleitet, wird das Device an den Treiber vfio-pci gebunden.
Mein Fehler war, dass ich das Device nach dem unbind erneut mit diesem Treiber verbunden habe, was natürlich blödsinn ist. Um das PCI-Device wieder an den Host zu binden, benötigt man natürlich auch den richtigen Host-Treiber. In diesem Fall: xhci_hcd.

Konkret: Zunächst unbind vom vfio-pci und danach bind an den xhci_hcd.
Et voila :) Die angeschlossenen USB Geräte sind wieder mit Proxmox verbunden.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!