|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [Patch RFC 12/13] vt-d: For gnttab_transfer, If the Device-TLB flush is still
not completed when to map the transferring page to a remote
domain, schedule and wait on a waitqueue until the Device-TLB
flush is completed.
Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx>
---
xen/common/grant_table.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index f2ed64a..9bf2009 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1808,6 +1808,22 @@ gnttab_transfer(
guest_physmap_remove_page(d, gop.mfn, mfn, 0);
gnttab_flush_tlb(d);
+#ifdef HAS_PASSTHROUGH
+ /*
+ * The page freed from the domain should be on held, until the
+ * Device-TLB flush is completed. The page previously associated
+ * with the freed portion of GPA should not be reallocated for
+ * another purpose until the appropriate invalidations have been
+ * performed. Otherwise, the original page owner can still access
+ * freed page though DMA.
+ *
+ * If the Device-TLB flush is still not completed, schedule and
+ * wait on a waitqueue until the Device-TLB flush is completed.
+ */
+ if ( QI_FLUSHING(d) )
+ wait_for_qi_flushing(d);
+#endif
+
/* Find the target domain. */
if ( unlikely((e = rcu_lock_domain_by_id(gop.domid)) == NULL) )
{
--
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 |