xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* About VT-d on ASUS P6T
@ 2010-05-11 10:09 Felix Kuperjans
  2010-05-12  1:54 ` Han, Weidong
  0 siblings, 1 reply; 5+ messages in thread
From: Felix Kuperjans @ 2010-05-11 10:09 UTC (permalink / raw)
  To: xen-devel

Hi,

as I posted on xen-users, I've successfully used pci passtrough on an ASUS P6T mainboard which is known to have really buggy RMRR tables.

I needed the iommu=passtrough and iommu_inclusive_mapping=1 command line options, combined with a little change to the RMRR parsing code:

dmar.c:

@@ -559,8 +558,7 @@
             dprintk(XENLOG_WARNING VTDPREFIX,
                 "  The RMRR (%"PRIx64", %"PRIx64") is incorrect!\n",
                 rmrru->base_address, rmrru->end_address);
-            xfree(rmrru);
-            ret = -EFAULT;
+            acpi_register_rmrr_unit(rmrru);
         }
         else
         {

This way, the condition that causes the error printed above, does not lead to an abortion of VT-d code, but instead registers the RMRR unit as if it was correct.
VT-d is working properly afterwards and I've tested some devices successfully.

Probably, you would prefer to choose the action based on some command line option (like iommu_inclusive_mapping=1) instead of ignoring this error by default.

Regards,
Felix

^ permalink raw reply	[flat|nested] 5+ messages in thread
* About VT-d on ASUS P6T
@ 2010-05-11  9:59 Felix Kuperjans
  0 siblings, 0 replies; 5+ messages in thread
From: Felix Kuperjans @ 2010-05-11  9:59 UTC (permalink / raw)
  To: xen-devel

Hi,

as I posted on xen-users, I've successfully used pci passtrough on an
ASUS P6T mainboard which is known to have really buggy RMRR tables.

I needed the iommu=passtrough and iommu_inclusive_mapping=1 command line
options, combined with a little change to the RMRR parsing code:

dmar.c:

@@ -559,8 +558,7 @@
             dprintk(XENLOG_WARNING VTDPREFIX,
                 "  The RMRR (%"PRIx64", %"PRIx64") is incorrect!\n",
                 rmrru->base_address, rmrru->end_address);
-            xfree(rmrru);
-            ret = -EFAULT;
+            acpi_register_rmrr_unit(rmrru);
         }
         else
         {

This way, the condition that causes the error printed above, does not
lead to an abortion of VT-d code, but instead registers the RMRR unit as
if it was correct.
VT-d is working properly afterwards and I've tested some devices
successfully.

Probably, you would prefer to choose the action based on some command
line option (like iommu_inclusive_mapping=1) instead of ignoring this
error by default.

Regards,
Felix

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-05-12 10:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-11 10:09 About VT-d on ASUS P6T Felix Kuperjans
2010-05-12  1:54 ` Han, Weidong
2010-05-12  8:57   ` Felix Kuperjans
2010-05-12 10:11     ` Han, Weidong
  -- strict thread matches above, loose matches on Subject: below --
2010-05-11  9:59 Felix Kuperjans

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).