Status of IOMMU/VT-d on a GA-Z68AP-D3 (rev 1.0)

tl;dr BIOS F4 HH lets you enable the DMAR tables, but RMRR is malformed and therefore VT-d setup is not able to complete. This motherboard does not currently work with VT-d.


Chipset

Z68 sits at the top of the line of series 6, which is equivalent to 2nd-gen Core (Sandy Bridge). I’m using this motherboard with a Sandy Bridge Core i7–2600 (non-K).


BIOS revisions

Officially released BIOS are versioned Fx, where x is a number between 1 and 8, inclusive. BIOS blobs are self-contained and can upgrade or downgrade the version directly. The BIOS can be flashed through 3 methods: Q-Flash, atBIOS and DOS Flash. I have only been able to use atBIOS.

The latest version is F8.

Unofficially, there exists a beta U1A BIOS for UEFI support (This requires a different flashing mechanism, which I have not been able to get working).

There also exists a supposed VT-d capable BIOS called HH.F4.

Google Translate: https://translate.google.com/translate?hl=en&sl=de&u=http://mbforum.gigabyte.de/index.php%3Fpage%3DThread%26threadID%3D4785


BIOS advanced menus

The provided Award BIOS has a secret keystroke (CTRL-F1) which exposes some extra settings.

This menu is available for most BIOS revisions, however for HH.F4 a menu item appears under “Advanced Chipset Features” for VT-d. We enable this.


Kernel

Since this is the first system that gets close to supporting IOMMU, I do not normally include IOMMU in my kernel. In addition to whatever drivers are needed for your system, these options need to be enabled:

If you do not set CONFIG_INTEL_IOMMU_DEFAULT_ON, pass intel_iommu=on to your kernel from your bootloader prompt.


Booting

[    3.013371] DMAR: No ATSR found
[ 3.017113] DMAR: Setting RMRR:
[ 3.020264] DMAR: Mapping reserved region failed
[ 3.024880] DMAR: Mapping reserved region failed
[ 3.029498] DMAR: Prepare 0-16MiB unity mapping for LPC
[ 3.034726] DMAR: Failed to create 0-16MiB identity map - floppy might not work
[ 3.042030] DMAR: Intel(R) Virtualization Technology for Directed I/O

It looks all well and good, despite the failures in mapping reserved regions. However, further along in the boot:

[    3.575767] DMAR: Allocating domain for 0000:00:1f.2 failed
[ 3.581340] ahci 0000:00:1f.2: failed to start port 0 (errno=-12)
[ 3.587496] ahci: probe of 0000:00:1f.2 failed with error -12
[ 3.593300] libphy: Fixed MDIO Bus: probed
[ 3.597433] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 3.603961] ehci-pci: EHCI PCI platform driver
[ 3.608474] ehci-pci 0000:00:1a.0: EHCI Host Controller
[ 3.613732] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[ 3.621130] ehci-pci 0000:00:1a.0: debug port 2
[ 3.625667] DMAR: Allocating domain for 0000:00:1a.0 failed
[ 3.631234] ehci-pci 0000:00:1a.0: can't setup: -12
[ 3.636115] ehci-pci 0000:00:1a.0: USB bus 1 deregistered
[ 3.641615] ehci-pci 0000:00:1a.0: init 0000:00:1a.0 fail, -12
[ 3.647453] ehci-pci: probe of 0000:00:1a.0 failed with error -12
[ 3.653609] ehci-pci 0000:00:1d.0: EHCI Host Controller
[ 3.658880] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 1
[ 3.666285] ehci-pci 0000:00:1d.0: debug port 2
[ 3.670821] DMAR: Allocating domain for 0000:00:1d.0 failed
[ 3.676390] ehci-pci 0000:00:1d.0: can't setup: -12
[ 3.681269] ehci-pci 0000:00:1d.0: USB bus 1 deregistered
[ 3.686789] ehci-pci 0000:00:1d.0: init 0000:00:1d.0 fail, -12
[ 3.692624] ehci-pci: probe of 0000:00:1d.0 failed with error -12
[ 3.698720] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 3.704895] ohci-pci: OHCI PCI platform driver
[ 3.709347] uhci_hcd: USB Universal Host Controller Interface driver
[ 3.715754] xhci_hcd 0000:03:00.0: xHCI Host Controller
[ 3.721033] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 1
[ 3.728473] DMAR: Allocating domain for 0000:03:00.0 failed
[ 3.734041] xhci_hcd 0000:03:00.0: Couldn't initialize memory
[ 3.739803] xhci_hcd 0000:03:00.0: can't setup: -12
[ 3.744686] xhci_hcd 0000:03:00.0: USB bus 1 deregistered
[ 3.750160] xhci_hcd 0000:03:00.0: init 0000:03:00.0 fail, -12
[ 3.755997] xhci_hcd: probe of 0000:03:00.0 failed with error -12
[ 3.762119] xhci_hcd 0000:07:00.0: xHCI Host Controller
[ 3.767396] xhci_hcd 0000:07:00.0: new USB bus registered, assigned bus number 1
[ 3.833627] DMAR: Allocating domain for 0000:07:00.0 failed
[ 3.839197] xhci_hcd 0000:07:00.0: Couldn't initialize memory
[ 3.903751] xhci_hcd 0000:07:00.0: can't setup: -12
[ 3.908628] xhci_hcd 0000:07:00.0: USB bus 1 deregistered
[ 3.914123] xhci_hcd 0000:07:00.0: init 0000:07:00.0 fail, -12
[ 3.919959] xhci_hcd: probe of 0000:07:00.0 failed with error -12

A little further on in the boot sequence, USB is initialised. In this environment, USB is required but the DMAR table isn’t allocating domains and letting us access the bus.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.