• Yong Wu's avatar
    iommu/mediatek: Fix protect memory setting · 70ca608b
    Yong Wu authored
    In MediaTek's IOMMU design, When a iommu translation fault occurs
    (HW can NOT translate the destination address to a valid physical
    address), the IOMMU HW output the dirty data into a special memory
    to avoid corrupting the main memory, this is called "protect memory".
    the register(0x114) for protect memory is a little different between
    mt8173 and mt2712.
    
    In the mt8173, bit[30:6] in the register represents [31:7] of the
    physical address. In the 4GB mode, the register bit[31] should be 1.
    While in the mt2712, the bits don't shift. bit[31:7] in the register
    represents [31:7] in the physical address, and bit[1:0] in the
    register represents bit[33:32] of the physical address if it has.
    
    Fixes: e6dec923 ("iommu/mediatek: Add mt2712 IOMMU support")
    Reported-by: default avatarHonghui Zhang <honghui.zhang@mediatek.com>
    Signed-off-by: default avatarYong Wu <yong.wu@mediatek.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    70ca608b
mtk_iommu.c 20.5 KB