From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D905CC3A589 for ; Tue, 20 Aug 2019 19:07:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A8F902332B for ; Tue, 20 Aug 2019 19:07:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="GhcQ6qV6"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="M3Z+8dS+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730774AbfHTTHE (ORCPT ); Tue, 20 Aug 2019 15:07:04 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:45040 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729833AbfHTTGo (ORCPT ); Tue, 20 Aug 2019 15:06:44 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 6D55660DAA; Tue, 20 Aug 2019 19:06:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566328002; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=GhcQ6qV6B8kUwkoMoqFmXdP63+d43ElRbdPfJYL4xk/YM9xcOLLnl0LYYps5D2CDD Esz6sMkXkB4SZufol9P10r5OLOwicA5bJsfHdUZgeKorPp0SP4okjKShVgVGDv0goI yiEwTPGL6q5UPU0Ebt8/TFBJgF1zf9RvlxUn/BmM= Received: from jcrouse1-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id E2A2A608FC; Tue, 20 Aug 2019 19:06:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566327999; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=M3Z+8dS+lEFL8B05ojyqH3qIFG+culCff2FSu0EKY/ry/7K1KKZg7C+hKtsTsrbnv r7SpMsyJIV9oQxPSzEoaALo1KWXvI5skX+lAVXXVB5SrxlSgeY4eBsNUb67pkptlr6 71/65oHOvbmE6FBMuD0JfkDviPqBoXzhgDZmtu5M= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E2A2A608FC Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, Bjorn Andersson , Sean Paul , Thomas Zimmermann , Sharat Masetty , dri-devel@lists.freedesktop.org, Fritz Koenig , Robin Murphy , Rob Herring , David Airlie , Joerg Roedel , Allison Randal , Thomas Gleixner , Douglas Anderson , Rob Clark , Greg Kroah-Hartman , Jeffrey Hugo , devicetree@vger.kernel.org, Will Deacon , Wen Yang , Alexios Zavras , Sravanthi Kollukuduru , Jeykumar Sankaran , linux-arm-kernel@lists.infradead.org, Bruce Wang , linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, Boris Brezillon , Abhinav Kumar , Jonathan Marek , Georgi Djakov , Mark Rutland , Mamta Shukla , Daniel Vetter Subject: [PATCH 0/7] iommu/arm-smmu: Split pagetable support for Adreno GPUs Date: Tue, 20 Aug 2019 13:06:25 -0600 Message-Id: <1566327992-362-1-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org This is another iteration to support split pagetables for Adreno GPUs as part of an incremental process to enable per-context pagetables. In order to support per-context pagetables the GPU needs to enable split pagetables so that we can store the global buffers in the TTBR1 space leaving the GPU free to program the TTBR0 register with the page address of a context specific pt. Previous revisions of this series can be found at [1] and [2]. This iteration is built on top of the arm-smmu-impl and arm-smmu-v2 rework code from Robin Murphy [3] and [4]. This code is based on the realization that when split pagetables are enabled the configuration for the T1 address space is identical to that of the T0 space, so we can just take the TCR configuration provided by io-pgtable, duplicate it and shift it by 16 bits. Since the current split pagetable implementation is specific to the Adreno GPUs we can also take a small shortcut and only allow split pagetables for SMMUs with a 49 bit upstream bus which allows us to use the default configuration for the sign extension bit and we can avoid a lot of extra code to handle different upstream bus sizes that will never get used. The first patch implements the split pagetable support for arm-smmu-v2. The second adds a SMMU model for the Adreno GPU SMMU and enables the split pagetables if conditions warrant. The 3rd and 4th patches add a domain attribute to query the status of split pagetables. The remaining patches modify drm/msm slightly to allow a6xx targets to recognize if split pagetables are enabled and adjust the address space accordingly. This series only includes support for split pagetables because I wanted to get this out for discussion and I haven't ported over the aux domain code to this kernel version, but I don't suspect it will end up being much different than previous versions [5]. [1] https://patchwork.freedesktop.org/series/63403/ [2] https://patchwork.freedesktop.org/series/64874/ [3] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/037905.html [4] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/038244.html [5] https://patchwork.freedesktop.org/patch/307601/ Jordan Crouse (7): iommu/arm-smmu: Support split pagetables dt-bindings: arm-smmu: Add Adreno GPU variant iommu/arm-smmu: Add a SMMU variant for the Adreno GPU iommu: Add DOMAIN_ATTR_SPLIT_TABLES iommu/arm-smmu: Support DOMAIN_ATTR_SPLIT_TABLES drm/msm: Create the msm_mmu object independently from the address space drm/msm: Use per-target functions to set up address spaces .../devicetree/bindings/iommu/arm,smmu.txt | 7 +++ drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 28 +++++++++++ drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 56 ++++++++++++++++++++++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 43 ++++++++++++++--- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 4 -- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 13 ++++- drivers/gpu/drm/msm/msm_drv.h | 8 +--- drivers/gpu/drm/msm/msm_gem_vma.c | 30 ++---------- drivers/gpu/drm/msm/msm_gpu.c | 51 ++------------------ drivers/gpu/drm/msm/msm_gpu.h | 4 +- drivers/iommu/arm-smmu-impl.c | 15 ++++++ drivers/iommu/arm-smmu.c | 46 ++++++++++++++++-- drivers/iommu/arm-smmu.h | 2 + include/linux/iommu.h | 1 + 20 files changed, 237 insertions(+), 111 deletions(-) -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6F13C3A589 for ; Tue, 20 Aug 2019 19:07:03 +0000 (UTC) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B92D52332A for ; Tue, 20 Aug 2019 19:07:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="cGY7R235"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="M3Z+8dS+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B92D52332A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 662E4D12; Tue, 20 Aug 2019 19:06:46 +0000 (UTC) Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 3F5AFC79 for ; Tue, 20 Aug 2019 19:06:44 +0000 (UTC) Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 0FC5389B for ; Tue, 20 Aug 2019 19:06:42 +0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 1000) id DE4F860E42; Tue, 20 Aug 2019 19:06:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566328001; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=cGY7R235YpB41zyv7M/1ugHWDI/ziFKNIhV41PxzgJpu41F6SGQDPsnKwT6v84uoQ fwqeJ4SiPMJHdMcNS8NqeMHuTc+Y0mkoUoewjphPYIoFjfs3bE9TnJaNA0KhyWBgjr ByKKqzNSXQ8/sVSsM+l2UJjMV1ECTRqOyl5Afywc= Received: from jcrouse1-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id E2A2A608FC; Tue, 20 Aug 2019 19:06:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566327999; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=M3Z+8dS+lEFL8B05ojyqH3qIFG+culCff2FSu0EKY/ry/7K1KKZg7C+hKtsTsrbnv r7SpMsyJIV9oQxPSzEoaALo1KWXvI5skX+lAVXXVB5SrxlSgeY4eBsNUb67pkptlr6 71/65oHOvbmE6FBMuD0JfkDviPqBoXzhgDZmtu5M= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E2A2A608FC Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Subject: [PATCH 0/7] iommu/arm-smmu: Split pagetable support for Adreno GPUs Date: Tue, 20 Aug 2019 13:06:25 -0600 Message-Id: <1566327992-362-1-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 Cc: Mark Rutland , Jeffrey Hugo , David Airlie , dri-devel@lists.freedesktop.org, Bjorn Andersson , Will Deacon , Wen Yang , Jonathan Marek , iommu@lists.linux-foundation.org, Mamta Shukla , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Fritz Koenig , Daniel Vetter , linux-arm-msm@vger.kernel.org, Sharat Masetty , Abhinav Kumar , Jeykumar Sankaran , Alexios Zavras , Rob Herring , Thomas Gleixner , Sean Paul , Allison Randal , Bruce Wang , Boris Brezillon , Greg Kroah-Hartman , Douglas Anderson , linux-kernel@vger.kernel.org, Thomas Zimmermann , Robin Murphy , Georgi Djakov , Sravanthi Kollukuduru X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org This is another iteration to support split pagetables for Adreno GPUs as part of an incremental process to enable per-context pagetables. In order to support per-context pagetables the GPU needs to enable split pagetables so that we can store the global buffers in the TTBR1 space leaving the GPU free to program the TTBR0 register with the page address of a context specific pt. Previous revisions of this series can be found at [1] and [2]. This iteration is built on top of the arm-smmu-impl and arm-smmu-v2 rework code from Robin Murphy [3] and [4]. This code is based on the realization that when split pagetables are enabled the configuration for the T1 address space is identical to that of the T0 space, so we can just take the TCR configuration provided by io-pgtable, duplicate it and shift it by 16 bits. Since the current split pagetable implementation is specific to the Adreno GPUs we can also take a small shortcut and only allow split pagetables for SMMUs with a 49 bit upstream bus which allows us to use the default configuration for the sign extension bit and we can avoid a lot of extra code to handle different upstream bus sizes that will never get used. The first patch implements the split pagetable support for arm-smmu-v2. The second adds a SMMU model for the Adreno GPU SMMU and enables the split pagetables if conditions warrant. The 3rd and 4th patches add a domain attribute to query the status of split pagetables. The remaining patches modify drm/msm slightly to allow a6xx targets to recognize if split pagetables are enabled and adjust the address space accordingly. This series only includes support for split pagetables because I wanted to get this out for discussion and I haven't ported over the aux domain code to this kernel version, but I don't suspect it will end up being much different than previous versions [5]. [1] https://patchwork.freedesktop.org/series/63403/ [2] https://patchwork.freedesktop.org/series/64874/ [3] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/037905.html [4] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/038244.html [5] https://patchwork.freedesktop.org/patch/307601/ Jordan Crouse (7): iommu/arm-smmu: Support split pagetables dt-bindings: arm-smmu: Add Adreno GPU variant iommu/arm-smmu: Add a SMMU variant for the Adreno GPU iommu: Add DOMAIN_ATTR_SPLIT_TABLES iommu/arm-smmu: Support DOMAIN_ATTR_SPLIT_TABLES drm/msm: Create the msm_mmu object independently from the address space drm/msm: Use per-target functions to set up address spaces .../devicetree/bindings/iommu/arm,smmu.txt | 7 +++ drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 28 +++++++++++ drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 56 ++++++++++++++++++++++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 43 ++++++++++++++--- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 4 -- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 13 ++++- drivers/gpu/drm/msm/msm_drv.h | 8 +--- drivers/gpu/drm/msm/msm_gem_vma.c | 30 ++---------- drivers/gpu/drm/msm/msm_gpu.c | 51 ++------------------ drivers/gpu/drm/msm/msm_gpu.h | 4 +- drivers/iommu/arm-smmu-impl.c | 15 ++++++ drivers/iommu/arm-smmu.c | 46 ++++++++++++++++-- drivers/iommu/arm-smmu.h | 2 + include/linux/iommu.h | 1 + 20 files changed, 237 insertions(+), 111 deletions(-) -- 2.7.4 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7A6AC3A589 for ; Tue, 20 Aug 2019 19:07:01 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AD4072332A for ; Tue, 20 Aug 2019 19:07:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="RbwGF33t"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="cGY7R235"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="M3Z+8dS+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AD4072332A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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=gs3LMKpav4UB620/tMlxXriu3e3wy8VEQUsbddwcMcE=; b=Rbw GF33tXPequzRJ8vyjfxENCQg3zRp1hk6Mm9m33VWh71un8ibMczWuI7sH+kgqN5BSmHgh/to9Dp3u S4kVsxenrQTFKSk4s763z2Ino4L2t3TNlgMEoYL4W1huLD6Tbt+Wa1QXmtYE18t4sNgeHBF9BLbdi /mtSTgSOGyo1hUEyna+3hwby2SAt551zWy8pG+ytsq8fBsHmG39wXV6zv0P0KVvZINBMmzLHgAemn ItN6Lw2jbPGTd04KXdub8gmbDteB7nHrWZczBgeCqjlql2cWf0V6K2bkVGrgh1Idn+SAWSpPK3WR8 OD8KAxBWWMCuqcCpPJuRtYmJX93xusA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i09T3-0004r6-SG; Tue, 20 Aug 2019 19:06:53 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i09Ss-0004gI-DG for linux-arm-kernel@lists.infradead.org; Tue, 20 Aug 2019 19:06:44 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id B107F609EF; Tue, 20 Aug 2019 19:06:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566328001; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=cGY7R235YpB41zyv7M/1ugHWDI/ziFKNIhV41PxzgJpu41F6SGQDPsnKwT6v84uoQ fwqeJ4SiPMJHdMcNS8NqeMHuTc+Y0mkoUoewjphPYIoFjfs3bE9TnJaNA0KhyWBgjr ByKKqzNSXQ8/sVSsM+l2UJjMV1ECTRqOyl5Afywc= Received: from jcrouse1-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id E2A2A608FC; Tue, 20 Aug 2019 19:06:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1566327999; bh=JVOA+N1GY0FZQY7fgH8GBUcQtg09RuZemNa9uGbRUB4=; h=From:To:Cc:Subject:Date:From; b=M3Z+8dS+lEFL8B05ojyqH3qIFG+culCff2FSu0EKY/ry/7K1KKZg7C+hKtsTsrbnv r7SpMsyJIV9oQxPSzEoaALo1KWXvI5skX+lAVXXVB5SrxlSgeY4eBsNUb67pkptlr6 71/65oHOvbmE6FBMuD0JfkDviPqBoXzhgDZmtu5M= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E2A2A608FC Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Subject: [PATCH 0/7] iommu/arm-smmu: Split pagetable support for Adreno GPUs Date: Tue, 20 Aug 2019 13:06:25 -0600 Message-Id: <1566327992-362-1-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190820_120642_495599_4F217516 X-CRM114-Status: GOOD ( 17.04 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Jeffrey Hugo , David Airlie , dri-devel@lists.freedesktop.org, Bjorn Andersson , Will Deacon , Wen Yang , Jonathan Marek , Joerg Roedel , iommu@lists.linux-foundation.org, Mamta Shukla , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Fritz Koenig , Daniel Vetter , linux-arm-msm@vger.kernel.org, Sharat Masetty , Abhinav Kumar , Jeykumar Sankaran , Alexios Zavras , Rob Herring , Thomas Gleixner , Sean Paul , Allison Randal , Bruce Wang , Boris Brezillon , Greg Kroah-Hartman , Douglas Anderson , linux-kernel@vger.kernel.org, Rob Clark , Thomas Zimmermann , Robin Murphy , Georgi Djakov , Sravanthi Kollukuduru MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org This is another iteration to support split pagetables for Adreno GPUs as part of an incremental process to enable per-context pagetables. In order to support per-context pagetables the GPU needs to enable split pagetables so that we can store the global buffers in the TTBR1 space leaving the GPU free to program the TTBR0 register with the page address of a context specific pt. Previous revisions of this series can be found at [1] and [2]. This iteration is built on top of the arm-smmu-impl and arm-smmu-v2 rework code from Robin Murphy [3] and [4]. This code is based on the realization that when split pagetables are enabled the configuration for the T1 address space is identical to that of the T0 space, so we can just take the TCR configuration provided by io-pgtable, duplicate it and shift it by 16 bits. Since the current split pagetable implementation is specific to the Adreno GPUs we can also take a small shortcut and only allow split pagetables for SMMUs with a 49 bit upstream bus which allows us to use the default configuration for the sign extension bit and we can avoid a lot of extra code to handle different upstream bus sizes that will never get used. The first patch implements the split pagetable support for arm-smmu-v2. The second adds a SMMU model for the Adreno GPU SMMU and enables the split pagetables if conditions warrant. The 3rd and 4th patches add a domain attribute to query the status of split pagetables. The remaining patches modify drm/msm slightly to allow a6xx targets to recognize if split pagetables are enabled and adjust the address space accordingly. This series only includes support for split pagetables because I wanted to get this out for discussion and I haven't ported over the aux domain code to this kernel version, but I don't suspect it will end up being much different than previous versions [5]. [1] https://patchwork.freedesktop.org/series/63403/ [2] https://patchwork.freedesktop.org/series/64874/ [3] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/037905.html [4] https://lists.linuxfoundation.org/pipermail/iommu/2019-August/038244.html [5] https://patchwork.freedesktop.org/patch/307601/ Jordan Crouse (7): iommu/arm-smmu: Support split pagetables dt-bindings: arm-smmu: Add Adreno GPU variant iommu/arm-smmu: Add a SMMU variant for the Adreno GPU iommu: Add DOMAIN_ATTR_SPLIT_TABLES iommu/arm-smmu: Support DOMAIN_ATTR_SPLIT_TABLES drm/msm: Create the msm_mmu object independently from the address space drm/msm: Use per-target functions to set up address spaces .../devicetree/bindings/iommu/arm,smmu.txt | 7 +++ drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 28 +++++++++++ drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 1 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 56 ++++++++++++++++++++++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 43 ++++++++++++++--- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 16 ++++--- drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 4 -- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 13 ++++- drivers/gpu/drm/msm/msm_drv.h | 8 +--- drivers/gpu/drm/msm/msm_gem_vma.c | 30 ++---------- drivers/gpu/drm/msm/msm_gpu.c | 51 ++------------------ drivers/gpu/drm/msm/msm_gpu.h | 4 +- drivers/iommu/arm-smmu-impl.c | 15 ++++++ drivers/iommu/arm-smmu.c | 46 ++++++++++++++++-- drivers/iommu/arm-smmu.h | 2 + include/linux/iommu.h | 1 + 20 files changed, 237 insertions(+), 111 deletions(-) -- 2.7.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 0/7] iommu/arm-smmu: Split pagetable support for Adreno GPUs Date: Tue, 20 Aug 2019 13:06:25 -0600 Message-ID: <1566327992-362-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Mark Rutland , Jeffrey Hugo , David Airlie , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Bjorn Andersson , Will Deacon , Wen Yang , Jonathan Marek , Joerg Roedel , iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, Mamta Shukla , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Fritz Koenig , Daniel Vetter , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Sharat Masetty , Abhinav Kumar , Jeykumar Sankaran , Alexios Zavras , Rob Herring , Thomas Gleixner , Sean Paul , Allison Randal , Bruce List-Id: devicetree@vger.kernel.org VGhpcyBpcyBhbm90aGVyIGl0ZXJhdGlvbiB0byBzdXBwb3J0IHNwbGl0IHBhZ2V0YWJsZXMgZm9y IEFkcmVubyBHUFVzIGFzIHBhcnQgb2YKYW4gaW5jcmVtZW50YWwgcHJvY2VzcyB0byBlbmFibGUg cGVyLWNvbnRleHQgcGFnZXRhYmxlcy4KCkluIG9yZGVyIHRvIHN1cHBvcnQgcGVyLWNvbnRleHQg cGFnZXRhYmxlcyB0aGUgR1BVIG5lZWRzIHRvIGVuYWJsZSBzcGxpdApwYWdldGFibGVzIHNvIHRo YXQgd2UgY2FuIHN0b3JlIHRoZSBnbG9iYWwgYnVmZmVycyBpbiB0aGUgVFRCUjEgc3BhY2UgbGVh dmluZwp0aGUgR1BVIGZyZWUgdG8gcHJvZ3JhbSB0aGUgVFRCUjAgcmVnaXN0ZXIgd2l0aCB0aGUg cGFnZSBhZGRyZXNzIG9mIGEgY29udGV4dApzcGVjaWZpYyBwdC4KClByZXZpb3VzIHJldmlzaW9u cyBvZiB0aGlzIHNlcmllcyBjYW4gYmUgZm91bmQgYXQgWzFdIGFuZCBbMl0uCgpUaGlzIGl0ZXJh dGlvbiBpcyBidWlsdCBvbiB0b3Agb2YgdGhlIGFybS1zbW11LWltcGwgYW5kIGFybS1zbW11LXYy CnJld29yayBjb2RlIGZyb20gUm9iaW4gTXVycGh5IFszXSBhbmQgWzRdLgoKVGhpcyBjb2RlIGlz IGJhc2VkIG9uIHRoZSByZWFsaXphdGlvbiB0aGF0IHdoZW4gc3BsaXQgcGFnZXRhYmxlcyBhcmUg ZW5hYmxlZCB0aGUKY29uZmlndXJhdGlvbiBmb3IgdGhlIFQxIGFkZHJlc3Mgc3BhY2UgaXMgaWRl bnRpY2FsIHRvIHRoYXQgb2YgdGhlIFQwIHNwYWNlLApzbyB3ZSBjYW4ganVzdCB0YWtlIHRoZSBU Q1IgY29uZmlndXJhdGlvbiBwcm92aWRlZCBieSBpby1wZ3RhYmxlLCBkdXBsaWNhdGUgaXQKYW5k IHNoaWZ0IGl0IGJ5IDE2IGJpdHMuCgpTaW5jZSB0aGUgY3VycmVudCBzcGxpdCBwYWdldGFibGUg aW1wbGVtZW50YXRpb24gaXMgc3BlY2lmaWMgdG8gdGhlIEFkcmVubwpHUFVzIHdlIGNhbiBhbHNv IHRha2UgYSBzbWFsbCBzaG9ydGN1dCBhbmQgb25seSBhbGxvdyBzcGxpdCBwYWdldGFibGVzIGZv ciBTTU1Vcwp3aXRoIGEgNDkgYml0IHVwc3RyZWFtIGJ1cyB3aGljaCBhbGxvd3MgdXMgdG8gdXNl IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KZm9yIHRoZSBzaWduIGV4dGVuc2lvbiBiaXQgYW5k IHdlIGNhbiBhdm9pZCBhIGxvdCBvZiBleHRyYSBjb2RlIHRvIGhhbmRsZQpkaWZmZXJlbnQgdXBz dHJlYW0gYnVzIHNpemVzIHRoYXQgd2lsbCBuZXZlciBnZXQgdXNlZC4KClRoZSBmaXJzdCBwYXRj aCBpbXBsZW1lbnRzIHRoZSBzcGxpdCBwYWdldGFibGUgc3VwcG9ydCBmb3IgYXJtLXNtbXUtdjIu CgpUaGUgc2Vjb25kIGFkZHMgYSBTTU1VIG1vZGVsIGZvciB0aGUgQWRyZW5vIEdQVSBTTU1VIGFu ZCBlbmFibGVzIHRoZSBzcGxpdApwYWdldGFibGVzIGlmIGNvbmRpdGlvbnMgd2FycmFudC4KClRo ZSAzcmQgYW5kIDR0aCBwYXRjaGVzIGFkZCBhIGRvbWFpbiBhdHRyaWJ1dGUgdG8gcXVlcnkgdGhl IHN0YXR1cyBvZiBzcGxpdApwYWdldGFibGVzLgoKVGhlIHJlbWFpbmluZyBwYXRjaGVzIG1vZGlm eSBkcm0vbXNtIHNsaWdodGx5IHRvIGFsbG93IGE2eHggdGFyZ2V0cyB0bwpyZWNvZ25pemUgaWYg c3BsaXQgcGFnZXRhYmxlcyBhcmUgZW5hYmxlZCBhbmQgYWRqdXN0IHRoZSBhZGRyZXNzIHNwYWNl CmFjY29yZGluZ2x5LgoKVGhpcyBzZXJpZXMgb25seSBpbmNsdWRlcyBzdXBwb3J0IGZvciBzcGxp dCBwYWdldGFibGVzIGJlY2F1c2UgSSB3YW50ZWQgdG8gZ2V0CnRoaXMgb3V0IGZvciBkaXNjdXNz aW9uIGFuZCBJIGhhdmVuJ3QgcG9ydGVkIG92ZXIgdGhlIGF1eCBkb21haW4gY29kZSB0byB0aGlz Cmtlcm5lbCB2ZXJzaW9uLCBidXQgSSBkb24ndCBzdXNwZWN0IGl0IHdpbGwgZW5kIHVwIGJlaW5n IG11Y2ggZGlmZmVyZW50IHRoYW4KcHJldmlvdXMgdmVyc2lvbnMgWzVdLgoKWzFdIGh0dHBzOi8v cGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvNjM0MDMvClsyXSBodHRwczovL3BhdGNo d29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY0ODc0LwpbM10gaHR0cHM6Ly9saXN0cy5saW51 eGZvdW5kYXRpb24ub3JnL3BpcGVybWFpbC9pb21tdS8yMDE5LUF1Z3VzdC8wMzc5MDUuaHRtbApb NF0gaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL3BpcGVybWFpbC9pb21tdS8yMDE5 LUF1Z3VzdC8wMzgyNDQuaHRtbApbNV0gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3BhdGNoLzMwNzYwMS8KCgpKb3JkYW4gQ3JvdXNlICg3KToKICBpb21tdS9hcm0tc21tdTogU3Vw cG9ydCBzcGxpdCBwYWdldGFibGVzCiAgZHQtYmluZGluZ3M6IGFybS1zbW11OiBBZGQgQWRyZW5v IEdQVSB2YXJpYW50CiAgaW9tbXUvYXJtLXNtbXU6IEFkZCBhIFNNTVUgdmFyaWFudCBmb3IgdGhl IEFkcmVubyBHUFUKICBpb21tdTogQWRkIERPTUFJTl9BVFRSX1NQTElUX1RBQkxFUwogIGlvbW11 L2FybS1zbW11OiBTdXBwb3J0IERPTUFJTl9BVFRSX1NQTElUX1RBQkxFUwogIGRybS9tc206IENy ZWF0ZSB0aGUgbXNtX21tdSBvYmplY3QgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBhZGRyZXNzCiAg ICBzcGFjZQogIGRybS9tc206IFVzZSBwZXItdGFyZ2V0IGZ1bmN0aW9ucyB0byBzZXQgdXAgYWRk cmVzcyBzcGFjZXMKCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9hcm0sc21tdS50eHQg ICAgICAgICB8ICA3ICsrKwogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTJ4eF9ncHUuYyAg ICAgICAgICAgICAgfCAyOCArKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YTN4eF9ncHUuYyAgICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hNHh4X2dwdS5jICAgICAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2E1eHhfZ3B1LmMgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTZ4eF9ncHUuYyAgICAgICAgICAgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgICAgICAgICAgICB8IDQz ICsrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmggICAgICAgICAgICB8ICA1ICsrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMgICAgICAgICAgICB8IDE2ICsrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9t ZHA0L21kcDRfa21zLmMgICAgICAgICAgIHwgMTYgKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL21kcDUvbWRwNV9jZmcuYyAgICAgICAgICAgfCAgNCAtLQogZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL21kcDUvbWRwNV9rbXMuYyAgICAgICAgICAgfCAxMyArKysrLQogZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmggICAgICAgICAgICAgICAgICAgICAgfCAgOCArLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fdm1hLmMgICAgICAgICAgICAgICAgICB8IDMwICsrLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMgICAgICAgICAgICAgICAgICAg ICAgfCA1MSArKy0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1 LmggICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogZHJpdmVycy9pb21tdS9hcm0tc21tdS1p bXBsLmMgICAgICAgICAgICAgICAgICAgICAgfCAxNSArKysrKysKIGRyaXZlcnMvaW9tbXUvYXJt LXNtbXUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKy0t CiBkcml2ZXJzL2lvbW11L2FybS1zbW11LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICsKIGluY2x1ZGUvbGludXgvaW9tbXUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEgKwogMjAgZmlsZXMgY2hhbmdlZCwgMjM3IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMo LSkKCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRy ZW5v