Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp319700pxb; Wed, 11 Nov 2020 04:40:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJzlA/dIj3RozRIspPcFFCahp2szcpTdlmnxh6xIXwfr6xDe366SQb8HWhTfNXhhlVY578WK X-Received: by 2002:a17:906:3813:: with SMTP id v19mr12438928ejc.462.1605098442230; Wed, 11 Nov 2020 04:40:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605098442; cv=none; d=google.com; s=arc-20160816; b=vmvrJxIYOTXlHplnAoKriv8OxBvV4OSQI8dLxS+1rfJIoWdcqIBQ9wbqDUioaklCqF gS05oL+8KTDWJ5IgYxNiIQQUVpUjWa90ja2B6pge4T9JdscvyPmo7u+aQ307lSgT+ZzB /C6kX6m4qk4c52qKwZKmjRGslp3a8K0Q/cIzyGkSHNvw5p7t9m85TejipTImUHngnkQA 4KLTL5UOjER4llWhMu8E31DRxYy1o+SWpc7n8nS8AGCMp9r/yxTjZT1IODq5/mXY3JKd 7z4whyw0xkWVFW5m0eQYMk1r0XpbedsgnN6VuTIhCROopDVy23mMbDmzCKf75ogiMkAz Q7ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=UYA9fNb+gKJ+srZ2u4eKNRaMLUf0ImGRB6to1aiLpGQ=; b=TGoeE/Se8zsG986AZhmx8Q5uJYxPcZ+4zH95PIEHv7a00ceHvrzoO+DHwIhn501Knu TOlxUJRsrPS9XSE3g1h48bk1GjVhpXexIvCtjS+dBmLmGGNDnQD3qMzkSb91V0+XaqPf 1PH1ZPzYDTB5ChYpDU5r1CCpOUJ3lF1QZBYCC8Zrg/NrnRHTbL6Gy1WuVFluFmVVjAtC pYTex6/6QfUuikZ+63QgzxflYi6eY/DfilvcVppmsAita7e4Pf3WLF5DafC7ImSVIrzZ JRe6d4Wmgxt5FfKVLA+K/ZhQ59UimocO7Mqz6+dEmABsZuc/fdIl3G2hpEfLC+4D9aTf QNGw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a16si1169294ejd.678.2020.11.11.04.40.18; Wed, 11 Nov 2020 04:40:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726534AbgKKMiw (ORCPT + 99 others); Wed, 11 Nov 2020 07:38:52 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:56479 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725912AbgKKMiu (ORCPT ); Wed, 11 Nov 2020 07:38:50 -0500 X-UUID: 18d1958a1676446c89e447b786e8e8f6-20201111 X-UUID: 18d1958a1676446c89e447b786e8e8f6-20201111 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 336089553; Wed, 11 Nov 2020 20:38:45 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 11 Nov 2020 20:38:43 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 11 Nov 2020 20:38:42 +0800 From: Yong Wu To: Joerg Roedel , Matthias Brugger , Rob Herring , Will Deacon , Robin Murphy CC: Krzysztof Kozlowski , Evan Green , Tomasz Figa , , , , , , , , , Nicolas Boichat , , , Greg Kroah-Hartman , Subject: [PATCH v4 00/24] MT8192 IOMMU support Date: Wed, 11 Nov 2020 20:38:14 +0800 Message-ID: <20201111123838.15682-1-yong.wu@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch mainly adds support for mt8192 Multimedia IOMMU and SMI. mt8192 also is MTK IOMMU gen2 which uses ARM Short-Descriptor translation table format. The M4U-SMI HW diagram is as below: EMI | M4U | ------------ SMI Common ------------ | +-------+------+------+----------------------+-------+ | | | | ...... | | | | | | | | larb0 larb1 larb2 larb4 ...... larb19 larb20 disp0 disp1 mdp vdec IPE IPE All the connections are HW fixed, SW can NOT adjust it. Comparing with the preview SoC, this patchset mainly adds two new functions: a) add iova 34 bits support. b) add multi domains support since several HW has the special iova region requirement. change note: v4: a) rebase on v5.10-rc1 b) Move the smi part to a independent patchset. c) Improve v7s code from Robin and Will. d) Add a mediatek iommu entry patch in MAINTAINERS. v3: https://lore.kernel.org/linux-iommu/20200930070647.10188-1-yong.wu@mediatek.com/ a) Fix DT schema issue commented from Rob. b) Fix a v7s issue. Use "_lvl" instead of "_l" in the macro(ARM_V7S_PTES_PER_LVL) since it is called in ARM_V7S_LVL_IDX which has already used "_l". c) Fix a PM suspend issue: Avoid pm suspend in pm runtime case. v2: https://lore.kernel.org/linux-iommu/20200905080920.13396-1-yong.wu@mediatek.com/ a) Convert IOMMU/SMI dt-binding to DT schema. b) Fix some comment from Pi-Hsun and Nicolas. like use generic_iommu_put_resv_regions. c) Reword some comment, like add how to use domain-id. v1: https://lore.kernel.org/linux-iommu/20200711064846.16007-1-yong.wu@mediatek.com/ Yong Wu (24): dt-bindings: iommu: mediatek: Convert IOMMU to DT schema dt-bindings: memory: mediatek: Add a common larb-port header file dt-bindings: memory: mediatek: Extend LARB_NR_MAX to 32 dt-bindings: memory: mediatek: Add domain definition dt-bindings: mediatek: Add binding for mt8192 IOMMU iommu/mediatek: Use the common mtk-smi-larb-port.h iommu/io-pgtable-arm-v7s: Use ias to check the valid iova in unmap iommu/io-pgtable-arm-v7s: Extend PA34 for MediaTek iommu/io-pgtable-arm-v7s: Clear LVL_SHIFT/BITS macro instead of the formula iommu/io-pgtable-arm-v7s: Add cfg as a param in some macros iommu/io-pgtable-arm-v7s: Quad lvl1 pgtable for MediaTek iommu/mediatek: Move hw_init into attach_device iommu/mediatek: Add device link for smi-common and m4u iommu/mediatek: Add pm runtime callback iommu/mediatek: Add power-domain operation iommu/mediatek: Add iova reserved function iommu/mediatek: Add single domain iommu/mediatek: Support master use iova over 32bit iommu/mediatek: Support up to 34bit iova in tlb flush iommu/mediatek: Support report iova 34bit translation fault in ISR iommu/mediatek: Add support for multi domain iommu/mediatek: Adjust the structure iommu/mediatek: Add mt8192 support MAINTAINERS: Add entry for MediaTek IOMMU .../bindings/iommu/mediatek,iommu.txt | 105 ------- .../bindings/iommu/mediatek,iommu.yaml | 183 ++++++++++++ MAINTAINERS | 9 + drivers/iommu/io-pgtable-arm-v7s.c | 56 ++-- drivers/iommu/mtk_iommu.c | 271 +++++++++++++++--- drivers/iommu/mtk_iommu.h | 11 +- drivers/memory/mtk-smi.c | 8 + include/dt-bindings/memory/mt2712-larb-port.h | 2 +- include/dt-bindings/memory/mt6779-larb-port.h | 2 +- include/dt-bindings/memory/mt8167-larb-port.h | 2 +- include/dt-bindings/memory/mt8173-larb-port.h | 2 +- include/dt-bindings/memory/mt8183-larb-port.h | 2 +- include/dt-bindings/memory/mt8192-larb-port.h | 240 ++++++++++++++++ .../dt-bindings/memory/mtk-smi-larb-port.h | 22 ++ include/linux/io-pgtable.h | 4 +- include/soc/mediatek/smi.h | 3 +- 16 files changed, 735 insertions(+), 187 deletions(-) delete mode 100644 Documentation/devicetree/bindings/iommu/mediatek,iommu.txt create mode 100644 Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml create mode 100644 include/dt-bindings/memory/mt8192-larb-port.h create mode 100644 include/dt-bindings/memory/mtk-smi-larb-port.h -- 2.18.0