• Y
    iommu/mediatek: Support for multi domains · c3045f39
    Yong Wu 提交于
    Some HW IP(ex: CCU) require the special iova range. That means the iova
    got from dma_alloc_attrs for that devices must locate in his special range.
    In this patch, we prepare a iommu group(domain) for each a iova range
    requirement.
    
    Meanwhile we still use one pagetable which support 16GB iova.
    
    After this patch, If the iova range of a master is over 4G, the master
    should:
    a) Declare its special dma-ranges in its dtsi node. For example, If we
       preassign the iova 4G-8G for vcodec, then the vcodec dtsi node should
       add this:
       /*
        * iova start at 0x1_0000_0000, pa still start at 0x4000_0000
        * size is 0x1_0000_0000.
        */
       dma-ranges = <0x1 0x0 0x0 0x40000000 0x1 0x0>;  /* 4G ~ 8G */
     Note: we don't have a actual bus concept here. the master doesn't have its
     special parent node, thus this dma-ranges can only be put in the master's
     node.
    
    b) Update the dma_mask:
      dma_set_mask_and_coherent(dev, DMA_BIT_MASK(33));
    Signed-off-by: NYong Wu <yong.wu@mediatek.com>
    Reviewed-by: NTomasz Figa <tfiga@chromium.org>
    Link: https://lore.kernel.org/r/20210111111914.22211-29-yong.wu@mediatek.comSigned-off-by: NWill Deacon <will@kernel.org>
    c3045f39
mtk_iommu.c 29.4 KB