Re: [PATCH v3 4/6] iommu/io-pgtable-arm: add support for non-strict mode

From: Will Deacon
Date: Tue Aug 14 2018 - 09:27:34 EST


On Tue, Aug 14, 2018 at 04:33:41PM +0800, Leizhen (ThunderTown) wrote:
> On 2018/8/6 9:32, Yang, Shunyong wrote:
> > On 2018/7/26 22:37, Robin Murphy wrote:
> >> Because DMA code is not the only caller of iommu_map/unmap. It's
> >> perfectly legal in the IOMMU API to partially unmap a previous mapping
> >> such that a block entry needs to be split. The DMA API, however, is a
> >> lot more constrined, and thus by construction the iommu-dma layer will
> >> never generate a block-splitting iommu_unmap() except as a result of
> >> illegal DMA API usage, and we obviously do not need to optimise for that
> >> (you will get a warning about mismatched unmaps under dma-debug, but
> >> it's a bit too expensive to police in the general case).
> >>
> >
> > When I was reading the code around arm_lpae_split_blk_unmap(), I was
> > curious in which scenario a block will be split. Now with your comments
> > "Because DMA code is not the only caller of iommu_map/unmap", it seems
> > depending on the user.
> >
> > Would you please explain this further? I mean besides DMA, which user
> > will use iommu_map/umap and how it split a block.
>
> I also think that arm_lpae_split_blk_unmap() scenario is not exist, maybe
> we should remove it, and give a warning for this wrong usage.

Can't it happen with VFIO?

Will