| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [Patch RFC 09/13] vt-d: Put the page in Queued Invalidation(QI) interrupt handler if
 the Device-TLB flush is completed.
Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx>
---
 xen/drivers/passthrough/vtd/iommu.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
diff --git a/xen/drivers/passthrough/vtd/iommu.c 
b/xen/drivers/passthrough/vtd/iommu.c
index 5c03e41..1297dea 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1154,6 +1154,7 @@ static void _do_iommu_qi(struct iommu *iommu)
 {
     unsigned long nr_dom, i;
     struct domain *d = NULL;
+    struct page_info *page = NULL;
 
 scan_again:
     /*
@@ -1177,6 +1178,15 @@ scan_again:
             {
                 qi_table_data(d) = 0;
                 qi_table_pollslot(d) = 0;
+                spin_lock(&qi_page_lock(d));
+                while ( (page = page_list_remove_head(
+                                &qi_hold_page_list(d))) )
+                {
+                    INTEL_IOMMU_DEBUG("IOMMU:  Put page mfn : %"PRIx64"\n",
+                                      page_to_mfn(page));
+                    put_page(page);
+                }
+                spin_unlock(&qi_page_lock(d));
                 QI_FLUSHING(d) = 0;
             }
             rcu_unlock_domain(d);
-- 
1.8.3.2
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |