]> xenbits.xensource.com Git - xen.git/commitdiff
vt-d: fix wrong addr in IOTLB invalidation descriptor
authorYang Zhang <yang.z.zhang@Intel.com>
Mon, 30 Jul 2012 12:39:31 +0000 (13:39 +0100)
committerYang Zhang <yang.z.zhang@Intel.com>
Mon, 30 Jul 2012 12:39:31 +0000 (13:39 +0100)
According to vt-d specs, the addr in IOTLB invalidation descriptor
should be 4K page aligned.

Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Committed-by: Keir Fraser <keir@xen.org>
xen-unstable changeset:   25617:75eb78d6cf54
xen-unstable date:        Thu Jul 19 15:46:02 2012 +0100

xen/drivers/passthrough/vtd/qinval.c

index a1ac3ee7ba97cd37125b84069f1eee9413911dc4..6a410d8e8f8919c2c751b4ecb0134fd1fa361c32 100644 (file)
@@ -140,7 +140,7 @@ static int gen_iotlb_inv_dsc(struct iommu *iommu, int index,
     qinval_entry->q.iotlb_inv_dsc.hi.am = am;
     qinval_entry->q.iotlb_inv_dsc.hi.ih = ih;
     qinval_entry->q.iotlb_inv_dsc.hi.res_1 = 0;
-    qinval_entry->q.iotlb_inv_dsc.hi.addr = addr;
+    qinval_entry->q.iotlb_inv_dsc.hi.addr = addr >> PAGE_SHIFT_4K;
 
     unmap_vtd_domain_page(qinval_entries);
     spin_unlock_irqrestore(&qi_ctrl->qinval_lock, flags);