Using the stock kernel (4.4.0-34-generic and 4.4.0-31-generic) and a fresh install of 16.04. VT-d is supported by my hardware (Xeon E3-1245 v5 and the ASrock Rack C236M WS motherboard), and is enabled in the BIOS. I called ASrock tech support and the guy there ensured me that VT-d is supported.
During a failing boot, I see the kernel messages scroll past too fast to read (I removed
splash) for about a second or three (booting from an SSD) before the screen shows a bunch of lines and the system becomes completely unresponsive. It looks to me like the failure happens right after the GUI is started - first the console is a crappy resolution, then it has a higher resolution for a second before failing.
It looks to me like everything starts to shut down after all the gnome-session assertion failures. But why would enabling PCI passthrough in the kernel kill gnome-session?
I'm leaning toward this being an obscure hardware bug of some kind, because when I set
intel_iommu=soft, Ubuntu boots ok, and dmesg reports IOMMU enabled, but it doesn't actually work (nothing appears in
/sys/kernel/iommu_groups). No other kernel parameters that I've tried have done anything different, except that a successful boot gives me
x2apic is disabled because BIOS sets x2apic opt out bit in syslog, and setting
intremap=no_x2apic_optout makes the message go away.
(Added exact kernel versions at the top.)
I had a Crunchbang++ (basically just reskinned Debian Jessie) install disc laying around so I installed that on a spare drive and it booted FINE with IOMMU functioning! The default, functioning kernel was 3.16.0-4-amd64.
Part of the reason I wanted to go Ubuntu with this project was for the recent kernels, so I tried installing the jessie-backports kernel (4.6.0-0.bpo.1-amd64) and got the exact same failure as with Ubuntu (see what it looks like here).
Now my guess is there was some IOMMU-related change or feature addition after 3.16 which doesn't play nice with this hardware. Anyone have any ideas, other than try another board or be happy with 3.16 kernel?