MSI 890FXA-GD70 BIOS 1.90+ stalls kernel with enabled IOMMU (drivers/iommu/amd_iommu_init.c)

From: Andreas Thalhammer
Date: Sun Jan 18 2015 - 12:29:30 EST


Hello!

I have the following problem: my mainboard is an MSI 890FXA-GD70. I use
BIOS revision 1.80 at the moment and the IOMMU is enabled in the BIOS.
The IOMMU is recognized by the kernel and seems to work.

I would like to update my BIOS again to revision 1.15, which is known to
freeze the Linux kernel on startup when the IOMMU is not disabled in the
BIOS (and therefor no longer used by Linux).

How can I make the kernel parameters ivrs_hpet[0]=00:14.0 and
ivrs_ioapic[7]=00:00.1 actually be used, because the vanilla kernel
seems to ignore these overrides:

> AMD-Vi: DEV_SPECIAL(HPET[0]) devid: 00:14.0
> AMD-Vi: Command-line override present for HPET id 0 - ignoring
> AMD-Vi: DEV_SPECIAL(IOAPIC[7]) devid: 00:00.1
> AMD-Vi: Command-line override present for IOAPIC id 7 - ignoring

Note that with BIOS 1.80 the kernel detects these setting correctly and
the overrides aren't necessary at all. But flashing BIOS 1.90 and newer
stalls the kernel for an unknown reason, so maybe these overrides could
fix it.

Please also read https://bbs.archlinux.org/viewtopic.php?pid=1278081.

I would like to assist in fixing this issue, since I can flash my BIOS
from a working version (1.80) to a non working version (1.15) and back,
if necessary, although I would like to get it fixed with as little
flashes as possible.

How can I patch drivers/iommu/amd_iommu_init.c to
1) make the overrides work
2) add additional output to check where the kernel stalls (if it still
stalls with the overrides)

Thanks in advance,
Andreas
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/