On Wed, 2015-06-10 at 09:41 -0700, Christian Zander wrote:
> In preparation for the installation of a large page, any small page
> tables that may still exist in the target IOV address range are
> removed.  However, if a scatter/gather list entry is large enough to
> fit more than one large page, the address space for those secondary
> large pages is not cleared of conflicting small page tables.
> 
> This can cause legitimate mapping requests to fail with errors of the
> form below, potentially followed by a series of IOMMU faults:
> 
> ERROR: DMA PTE for vPFN 0xfde00 already set (to 7f83a4003 not 7e9e00083)
> 
> In this example, a 4MB scatter/gather list entry resulted in the
> successful installation of a large page @ vPFN 0xfdc00, followed by
> a failed attempt to install another large page @ vPFN 0xfde00, due to
> the presence of a pointer to a small page table @ 0x7f83a4000.
> 
> To address this problem, compute the number of large pages that fit
> into a given scatter/gather list entry, and use it to derive the
> last vPFN covered by the large page(s).
> 
> Cc: [email protected]
> Signed-off-by: Christian Zander <[email protected]>

Thanks; the fix looks correct. I've pushed it with minor cosmetic fixes
to my tree, and will send it on to Linus in a few days assuming nothing
explodes (which of course it shouldn't).

-- 
David Woodhouse                            Open Source Technology Centre
[email protected]                              Intel Corporation

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to