[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] VT-d: don't suppress invalidation address write when it is zero
Jan Beulich wrote on 2015-09-28: > GFN zero is a valid address, and hence may need invalidation done for > it just like for any other GFN. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> > --- > The comment right before the respective dmar_writeq() confuses me: > What "first" TLB reg does it talk about? Is it simply stale (albeit it > has been there already in 3.2.x, i.e. it would then likely have been > stale already at the time that code got added)? I have no idea about the 'first TLB' and didn't find any clue from spec. > > --- a/xen/drivers/passthrough/vtd/iommu.c > +++ b/xen/drivers/passthrough/vtd/iommu.c > @@ -414,7 +414,7 @@ static int flush_iotlb_reg(void *_iommu, { > struct iommu *iommu = (struct iommu *) _iommu; > int tlb_offset = ecap_iotlb_offset(iommu->ecap); > - u64 val = 0, val_iva = 0; > + u64 val = 0; > unsigned long flags; > > /* @@ -435,7 +435,6 @@ static int flush_iotlb_reg(void *_iommu, > switch ( type ) { case DMA_TLB_GLOBAL_FLUSH: > - /* global flush doesn't need set IVA_REG */ > val = DMA_TLB_GLOBAL_FLUSH|DMA_TLB_IVT; > break; > case DMA_TLB_DSI_FLUSH: > @@ -443,8 +442,6 @@ static int flush_iotlb_reg(void *_iommu, > break; case DMA_TLB_PSI_FLUSH: val = > DMA_TLB_PSI_FLUSH|DMA_TLB_IVT|DMA_TLB_DID(did); > - /* Note: always flush non-leaf currently */ > - val_iva = size_order | addr; > break; default: BUG(); > @@ -457,8 +454,11 @@ static int flush_iotlb_reg(void *_iommu, > > spin_lock_irqsave(&iommu->register_lock, flags); > /* Note: Only uses first TLB reg currently */ > - if ( val_iva ) > - dmar_writeq(iommu->reg, tlb_offset, val_iva); > + if ( type == DMA_TLB_PSI_FLUSH ) > + { > + /* Note: always flush non-leaf currently. */ > + dmar_writeq(iommu->reg, tlb_offset, size_order | addr); > + } > dmar_writeq(iommu->reg, tlb_offset + 8, val); > > /* Make sure hardware complete it */ > Best regards, Yang _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |