Probleme mit PCI(e) Passthrough (HBA-Controller)

Madtrick

Active Member
Mar 17, 2019
43
3
28
55
Germany
Ich habe Probleme den HBA-Controller an die VM durchzureichen.

Das System (5.4) ist frisch aufgesetzt auf eigener SSD am Mainboard direkt angeschlossen.
Der HBA-Controller (LSI SAS2308) wird vom System erkannt und die 6 Festplatten sind unter pve Disks sichtbar.

Die VM ist eingerichtet.
Nun habe ich unter Hardware => Hinzufügen => PCI-Gerät den Controller ausgewählt.
Dort steht direkt im Fenster:

No IOMMU detected, please activate it.See Documentation for further information.

Also die Schritte unter Hilfe (Doku) zu Rate gezogen und ausgeführt.
/etc/default/grub und /etc/modules editiert.

Code:
# update-grub
ausgeführt.

Code:
# update-initramfs -u -k all
ebenso.

RESTART

Code:
root@pve:~# dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
[    0.000000] AGP: Please enable the IOMMU option in the BIOS setup
[    1.251103] PCI-DMA: using GART IOMMU.
[    1.251105] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture

Ein
Code:
find /sys/kernel/iommu_groups/ -type l
zeigt nichts an.

Beim Hardware hinzufügen in der VM steht nach wie vor:
No IOMMU detected, please activate it.See Documentation for further information.

Wenn ich trotzdem den HBA hinzufüge, dann startet die VM nicht mehr.

Was habe ich vergessen oder übersehen? Daher bitte ich euch um Hilfe.
 
Im BIOS hast Du IOMMU aktiviert?

Edit Grub ist ja schön und gut. Aber was genau hast Du da editiert. Wie sieht Dein Eintrag in der Grub aus?

Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

Hast Du eingetragen?
 
Ich habe genau das getan:


Code:
IOMMU

The IOMMU has to be activated on the kernel commandline. The easiest way is to enable trough grub. Edit ‘/etc/default/grub’ and add the following to the GRUB_CMDLINE_LINUX_DEFAULT variable:

    for Intel CPUs:

     intel_iommu=on

    for AMD CPUs:

     amd_iommu=on

To bring this change in effect, make sure you run:

# update-grub

Kernel Modules

You have to make sure the following modules are loaded. This can be achieved by adding them to ‘/etc/modules’

 vfio
 vfio_iommu_type1
 vfio_pci
 vfio_virqfd

After changing anything modules related, you need to refresh your initramfs. On Proxmox VE this can be done by executing:

# update-initramfs -u -k all

Finish Configuration

Finally reboot to bring the changes into effect and check that it is indeed enabled.

# dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

should display that IOMMU, Directed I/O or Interrupt Remapping is enabled, depending on hardware and kernel the exact message can vary.

It is also important that the device(s) you want to pass through are in a separate IOMMU group. This can be checked with:

# find /sys/kernel/iommu_groups/ -type l

Ich bin nach dieser Anleitung vorgegangen.

Meine /etc/default/grub sieht so aus:

Code:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
GRUB_CMDLINE_LINUX=""

# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY="true"

Die /etc/modules so:

Code:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
 
Im Bios gibt es keine explizite Einstelllung für IOMMU. Nur die typische Aktivierung für VMs im CPU Bereich.

Das Board ist ein ASUS - M5A78L-M-USB3 mit 32 GB ECC RAM und AMD FX-8350 Eight-Core Processor.
 
ACPI und so ist aktiviert? Habe gelesen das eine bestimmte ACPI Tabelle dafür vorhanden sein muss.
Ansonsten wüsste ich leider auch nicht. Würde aber behaupten es fehlt im BIOS.
Update vom BIOS hast Du gemacht?
 
Last edited:
ACPI ist soweit ich es in Erinnerung habe aktiviert. Ich sitze gerade nicht vor der Maschine und könnte nachsehen. Aber vor dem HBA war es jedenfalls so und sollte sich ja nicht von alleine verstellen. ;)

Alle Bios-Updates sind gemacht. Gestern habe ich extra noch einmal das Bios durchgeblättert und nach einer Option für IOMMU gesucht. Leider Fehlanzeige.

Was könnte ich den noch tun?
 
Wenn mein Board das nicht kann, dann wäre es ziemlich ärgerlich. Habe das System gerade erst zusammen geschustert. Aus alten Teilen plus neuem Speicher. Sogar der ECC läuft.

Wenn ich nun diese Konstellation nicht zum Laufen bekomme, muss ich das Gesamtkonzept völlig überarbeiten. Also plus eine reale Maschine im Netz, was ich umgehen wollte. Oder alternativ dann auf ein Serverboard mit entsprechenden Komponenten umsteigen. Aber dafür fehlt einfach das Geld.

Stelle dann jetzt erst einmal den Kontakt zu Asus her.

Ich danke dir erst einmal herzlich.
 

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!