vboxpci: IOMMU not found (not registered)

As a passing curiosity with the new office desktop motherboard, an Asus Z170-K, I wondered if the system supported PCI pass-through. A little digging revealed that such support existed. Yet when I probed my Slackware 14.2 64-bit system I saw the following:

    dmesg | grep -i mmu
    DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
    vboxpci: IOMMU not found (not registered)

A quick web search led me to a discussion with a person posting the same question with the same motherboard.

I jotted some notes and rebooted the computer. In the BIOS/EFI I modified the following:

    Advanced -> Platform Misc Configuration
      PCI Express Native Power Management -> Enabled
      Native ASPM -> Enabled

As I was using VirtualBox, I had already enabled the following:

    Advanced -> CPU Configuration
      Intel Virtualization Technology -> Enabled
    Advanced -> System Agent (SA) Configuration
      VT-d -> Enabled

Still no change in the dmesg output. Next I modified the GRUB configuration by adding intel_iommu=on.

After booting the system I saw the following output:

    dmesg | grep -i mmu
    [    0.000000] DMAR: IOMMU enabled
    [    0.048548] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
    [    0.420298] iommu: Adding device 0000:00:00.0 to group 0
    [    0.420306] iommu: Adding device 0000:00:02.0 to group 1
    [    0.420314] iommu: Adding device 0000:00:14.0 to group 2
    [    0.420322] iommu: Adding device 0000:00:16.0 to group 3
    [    0.420329] iommu: Adding device 0000:00:17.0 to group 4
    [    0.420339] iommu: Adding device 0000:00:1b.0 to group 5
    [    0.420356] iommu: Adding device 0000:00:1c.0 to group 6
    [    0.420366] iommu: Adding device 0000:00:1c.2 to group 6
    [    0.420375] iommu: Adding device 0000:00:1c.3 to group 6
    [    0.420385] iommu: Adding device 0000:00:1d.0 to group 7
    [    0.420435] iommu: Adding device 0000:00:1f.0 to group 8
    [    0.420442] iommu: Adding device 0000:00:1f.2 to group 8
    [    0.420448] iommu: Adding device 0000:00:1f.3 to group 8
    [    0.420454] iommu: Adding device 0000:00:1f.4 to group 8
    [    0.420460] iommu: Adding device 0000:02:00.0 to group 6
    [    0.420465] iommu: Adding device 0000:03:00.0 to group 6
    [    0.420469] iommu: Adding device 0000:04:00.0 to group 6
    [    0.420474] iommu: Adding device 0000:05:00.0 to group 6
    [   25.101307] vboxpci: IOMMU found

From what I have read thus far, I need to add more modifications. The basic approach is to use lspci to obtain the bus address. Then use lspci -n | grep ${bus address} to obtain a stub ID. Something like this:

lspci -n | grep "04:00.0"

Then add that stub ID as a kernel boot parameter or create an /etc/modprobe.d file.

intel_iommu=on pci-stub.ids=14f1:5b7a

Or

    /etc/modprobe.d/vfio.conf
    options vfio-pci ids=10de:13c2,10de:0fbb

Looks like getting PCI pass-through working involves more, but that is a project for another day.

Posted: Category: Usability Tagged: General

Next: GRUB Disappears With Above 4G Decoding

Previous: Digging Deeper With Server Issues