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.
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).
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.
Supports for LGA1155 2nd Generation Intel® Core™ Processors Touch BIOS™ delivers the innovative new way to modify BIOS.www.gigabyte.com
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).
GIGABYTE latest / beta BIOS for Intel CPU motherboardsforum.giga-byte.co.uk
There also exists a supposed VT-d capable BIOS called HH.F4.
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.
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:
As you can imagine, the most common application for PCI passthrough at least on the chansphere is vidya, since PCI…wiki.installgentoo.com
If you do not set CONFIG_INTEL_IOMMU_DEFAULT_ON, pass intel_iommu=on to your kernel from your bootloader prompt.
[ 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.