Hi folks,
This sounds a lot like an issue I am working on right now. A
recent change to the vtd code changed the way the 1 to 1 page mapping for dom0
is done (look at intel_iommu_domain_init() for dom0). The change was to query
the e820 map for memory regions that were usable RAM and only map those into
the iommus for dom0. Thus reserved regions were no longer mapped in. When the RMRR
values do not report the correct values for required 1 to 1 reserved memory
regions, the needed regions do not get mapped in. Thus device DMA to these
regions causes vtd faults and in out case a hang. It is indeed a BIOS bug;
perhaps this is the same issue you are seeing?
Anyway, I am working on a workaround that I will be pushing
upstream this week. A parameter will allow you to include reserved memory
regions in the mappings. It is not ideal (less secure) but better than hanging
or crashing…
Thanks
Ross
From:
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Yoshiharu
Mori
Sent: Saturday, February 21, 2009 11:58 AM
To: Christian Tramnitz
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; xen-users@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Re: [Xen-users] Re: VT-D RMRR is incorrect
Hi Christian
Yoshiharu, have you tested Xen-unstable yet? When commenting out the EFAULT you
mentioned I get an immediate panic related to the rmrr address conflict on the
latest 3.4-unstable tree.
I also tried Xen-unstable, but
could not boot xen when I commented out the EFAULT.
(The boot message was too fast and my machine was rebooted soon, I counldn't
understand details.)
BTW, I got new BIOS from SUPERMICRO. But I cannot test till next week end.
Another trouble was happend on my board, I sent it to distributor and change
it.
@Xen devs: Is this something that could be worked around in
Xen or do we really have to rely on exact RMRR values for vtd to work?
See http://permalink.gmane.org/gmane.comp.emulators.xen.user/43937
for more details.
The RMRR regions are expencted to be used only for USB and
UMA Graphics legacy usages for reserved memory, I think it may be possible to
use vtd with limitation.
Thanks,
Yoshiharu Mori