I’m not knowledgeable enough to interpret this and I was hoping someone would be able to help and tell me if
this is related to a kernel issue, motherboard BIOS issue or RAID driver issue
if there is a workaround or any other troubleshooting steps I can take
This is on OpenSUSE 13.1 with kernel 3.11. Mainboard and RAID card BIOS have been updated to the latest version, respectively 2.1 for the Super Micro X9SCM-F mainboard and 1.4 for the Highpoint RocketRAID 2642 card.
IOMMU is enabled and working, I can successfully passthrough the onboard SATA controllers and several USB devices to guests.
The instructions and troubleshooting on the page you linked relate to assigning devices to KVM guests. What I’m trying to have working here is the RAID controller for use by the host, the device should not be passed to any guests.
I have been able to reproduce this issue on another mainboard that supports VT-d from another manufacturer, so it may not be related to the VT-d support in the mainboard BIOS (which I understood can be dodgy at times).
Is there a way to disable DMAR on a per-device basis or am I wrong in understanding this error message as a DMA remapping issue?
There appears to be a kernel parameter intel_iommu=pt. This would,
set up pass through mode in
context mapping entry. This disables DMAR in linux kernel; but KVM still runs on
VT-d and interrupt remapping still works.
In this mode, kernel uses swiotlb for DMA API functions but other VT-d
functionalities are enabled for KVM. KVM always uses multi level translation
page table in VT-d. By default, pass though mode is disabled in kernel.
This is useful when people don’t want to enable VT-d DMAR in kernel but still
want to use KVM and interrupt remapping for reasons like DMAR performance
concern or debug purpose.
Setting intel_iommu=pt does allow the RAID controller kernel module to start properly. Need to do further testing though to confirm that passthrough of SATA and USB still works for the guest VMs.
I’m not overly keen on this kind of “blanket” workaround and would prefer a solution or workaround that only affects the specific device I’m having issues with. Though I would think that this would have the most impact for passthrough of VGA devices, which I’m not doing on this unit.