|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] vtd: only enable Interrupt Remapping if Q
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1237540255 0
# Node ID abb87a8387acbfd80a9e3475206f392db12e9c5e
# Parent e5bed83d5180a37126ae60c3e7a43a5aff382b69
vtd: only enable Interrupt Remapping if Queued Invalidation is also enabled.
If Queued Invalidation is not supported or not enabled, we should not
enable Interrupt Remapping even if HW supports it, because Interrupt
Remapping needs Queued Invalidation to invalidate Interrupt Remapping
Cache.
Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>
---
xen/drivers/passthrough/vtd/iommu.c | 8 ++++++++
1 files changed, 8 insertions(+)
diff -r e5bed83d5180 -r abb87a8387ac xen/drivers/passthrough/vtd/iommu.c
--- a/xen/drivers/passthrough/vtd/iommu.c Fri Mar 20 08:59:47 2009 +0000
+++ b/xen/drivers/passthrough/vtd/iommu.c Fri Mar 20 09:10:55 2009 +0000
@@ -1782,6 +1782,14 @@ int intel_vtd_setup(void)
if ( iommu_intremap && !ecap_intr_remap(iommu->ecap) )
iommu_intremap = 0;
}
+
+ if ( !iommu_qinval && iommu_intremap )
+ {
+ iommu_intremap = 0;
+ gdprintk(XENLOG_WARNING VTDPREFIX, "Interrupt Remapping disabled "
+ "since Queued Invalidation isn't supported or enabled.\n");
+ }
+
#define P(p,s) printk("Intel VT-d %s %ssupported.\n", s, (p)? "" : "not ")
P(iommu_snoop, "Snoop Control");
P(iommu_passthrough, "DMA Passthrough");
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] vtd: only enable Interrupt Remapping if Queued Invalidation is also enabled.,
Xen patchbot-unstable <=
|
|
|
|
|