Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3694884ybi; Tue, 18 Jun 2019 05:11:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqwc3YTadUJjA2C7VMsxHG9UgnMkn6e/+MUxax0tRpuAvC5BmLP50AgEwrrRMtx33bpXTW1u X-Received: by 2002:a17:902:b592:: with SMTP id a18mr88889880pls.278.1560859902285; Tue, 18 Jun 2019 05:11:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560859902; cv=none; d=google.com; s=arc-20160816; b=attW4EgRvk4oi/umUMkdDjnmxnGG9TMNCiHz1oe4muY5jZHo00iES4J/z3s9Qf4sHM KvWzbaSdHVQxBcbzICplXd/C82QFSyykvs4+pB5d0PUSW3zOJ5T5a1Yfo/mloKJIiBfo i7oWlqc+s7xaUITlNC/XjtppSadL4YT+sxYvbXyvREvhHVDtcDZ08mH3xoX83Yc7u58Z +M7sIxy3qGzL2r49q/7ob4ktI0k/iw/EnJ6MGIPCqhmp8JtZO3rZ6TmidQ8GuotTzaP7 RFD4D73kOV9OC68OUEIloAd7ZGr0KH6lHp/SI2t6S4mvTAFzOn5Ft1FEBwBK2y7MlVUT 5oKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id; bh=9criet4FNnMK9xvw64llfIEvvzPYVEAoqpZsCaer6l0=; b=0nU3Ybs3mT4XgA5kMmI26B7QaeK8c+iaLAH46y2YKWR7TvR8Xe03Bq0Izt7NuCd4BW mSF86mn7Y8AobA54r7dG5Lax57bXaqHPvq7Ubo8z9QEM7kF79ZEXuDAVkA/xi7xfJd0I lrWuy4N/FBS241E0HIecfSZ1Zfg9oNVSQtbi/KpX1k050ZGAUlUXSsNz5Cq5wdmnc7P9 Ob01BY0zmXXCkL0DZijF7GzhOfewsjh7EEeqn6FRzDMmP+tq4GFMxPU3jFaT3fTMgpUx DgeT7iF9SqTRcRnA83W68wvGlik4VWUN3a1NzWSxQEfLQ0TDAOXip+NGi/HGpUHthcxR av3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b69si2172095pjc.104.2019.06.18.05.11.26; Tue, 18 Jun 2019 05:11:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729435AbfFRMJS (ORCPT + 99 others); Tue, 18 Jun 2019 08:09:18 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:25327 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728845AbfFRMJN (ORCPT ); Tue, 18 Jun 2019 08:09:13 -0400 X-UUID: 869e132c44684e91b1a10166255098c0-20190618 X-UUID: 869e132c44684e91b1a10166255098c0-20190618 Received: from mtkcas36.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 634461938; Tue, 18 Jun 2019 20:09:06 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 18 Jun 2019 20:09:04 +0800 Received: from [10.17.3.153] (172.27.4.253) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 18 Jun 2019 20:09:03 +0800 Message-ID: <1560859743.8082.23.camel@mhfsdcap03> Subject: Re: [PATCH v7 14/21] iommu/mediatek: Add mmu1 support From: Yong Wu To: Tomasz Figa CC: , , Nicolas Boichat , srv_heupstream , Joerg Roedel , Will Deacon , "Linux Kernel Mailing List" , Evan Green , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Yingjoe Chen =?UTF-8?Q?=28=E9=99=B3=E8=8B=B1=E6=B4=B2=29?= , , Robin Murphy , "Matthias Kaehlcke" , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," Date: Tue, 18 Jun 2019 20:09:03 +0800 In-Reply-To: References: <1560169080-27134-1-git-send-email-yong.wu@mediatek.com> <1560169080-27134-15-git-send-email-yong.wu@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2019-06-18 at 15:19 +0900, Tomasz Figa wrote: > On Mon, Jun 10, 2019 at 9:21 PM Yong Wu wrote: > > > > Normally the M4U HW connect EMI with smi. the diagram is like below: > > EMI > > | > > M4U > > | > > smi-common > > | > > ----------------- > > | | | | ... > > larb0 larb1 larb2 larb3 > > > > Actually there are 2 mmu cells in the M4U HW, like this diagram: > > > > EMI > > --------- > > | | > > mmu0 mmu1 <- M4U > > | | > > --------- > > | > > smi-common > > | > > ----------------- > > | | | | ... > > larb0 larb1 larb2 larb3 > > > > This patch add support for mmu1. In order to get better performance, > > we could adjust some larbs go to mmu1 while the others still go to > > mmu0. This is controlled by a SMI COMMON register SMI_BUS_SEL(0x220). > > > > mt2712, mt8173 and mt8183 M4U HW all have 2 mmu cells. the default > > value of that register is 0 which means all the larbs go to mmu0 > > defaultly. > > > > This is a preparing patch for adjusting SMI_BUS_SEL for mt8183. > > > > Signed-off-by: Yong Wu > > Reviewed-by: Evan Green > > --- > > drivers/iommu/mtk_iommu.c | 46 +++++++++++++++++++++++++++++----------------- > > 1 file changed, 29 insertions(+), 17 deletions(-) > > > > diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c > > index 3a14301..ec4ce74 100644 > > --- a/drivers/iommu/mtk_iommu.c > > +++ b/drivers/iommu/mtk_iommu.c > > @@ -72,26 +72,32 @@ > > #define F_INT_CLR_BIT BIT(12) > > > > #define REG_MMU_INT_MAIN_CONTROL 0x124 > > -#define F_INT_TRANSLATION_FAULT BIT(0) > > -#define F_INT_MAIN_MULTI_HIT_FAULT BIT(1) > > -#define F_INT_INVALID_PA_FAULT BIT(2) > > -#define F_INT_ENTRY_REPLACEMENT_FAULT BIT(3) > > -#define F_INT_TLB_MISS_FAULT BIT(4) > > -#define F_INT_MISS_TRANSACTION_FIFO_FAULT BIT(5) > > -#define F_INT_PRETETCH_TRANSATION_FIFO_FAULT BIT(6) > > + /* mmu0 | mmu1 */ > > +#define F_INT_TRANSLATION_FAULT (BIT(0) | BIT(7)) > > +#define F_INT_MAIN_MULTI_HIT_FAULT (BIT(1) | BIT(8)) > > +#define F_INT_INVALID_PA_FAULT (BIT(2) | BIT(9)) > > +#define F_INT_ENTRY_REPLACEMENT_FAULT (BIT(3) | BIT(10)) > > +#define F_INT_TLB_MISS_FAULT (BIT(4) | BIT(11)) > > +#define F_INT_MISS_TRANSACTION_FIFO_FAULT (BIT(5) | BIT(12)) > > +#define F_INT_PRETETCH_TRANSATION_FIFO_FAULT (BIT(6) | BIT(13)) > > If there are two IOMMUs, shouldn't we have two driver instances handle > them, instead of making the driver combine them two internally? Actually it means only one IOMMU(M4U) HW here. Each a M4U HW has two small iommu cells which have independent MTLB. As the diagram above, M4U contain mmu0 and mmu1. MT8173 and MT8183 have only one M4U HW while MT2712 have 2 M4U HWs(two driver instances). > > And, what is even more important from security point of view actually, > have two separate page tables (aka IOMMU groups) for them? Each a IOMMU(M4U) have its own pagetable, thus, mt8183 have only one pagetable while mt2712 have two. > > Best regards, > Tomasz > > _______________________________________________ > Linux-mediatek mailing list > Linux-mediatek@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek