[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Intel IOMMU: Assigning IGD device: 00:02.1 on some machines, causes Xen to freeze for >2mins because of RMRR mappings
Hi All, I am using a Dell E6400 machine, with IGD (Intel graphics device), which i'm trying to pass-through into a domU with Windows XP. When i assign only the 00:02.0 device, it seems to work ok, but when i try to assign the 00:02.1 device, the whole machine seems to freeze form more then 2 mins, causing a lot of messgaes in dom0, such as: SATA doesn't respond, etc. After some analysis i made, i discovered the followings: * When calling the (Intel) iommu_assign_device, it checks if the device has any details in the RMRR table, and if so it calls the 'iommu_prepare_rmrr_dev()' function. * The device 00:02.1 has an RMRR information, which details the whole area between: 0x7dc00000 to 0x80000000 (it contains ~9000 pages) * For each such page, Xen calls the 'intel_iommu_map_page()' function. This causes the hypercall to take a lot of time to process, and this makes dom0 to stop getting responds from devices, such as SATA, etc,, which may lead to a whole system crash. My question are: 1. Can this hypercall be in some way preemptive, so it won't stuck the whole system (i noticed that there are other hypercalls, which are preemptive) ? 2. Why can't the mapping of the pages, be done in batches of pages, instead of mapping each page in a separate call to 'intel_iommu_map_page()' ? 3. i noticed that for USB devices, the code there ignores the USB RMRR... can this be done also for the 00:02.1 device? Tom _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |