Kernel und Systemstabilität

IOMMU blockiert ungültigen DMA-Gerätezugriff

IOMMU-Fehlerdaten nennen Gerät und DMA-Adressbereich; Treiber sowie Passthrough-Einrichtung prüfen und dabei die Isolationsschutzmaßnahmen behalten.

Auf dieser Seite
  1. Symptome und Geltungsbereich
  2. Mögliche Ursachen
  3. Sicher prüfen
  4. Nächste Schritte nach Befund
  5. Quellen und Prüfung
  6. Verwandte Probleme

Symptome und Geltungsbereich

  • Ein PCI-Gerät reagiert nicht mehr, während IOMMU-Fehler zunehmen.
  • Der Kernel meldet DMA-Read-/Write-Fehler oder AMD-IO_PAGE_FAULT-Ereignisse.

Betroffene Umgebung

Intel-VT-d-/DMAR- oder AMD-Vi-Systeme mit übersetztem DMA, einschließlich Gerätezuweisung an virtuelle Maschinen.

Erkennbare Meldungen (synthetische Beispiele)
DMAR: [DMA Read NO_PASID] Request device [03:00.0] fault addr 0x1000 [fault reason 0x06] PTE Read access is not set

Geräteadresse, DMA-Richtung und Grund für Host-Zuordnungsprüfung nutzen; nicht als CPU-Seitenfehler einer Anwendung einordnen.

AMD-Vi: Event logged [IO_PAGE_FAULT device=03:00.0 domain=0x000a address=0x1000 flags=0x0000]

Aktiven Gerätetreiber und Domain prüfen; die Meldung zeigt durchgesetzte Isolation, nicht dass deren Abschalten repariert.

Mögliche Ursachen

Das sind mögliche Erklärungen, keine bestätigte Diagnose. Mehrere unabhängige Fehler können gleichzeitig vorliegen.

  • Ein Treiber kann DMA außerhalb gültiger Zuordnung oder über alte Zuordnungen auslösen.
  • Firmware-Reservierungen, Reset-Verhalten oder falsche VM-Zuweisung können mit DMA-Übersetzung kollidieren; GPU-Seitenfehler sind ein anderer Mechanismus.

Sicher prüfen

Führe jeweils einen Befehl in der passenden Sitzung aus. Lies zuerst die Erklärung. Großgeschriebene Platzhalter brauchen deine Werte; Werkzeuge und Rechte unterscheiden sich je nach Distribution. Die Website zeigt Befehle an und führt sie niemals aus.

Prüfschritt 1

Geräteadresse, Fehlergrund und DMA-Richtung lesen; Journalzugriff kann Administratorrechte erfordern.

journalctl -b -k --no-pager --grep='DMAR:|AMD-Vi:|IO_PAGE_FAULT'

Ergebnis einordnen: Wiederholte Fehler eines Geräts grenzen Treiber/Domain ein. Frühe Firmware-Meldungen vor Treiberbindung getrennt von DMA-Laufzeitfehlern bewerten.

Prüfschritt 2

03:00.0 durch die Adresse der Fehlermeldung ersetzen. Bindung lesen, ohne sie zu ändern.

lspci -nnk -s 03:00.0

Ergebnis einordnen: Prüfen, ob Host-Treiber oder vfio-pci das Gerät belegt. Unerwartete Bindung für die geplante VM-Einrichtung begründet Konfigurationsprüfung vor erneutem Gaststart.

Nächste Schritte nach Befund

Korrektur des ermittelten Gerätetreibers vergleichen

Nennt ein Laufzeitfehler wiederholt dasselbe normal vom Host genutzte Gerät, eine unterstützte Kernel- oder Geräte-Firmware-Korrektur passend zu Gerät und Fehlergrund nutzen. Optionale Arbeitslast während Beweissicherung vorübergehend stoppen.

Vorsicht: IOMMU nicht global zum Unterdrücken abschalten; sie bietet DMA-Isolation und kann für die VM-Konfiguration notwendig sein.

Wiederherstellung / Rücknahme: Bei neuen Fehlern vorherigen unterstützten Kernel und Konfiguration der gestoppten Arbeitslast wiederherstellen.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Dokumentierte Passthrough-Zuweisung korrigieren

Beginnen Fehler beim Gaststart oder -stopp, unterstützte Gerätegruppe, Host-Bindung und Reset-Anforderungen des Hypervisors prüfen. VM-Definition bei ausgeschalteten Gästen korrigieren und einen kontrollierten Lebenszyklus vergleichen.

Vorsicht: Keine ACS-Overrides, unsicheren Interrupt-Optionen oder Zuweisung eines vom Host benötigten Geräts erzwingen. Ursprüngliche VM-Definition behalten.

Wiederherstellung / Rücknahme: Bei unsicherer Initialisierung gesicherte VM-Definition und Host-Treiberkonfiguration bei gestoppten Gästen wiederherstellen.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Quellen und Prüfung

Diese Anleitung basiert auf Originalquellen von Projekten oder Distributionen und wurde am genannten Datum redaktionell geprüft. Das ist eine Quellenprüfung, kein Nachweis einer auf deiner Hardware reproduzierten Lösung. Log-Beispiele sind synthetische Testdaten. Versionsabhängige Details müssen zur installierten Ausgabe passen.