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
|