Quantcast
Channel: Ubuntu Forums - Virtualisation
Viewing all articles
Browse latest Browse all 4211

Easy solution to get IOMMU working on mobos with broken BIOSes.

$
0
0
Booting on my board with broken tables, produces this warning:

Code:

[    0.297481] [Firmware Bug]: AMD-Vi: IOAPIC[7] not in IVRS table
[    0.297485] [Firmware Bug]: AMD-Vi: IOAPIC[8] not in IVRS table
[    0.297487] [Firmware Bug]: AMD-Vi: No southbridge IOAPIC found in IVRS table
[    0.297490] AMD-Vi: Disabling interrupt remapping due to BIOS Bug(s)

Quick solution for Sabertooth 990FX (R1.0):


Edit file /etc/default/grub, find line "GRUB_CMDLINE_LINUX_DEFAULT=", edit it to look like:
Code:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1"
Run "sudo update-grub" after it.


Explanation:
IOAPIC[7] correspons to southbridge ioapic and IOAPIC[8] northbridge ioapic

Quote:

amd_iommu_dump= [HW,X86-64]
Enable AMD IOMMU driver option to dump the ACPI table
for AMD IOMMU. With this option enabled, AMD IOMMU
driver will print ACPI tables for AMD IOMMU during
IOMMU initialization.

Booting with amd_iommu_dump=1:

Code:

[    0.297434] AMD-Vi: device: 00:00.2 cap: 0040 seg: 0 flags: 3e info 1300
[    0.297435] AMD-Vi:        mmio-addr: 00000000feb20000
[    0.297444] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 00:00.0 flags: 00
[    0.297445] AMD-Vi:  DEV_RANGE_END          devid: 00:00.2
[    0.297446] AMD-Vi:  DEV_SELECT                      devid: 00:02.0 flags: 00
[    0.297447] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 01:00.0 flags: 00
[    0.297448] AMD-Vi:  DEV_RANGE_END          devid: 01:00.1
[    0.297449] AMD-Vi:  DEV_SELECT                      devid: 00:04.0 flags: 00
[    0.297450] AMD-Vi:  DEV_SELECT                      devid: 02:00.0 flags: 00
[    0.297450] AMD-Vi:  DEV_SELECT                      devid: 00:05.0 flags: 00
[    0.297451] AMD-Vi:  DEV_SELECT                      devid: 03:00.0 flags: 00
[    0.297452] AMD-Vi:  DEV_SELECT                      devid: 00:06.0 flags: 00
[    0.297453] AMD-Vi:  DEV_SELECT                      devid: 04:00.0 flags: 00
[    0.297454] AMD-Vi:  DEV_SELECT                      devid: 00:07.0 flags: 00
[    0.297454] AMD-Vi:  DEV_SELECT                      devid: 05:00.0 flags: 00
[    0.297455] AMD-Vi:  DEV_SELECT                      devid: 00:09.0 flags: 00
[    0.297456] AMD-Vi:  DEV_SELECT                      devid: 06:00.0 flags: 00
[    0.297457] AMD-Vi:  DEV_SELECT                      devid: 00:0b.0 flags: 00
[    0.297458] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 07:00.0 flags: 00
[    0.297458] AMD-Vi:  DEV_RANGE_END          devid: 07:00.1
[    0.297459] AMD-Vi:  DEV_SELECT                      devid: 00:11.0 flags: 00
[    0.297460] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 00:12.0 flags: 00
[    0.297461] AMD-Vi:  DEV_RANGE_END          devid: 00:12.2
[    0.297462] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 00:13.0 flags: 00
[    0.297462] AMD-Vi:  DEV_RANGE_END          devid: 00:13.2
[    0.297463] AMD-Vi:  DEV_SELECT                      devid: 00:14.0 flags: d7
[    0.297464] AMD-Vi:  DEV_SELECT                      devid: 00:14.2 flags: 00
[    0.297465] AMD-Vi:  DEV_SELECT                      devid: 00:14.3 flags: 00
[    0.297466] AMD-Vi:  DEV_SELECT                      devid: 00:14.4 flags: 00
[    0.297467] AMD-Vi:  DEV_ALIAS_RANGE                devid: 08:00.0 flags: 00 devid_to: 00:14.4
[    0.297468] AMD-Vi:  DEV_RANGE_END          devid: 08:1f.7
[    0.297474] AMD-Vi:  DEV_SELECT                      devid: 00:14.5 flags: 00
[    0.297475] AMD-Vi:  DEV_SELECT_RANGE_START  devid: 00:16.0 flags: 00
[    0.297476] AMD-Vi:  DEV_RANGE_END          devid: 00:16.2
[    0.297477] AMD-Vi:  DEV_SPECIAL(IOAPIC[0])        devid: 00:14.0
[    0.297478] AMD-Vi:  DEV_SPECIAL(HPET[0])          devid: 00:14.0
[    0.297479] AMD-Vi:  DEV_SPECIAL(IOAPIC[255])              devid: 00:00.1
[    0.297481] [Firmware Bug]: AMD-Vi: IOAPIC[7] not in IVRS table
[    0.297485] [Firmware Bug]: AMD-Vi: IOAPIC[8] not in IVRS table
[    0.297487] [Firmware Bug]: AMD-Vi: No southbridge IOAPIC found in IVRS table
[    0.297490] AMD-Vi: Disabling interrupt remapping due to BIOS Bug(s)

The ivrs table is wrong, it points to non existant IOAPIC[0] and IOAPIC[255], so to override this i use this commandline in grub:
ivrs_ioapic[7]=00:14.0 ivrs_ioapic[8]=00:00.1.

Quote:

ivrs_ioapic [HW,X86_64]

Provide an override to the IOAPIC-ID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For
example, to map IOAPIC-ID decimal 10 to
PCI device 00:14.0 write the parameter as:
ivrs_ioapic[10]=00:14.0


Booting with it:

Code:

[    1.750889] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[    1.750890] AMD-Vi: Interrupt remapping enabled
[    1.750992] AMD-Vi: Initialized for Passthrough Mode


Viewing all articles
Browse latest Browse all 4211

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>