[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] IOMMU/AMD-Vi not working after XSA-36 with 970A-UD3



On Sun, May 5, 2013 at 8:43 AM, Hans Mueller <mcbeagle@xxxxxx> wrote:
> On Saturday, 4. May 2013 22:54:57 Eric Shelton wrote:
>> I have the same motherboard with I/O virtualization running.  You are
>> welcome to follow my path if you wish.  I detailed the issues with the
>> 970A-UD3 motherboard in response to [1], so it should give you a clear
>> idea as to the defect and whether you consider what I am doing meets
>> your goals.  My view is that the particular misconfiguration with this
>> board, in which the ACPI IVRS table lists an unused northbridge
>> IOAPIC, is reasonably ignored as done in the below patch.
>>
>> My xen boot line is as follows:
>> kernel /boot/xen.gz dom0_mem=2048M loglvl=all guest_loglvl=all
>> apic_verbosity=debug e820-verbose=1 iommu=debug,verbose
>>
>> I have patched iommu_acpi.c as follows:
>> --- orig/xen/drivers/passthrough/amd/iommu_acpi.c 2013-05-04
>> 21:18:18.148000000 -0400
>> +++
>> xen-unstable-3f28d0077788e7f8cd3ee25b023a4225d7e26e87/xen/drivers/passthrou
>> gh/amd/iommu_acpi.c 2013-04-23 22:27:28.028000000 -0400
>> @@ -679,8 +679,9 @@
>>                                      special->handle);
>>                  else
>>                  {
>> -                    printk(XENLOG_ERR "IVHD Error: Conflicting
>> IO-APIC %#x entries\n",
>> +                    printk(XENLOG_ERR "ignored - IVHD Error:
>> Conflicting IO-APIC %#x entries\n",
>>                             special->handle);
>> +                    break;
>>                      if ( amd_iommu_perdev_intremap )
>>                          return 0;
>>                  }
>> @@ -702,12 +703,14 @@
>>              }
>>              break;
>>          }
>> + /*
>>          if ( apic == nr_ioapics )
>>          {
>>              printk(XENLOG_ERR "IVHD Error: Invalid IO-APIC %#x\n",
>>                     special->handle);
>>              return 0;
>>          }
>> + */
>>          break;
>>      case ACPI_IVHD_HPET:
>>          /* set device id of hpet */
>>
>> xl dmesg reports the following:
>> (XEN) Xen version 4.3-unstable (root@) (gcc (Gentoo 4.6.3 p1.11,
>> pie-0.5.2) 4.6.3) debug=y Tue Apr 23 22:28:54 EDT 2013
>> (XEN) Latest ChangeSet: unavailable
>> (XEN) Bootloader: GNU GRUB 0.97
>> (XEN) Command line: dom0_mem=2048M loglvl=all guest_loglvl=all
>> apic_verbosity=debug e820-verbose=1 iommu=debug,verbose
>> . . .
>> (XEN) ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0])
>> (XEN) IOAPIC[0]: apic_id 8, version 33, address 0xfec00000, GSI 0-23
>> . . .
>> (XEN) AMD-Vi: IVHD Device Entry: type 0x48 id 0 flags 0xd7
>> (XEN) AMD-Vi: IVHD Special: 0000:00:14.0 variety 0x1 handle 0x8
>> (XEN) AMD-Vi: IVHD Device Entry: type 0x48 id 0 flags 0xd7
>> (XEN) AMD-Vi: IVHD Special: 0000:00:14.0 variety 0x2 handle 0
>> (XEN) AMD-Vi: IVHD Device Entry: type 0x48 id 0 flags 0
>> (XEN) AMD-Vi: IVHD Special: 0000:00:00.1 variety 0x1 handle 0x8
>> (XEN) ignored - IVHD Error: Conflicting IO-APIC 0x8 entries
>> (XEN) AMD-Vi: IOMMU 0 Enabled.
>> (XEN) AMD-Vi: Enabling per-device vector maps
>> (XEN) I/O virtualisation enabled
>> (XEN)  - Dom0 mode: Relaxed
>> (XEN) Interrupt remapping enabled
>
> Perhaps I missed something but as your approach ignores the improper entry for
> the northbridge it should behave similar to using the patched BIOS (F8c) which
> removes this entry from the IVRS table?
>
> At all I use the patched BIOS w/o any patches for Xen and w/o the
> 'iommu=amd-iommu-perdev-intremap' parameter and I/O virtualisation  becomes
> enabled (Xen version 4.2.x ChangeSet 26064:754008dbaa6c):
>
> (XEN) AMD-Vi: IOMMU 0 Enabled.
> (XEN) AMD-Vi: Enabling per-device vector maps
> (XEN) I/O virtualisation enabled
> (XEN)  - Dom0 mode: Relaxed
> (XEN) Interrupt remapping enabled
>
> Regards
> Hans

I suspect the obtained result is the same, or at least very similar.
I put the patch (more of a crude hack) together a while back to enable
interrupt sharing, before Gigabyte made a ver F8c for you to try out.
Also, as far as I can tell Gigabyte has not made F8c publicly
generally - the latest BIOS I see on their website is F8a from
December 2012.

Enabling and correctly configuring the northbridge is pretty easy from
a register programming perspective.  The more difficult part is
getting the corresponding ACPI table changes fed to Xen as well, as
Xen looks to them for configuration.  I know how to go about it at
this point, but another project has priority over it for the next week
or two.

- Eric

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.