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

RE: [Xen-devel] About VT-d on ASUS P6T



>So there will be some devices that do not work while others work - can I
>figure out which devices are affected by the incorrect RMRR?

"iommu=verbose" will list all RMRRs and their relevant devices. 

>In addition, only setting iommu=passtrough caused XEN to disable VT-d
>completely, altough some devices actually can be passtroughed to the
>domU perfectly.

Yes, only setting iommu=passthrough causes Xen to disable VT-d, because 
acpi_parse_one_rmrr returns "-EFAULT" when a RMRR is incorrect. Indeed, 
incorrect RMRR only impacts its relevant device, but it requires setting 
iommu=passthrough, and also it causes problems when assign corresponding 
devices. It's an "obvious" issue of BIOS. There is not a clean way to handle 
this BIOS issue in Xen upstream. Of course, you can hack it by yourself to work 
for you. But I encourage you to report it to the vendor and get it fixed in 
BIOS.

Regards,
Weidong


Am 12.05.2010 03:54, schrieb Han, Weidong:
> Your code changes just let xen not disable VT-d, but actually 
> "iommu=passthrough" avoids problems of incorrect RMRR. This option makes dom0 
> not use VT-d, therefore incorrect RMRR won't be used by device. But if you 
> assign the device whose RMRR incorrect to guest, it still causes problems. 
>
> Regards,
> Weidong
>
> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Felix Kuperjans
> Sent: Tuesday, May 11, 2010 6:09 PM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-devel] About VT-d on ASUS P6T
>
> 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
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>
>   

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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