From patchwork Wed Sep 19 12:35:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurentiu Tudor X-Patchwork-Id: 10605777 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8520A6CB for ; Wed, 19 Sep 2018 12:39:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 72CE12BF72 for ; Wed, 19 Sep 2018 12:39:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 65F6D2BF90; Wed, 19 Sep 2018 12:39:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E505C2BF72 for ; Wed, 19 Sep 2018 12:39:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=62qX3PVtyx+bw7T1l4Hk3ed+ZGilI3iHMDkZFKlLITo=; b=kKh C55XR/QjAsadu7it+2CtMtap/lUpnoZ0ssrear0jYMfGPEG3b9p8jGnO8f6QtCqeoDS1IykKXsfmO NPY0j46UeDcC3OxVD2OjTuU42HyP864WAEspVaW0/8vXMSnjrMa2PpZHxp51MmPMS5ZFcsYwa2j0H IV0kzioJlcfRyujSrDwHazduceP1UaR0+Vom+1bsHpTYIo2xwpikdyl/mVAJarFW2YyS9jEaK81AU cM9QHJ7KqunxAnpJ5xfj7iFWYiiKPNAlCJbrIFXmnfmLlbdxYHAEPvgikmd38pQ87Ku8atmZB1a4i e0CQfFsLzpl0xnxRJgKdV7j2jhbIhiQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1g2ble-0007wK-Ba; Wed, 19 Sep 2018 12:39:42 +0000 Received: from inva021.nxp.com ([92.121.34.21]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g2bie-0006g2-8b for linux-arm-kernel@lists.infradead.org; Wed, 19 Sep 2018 12:36:41 +0000 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id DF63F2001F4; Wed, 19 Sep 2018 14:36:17 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id D2E3F20016E; Wed, 19 Sep 2018 14:36:17 +0200 (CEST) Received: from fsr-ub1864-101.ea.freescale.net (fsr-ub1864-101.ea.freescale.net [10.171.82.97]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 8F83C2061D; Wed, 19 Sep 2018 14:36:16 +0200 (CEST) From: laurentiu.tudor@nxp.com To: devicetree@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 00/21] SMMU enablement for NXP LS1043A and LS1046A Date: Wed, 19 Sep 2018 15:35:52 +0300 Message-Id: <20180919123613.15092-1-laurentiu.tudor@nxp.com> X-Mailer: git-send-email 2.17.1 X-Virus-Scanned: ClamAV using ClamSMTP X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180919_053636_599004_0A5C6626 X-CRM114-Status: GOOD ( 12.98 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: madalin.bucur@nxp.com, roy.pledge@nxp.com, leoyang.li@nxp.com, shawnguo@kernel.org, davem@davemloft.net, Laurentiu Tudor MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Laurentiu Tudor This patch series adds SMMU support for NXP LS1043A and LS1046A chips and consists mostly in important driver fixes and the required device tree updates. It touches several subsystems and consists of three main parts: - changes in soc/drivers/fsl/qbman drivers adding iommu mapping of reserved memory areas, fixes and defered probe support - changes in drivers/net/ethernet/freescale/dpaa_eth drivers consisting in misc dma mapping related fixes and probe ordering - addition of the actual arm smmu device tree node together with various adjustments to the device trees Performance impact Running iperf benchmarks in a back-to-back setup (both sides having smmu enabled) on a 10GBps port show an important networking performance degradation of around %40 (9.48Gbps linerate vs 5.45Gbps). If you need performance but without SMMU support you can use "iommu.passthrough=1" to disable SMMU. USB issue and workaround There's a problem with the usb controllers in these chips generating smaller, 40-bit wide dma addresses instead of the 48-bit supported at the smmu input. So you end up in a situation where the smmu is mapped with 48-bit address translations, but the device generates transactions with clipped 40-bit addresses, thus smmu context faults are triggered. I encountered a similar situation for mmc that I managed to fix in software [1] however for USB I did not find a proper place in the code to add a similar fix. The only workaround I found was to add this kernel parameter which limits the usb dma to 32-bit size: "xhci-hcd.quirks=0x800000". This workaround if far from ideal, so any suggestions for a code based workaround in this area would be greatly appreciated. The patch set is based on net-next so, if generally agreed, I'd suggest to get the patches through the netdev tree after getting all the Acks. [1] https://patchwork.kernel.org/patch/10506627/ Laurentiu Tudor (21): soc/fsl/qman: fixup liodns only on ppc targets soc/fsl/bman: map FBPR area in the iommu soc/fsl/qman: map FQD and PFDR areas in the iommu soc/fsl/qman-portal: map CENA area in the iommu soc/fsl/qbman: add APIs to retrieve the probing status soc/fsl/qman_portals: defer probe after qman's probe soc/fsl/bman_portals: defer probe after bman's probe soc/fsl/qbman_portals: add APIs to retrieve the probing status fsl/fman: backup and restore ICID registers fsl/fman: add API to get the device behind a fman port dpaa_eth: defer probing after qbman dpaa_eth: base dma mappings on the fman rx port dpaa_eth: fix iova handling for contiguous frames dpaa_eth: fix iova handling for sg frames dpaa_eth: fix SG frame cleanup arm64: dts: ls1046a: add smmu node arm64: dts: ls1043a: add smmu node arm64: dts: ls104xa: set mask to drop TBU ID from StreamID arm64: dts: ls104x: add missing dma ranges property arm64: dts: ls104x: add iommu-map to pci controllers arm64: dts: ls104x: make dma-coherent global to the SoC .../arm64/boot/dts/freescale/fsl-ls1043a.dtsi | 52 ++++++- .../arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 48 +++++++ .../net/ethernet/freescale/dpaa/dpaa_eth.c | 136 ++++++++++++------ drivers/net/ethernet/freescale/fman/fman.c | 35 ++++- drivers/net/ethernet/freescale/fman/fman.h | 4 + .../net/ethernet/freescale/fman/fman_port.c | 14 ++ .../net/ethernet/freescale/fman/fman_port.h | 2 + drivers/soc/fsl/qbman/bman_ccsr.c | 23 +++ drivers/soc/fsl/qbman/bman_portal.c | 20 ++- drivers/soc/fsl/qbman/qman_ccsr.c | 30 ++++ drivers/soc/fsl/qbman/qman_portal.c | 35 +++++ include/soc/fsl/bman.h | 16 +++ include/soc/fsl/qman.h | 17 +++ 13 files changed, 379 insertions(+), 53 deletions(-)