This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Intel IOMMU: Assigning IGD device: 00:02.1 on some machines,

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Intel IOMMU: Assigning IGD device: 00:02.1 on some machines, causes Xen to freeze for >2mins because of RMRR mappings
From: Tom Rotenberg <tom.rotenberg@xxxxxxxxx>
Date: Sun, 29 Nov 2009 19:56:20 +0200
Cc: "Han, Weidong" <weidong.han@xxxxxxxxx>
Delivery-date: Sun, 29 Nov 2009 09:56:43 -0800
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:cc:content-type; bh=lMdBrJHDCwD5s5syaEjrU3k18TNbncLHbFKIAUJOxI0=; b=fb7hdpspQ1L3pTYiC6SwvYoKbeGWbh7DzOjMKxkp/QZu8hLW7FJHBnKpDsT1FtOkod 0T/lTxtmNNGg7ft4myH4KYW1rUy1rFFDGHN/1CaK6SneswzSvtoLlHqrbZmwdgoL72Mm Ws7n+UiNxaG57GKwHjTd/MEkBLyrlQA67e9DM=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=q24upSBpILHyFAi2MHiR34NGgfkRk3DxxSEHyeA2tB96YWMKfHFdU/qdliq+75amwF MAECOHy9ICBgiFIAgLlS9QizjUoNOBpTbEvxwhIEc7Ke3Knf3M3S1T4Uaq6c2l0q91sh aYj8+kkbOAD5/l98V5B9rSLNYPD3ktJeqL1TQ=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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?


Xen-devel mailing list