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

Re: [Xen-users] Xen IOMMU disabled due to IVRS table... Blah blah blah



I own a crosshair v formula with this issue, the problem seems to be the
reported  io-apics handles are wrong
so here it is, this hack is for 4.1.5 though it can be adapted for 4.2.2

--- a/xen/drivers/passthrough/amd/iommu_acpi.c  2013-04-23 16:44:20.000000000
+0000
+++ b/xen/drivers/passthrough/amd/iommu_acpi.c  2013-05-18 22:19:18.838434000
+0000
@@ -674,18 +674,18 @@ static u16 __init parse_ivhd_device_spec
      */
     for ( apic = 0; apic < nr_ioapics; apic++ )
     {
-        if ( IO_APIC_ID(apic) != ivhd_device->special.handle )
+        if ( ioapic_bdf[IO_APIC_ID(apic)].bdf !=
ioapic_bdf[ivhd_device->special.handle].bdf )
             continue;
 
-        if ( ioapic_bdf[ivhd_device->special.handle].pin_setup )
+        if ( ioapic_bdf[IO_APIC_ID(apic)].pin_setup )
         {
-            if ( ioapic_bdf[ivhd_device->special.handle].bdf == bdf )
+            if ( ioapic_bdf[IO_APIC_ID(apic)].bdf == bdf )
                 AMD_IOMMU_DEBUG("IVHD Warning: Duplicate IO-APIC %#x
entries\n",
-                                ivhd_device->special.handle);
+                                IO_APIC_ID(apic));
             else
             {
                 printk(XENLOG_ERR "IVHD Error: Conflicting IO-APIC %#x
entries\n",
-                       ivhd_device->special.handle);
+                       IO_APIC_ID(apic));
                 if ( amd_iommu_perdev_intremap )
                     return 0;
             }
@@ -693,9 +693,9 @@ static u16 __init parse_ivhd_device_spec
         else
         {
             /* set device id of ioapic */
-            ioapic_bdf[ivhd_device->special.handle].bdf = bdf;
+            ioapic_bdf[IO_APIC_ID(apic)].bdf = bdf;
 
-            ioapic_bdf[ivhd_device->special.handle].pin_setup =
xzalloc_array(
+            ioapic_bdf[IO_APIC_ID(apic)].pin_setup = xzalloc_array(
                 unsigned long, BITS_TO_LONGS(nr_ioapic_registers[apic]));
             if ( nr_ioapic_registers[apic] &&
                  !ioapic_bdf[IO_APIC_ID(apic)].pin_setup )




--
View this message in context: 
http://xen.1045712.n5.nabble.com/Xen-IOMMU-disabled-due-to-IVRS-table-Blah-blah-blah-tp5716461p5716579.html
Sent from the Xen - User mailing list archive at Nabble.com.

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


 


Rackspace

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