WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] vt-d: Disable PMR on every vt-d engine.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] vt-d: Disable PMR on every vt-d engine.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 09 Nov 2007 04:20:51 -0800
Delivery-date: Fri, 09 Nov 2007 04:24:50 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1194426828 0
# Node ID b544448502a40d510d3ee678c85e7db6b9f9474c
# Parent  14faf0a9412314c028b55b3f6a25b3495cf20eb3
vt-d: Disable PMR on every vt-d engine.

Signed-off-by Gang Wei (Jimmy) <gang.wei@xxxxxxxxx>
Signed-off-by Kevin Tian <kevin.tian@xxxxxxxxx>
---
 xen/arch/x86/hvm/vmx/vtd/intel-iommu.c |    9 ++++-----
 xen/arch/x86/hvm/vmx/vtd/utils.c       |   15 ++++++++++-----
 2 files changed, 14 insertions(+), 10 deletions(-)

diff -r 14faf0a94123 -r b544448502a4 xen/arch/x86/hvm/vmx/vtd/intel-iommu.c
--- a/xen/arch/x86/hvm/vmx/vtd/intel-iommu.c    Tue Nov 06 16:04:13 2007 +0000
+++ b/xen/arch/x86/hvm/vmx/vtd/intel-iommu.c    Wed Nov 07 09:13:48 2007 +0000
@@ -688,6 +688,9 @@ static int iommu_enable_translation(stru
             break;
         cpu_relax();
     }
+
+    /* Disable PMRs when VT-d engine takes effect per spec definition */
+    disable_pmr(iommu);
     spin_unlock_irqrestore(&iommu->register_lock, flags);
     return 0;
 }
@@ -1767,7 +1770,7 @@ int iommu_setup(void)
     struct hvm_iommu *hd  = domain_hvm_iommu(dom0);
     struct acpi_drhd_unit *drhd;
     struct iommu *iommu;
-    unsigned long i, status;
+    unsigned long i;
 
     if ( !vtd_enabled )
         return 0;
@@ -1796,10 +1799,6 @@ int iommu_setup(void)
     setup_dom0_rmrr();
     if ( enable_vtd_translation() )
         goto error;
-
-    status = dmar_readl(iommu->reg, DMAR_PMEN_REG);
-    if (status & DMA_PMEN_PRS)
-        disable_pmr(iommu);
 
     return 0;
 
diff -r 14faf0a94123 -r b544448502a4 xen/arch/x86/hvm/vmx/vtd/utils.c
--- a/xen/arch/x86/hvm/vmx/vtd/utils.c  Tue Nov 06 16:04:13 2007 +0000
+++ b/xen/arch/x86/hvm/vmx/vtd/utils.c  Wed Nov 07 09:13:48 2007 +0000
@@ -67,25 +67,30 @@ int vtd_hw_check(void)
 /* Disable vt-d protected memory registers. */
 void disable_pmr(struct iommu *iommu)
 {
-    unsigned long start_time, status;
+    unsigned long start_time;
     unsigned int val;
 
     val = dmar_readl(iommu->reg, DMAR_PMEN_REG);
+    if ( !(val & DMA_PMEN_PRS) )
+        return;
+
     dmar_writel(iommu->reg, DMAR_PMEN_REG, val & ~DMA_PMEN_EPM);
     start_time = jiffies;
 
     for ( ; ; )
     {
-        status = dmar_readl(iommu->reg, DMAR_PMEN_REG);
-        if ( (status & DMA_PMEN_PRS) == 0 )
+        val = dmar_readl(iommu->reg, DMAR_PMEN_REG);
+        if ( (val & DMA_PMEN_PRS) == 0 )
             break;
+
         if ( time_after(jiffies, start_time + DMAR_OPERATION_TIMEOUT) )
-            panic("Cannot set QIE field for queue invalidation\n");
+            panic("Disable PMRs timeout\n");
+
         cpu_relax();
     }
 
     dprintk(XENLOG_INFO VTDPREFIX,
-            "disabled protected memory registers\n");
+            "Disabled protected memory registers\n");
 }
 
 #if defined(__x86_64__)

_______________________________________________
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] vt-d: Disable PMR on every vt-d engine., Xen patchbot-unstable <=