From patchwork Thu Mar 9 10:53:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167206 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 990D7C61DA4 for ; Thu, 9 Mar 2023 10:56:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tS+hWSyXO5udz43gFnhATLsDeXyaNqDdh+bsc/SpA98=; b=W14JWsCWtmJ8Ko Jr/yhZAEfnvunQSk5KEx/piKiKZsOirnFJeVhe8FuZW8ImtbPLOqxJP6EBSIKpF8ze5KcC5zFEbuT M1Zt8/LgU4+7BT7+DhqfQC/DCSAf7+HLz6pCX1tRRXhHx+MqxJMLTeupyj4lF48XLBeiMaqPKbP7O PjK3QFaKdMIV7SiePkK2s0EncMn7YzdlsffH24dBnGV36lzbiFZYrJUABZml3BUyK+Vd3gf+Lx3iC yLsLNEBAe7ikbPzB2Q9werh57ihLjoEKD0NcUF8927jh8iRv0jRGo5DSAXGrsNWcj9y5Ej52P8jsb ZOqiMkE1dK1/eUdI9RJA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvO-009FOY-Cu; Thu, 09 Mar 2023 10:55:06 +0000 Received: from mail-dm6nam11on2061d.outbound.protection.outlook.com ([2a01:111:f400:7eaa::61d] helo=NAM11-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDv4-009FAi-5P for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TjSfRz5VzoQxDXVAM87C0Nhmm87t6a9HS/KUrt3qdjqLiHoLhDHicMinoHpRmHIs3bhYWCGuQ2xfBWDtqka2VUVjQsYPVyNWiF0VV4S70Wk5wxQXk8YeB30oyZ7q5yGV3EYvD55kJsfw6haO4PTvMZIIHVVMxLy1Z1GIOLgYIOu+AXwRmDbAaI+DMS894ICkj3IlBRCQ37Y+f44P3G1ItuRBFZeP5QoxLIeNOWU9sHz2gy6MFpgArcA90jiluJzShIhlMIRD08upQOnpNHHEqcuh33HOlkURAMvacSNJAcp6oKudk3mgAwJasT5ZPvKOoWKD9oOVwT8WBPpIZZxIPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IBbsr844qhGdT77+34PYYP8eNcCA1ykLIVeWfrAaWZ0=; b=I+2vD4rsrKfqC32xcFpDVFCjNqcmrm4Yi4ezThCsaoscrAhMlDEEkS+B5VNfqoYQpHs15Mt03qqzNtUF329u6GeDoXQ6H+f1AO4RGS0zBggPcklx+M5KBTesfyUE8sCbtB4ZqQ6OMUpl0+AChvZ6yiRrpyXVtXumGRfkMzk9oDhWpPA8Jks8ZS3vQWLyGwuZVNSxiABXUXPrzX7JCkC7IQAbrXb+UJ8O3IGgf9aLdGtWLOQpEgX4KIHwpg6k1sahvoHxIU+vwsfIOc58AVNeLNCeDzYKAWcBhwktc78qx9xujWR+W6TioJ0k31Sl5qAzLbXqPdpJa7TL7xDHHkAg4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IBbsr844qhGdT77+34PYYP8eNcCA1ykLIVeWfrAaWZ0=; b=WSUnrsbpU/KqeYieqJxczB+UZkiT9Ras//V+SALQLretI/T45/gQJI7mvemRdcuTCLS7oclqpmWspMiHOvEIASLozglMweedP+WlVf71+TBdmPfQiqpnY2c12DIP9/BIOVMVzIdV1CwbCo7C6pgasHY2dvlKcxE4EwotOUkScp4kI1wgLyrXSsoa6tQ6RUKtcc/u6gTLGzR02csZ6W8nMlHIjDYrBzNsGJJ+pvIPcfVBM+esZxI1CZ1XEq1GD1Jw1jNJ6BknjSicZ7zRrWuDHh8sz9El59ywUVj0WcuBur3zvOGCSNhug0Gw/zvdasJVrMkTWeBYaRFK2PsHpuImPw== Received: from BN9PR03CA0848.namprd03.prod.outlook.com (2603:10b6:408:13d::13) by CH0PR12MB5234.namprd12.prod.outlook.com (2603:10b6:610:d1::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:42 +0000 Received: from BL02EPF000108E9.namprd05.prod.outlook.com (2603:10b6:408:13d:cafe::70) by BN9PR03CA0848.outlook.office365.com (2603:10b6:408:13d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E9.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.12 via Frontend Transport; Thu, 9 Mar 2023 10:54:41 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:34 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:33 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:33 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 01/14] iommu: Add iommu_get_unmanaged_domain helper Date: Thu, 9 Mar 2023 02:53:37 -0800 Message-ID: <9b1077601cace998533129327f5e7ad946752d29.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E9:EE_|CH0PR12MB5234:EE_ X-MS-Office365-Filtering-Correlation-Id: d0d3ea8f-7eb0-491f-397a-08db208cafdc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yk84aD8Dv/eDWYMltwGPtGgg8kPBtET+w0WBdpof+Kzh4yExMsc5VXZQLlF61rgP/cdhaQ7vG4NnUpnNSK+SQEBMuAEGd9kOgjujm3Dti9P4M5mH7mVGMZy0ItvJTRnSDA28mHADah+0rMTi3+M+184bj6ZIJ3gkVgl/1qJDbtAmmCUQjS9vuIBnNTv8v+QBq7q9G+U1NdU+4iFiMIQqdbwLFiIavZR93zaN7yu6ixdm6dVEJqqMumQT6/PWMC6Oj7I9ILNC6LEm+t2N1sAILNrsaD3iKsh/8RRqhwaufJOqnnVo3OASAweim4evFzsDOE5SUgFsm706fJQhkgAx3+1tQcMFnSKJ83ZVVLXcqaqjCtG2/zBnHdo5cOryApwX68uNq4U5YIoudyTA7HxPSo4bHb+/AIgypNPFJ7KWwymubwvDufukSgMEpNMcsSdegBhZ2S8p2CjE2pn6zWOsOq8gUOXfcMGJ5+AK0vezsY12kO3Gvzo9j0h7JrFtCCfQ4nOmjDKz1N7/H+0Axp7zZIoQfy0d50wCfuLMP+sDOl1XNR4Oto3T5Qe4NUO7zft49KD0ZkwXMr5cMLkeoJRj95/GR+oBkGzd5e/G6C3PakkadLBtFrWK7vha/rXnMasLceN6zWj6yYOlOWdoLpPaAYfJE+vcq2h+APdKvPSLHdZk1CEwImxRgsiDQsA4UU/M5eDYyL9GEmGHvnWer8SRyhbzq9unMnQgLXagzOja9QAb/FwX/utnSdxsveYWzQRX X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(346002)(136003)(396003)(39860400002)(451199018)(46966006)(36840700001)(40470700004)(82310400005)(82740400003)(36860700001)(83380400001)(426003)(47076005)(36756003)(478600001)(40480700001)(54906003)(110136005)(7636003)(356005)(316002)(336012)(7696005)(2616005)(40460700003)(186003)(26005)(7416002)(5660300002)(70206006)(70586007)(41300700001)(8936002)(4326008)(2906002)(8676002)(86362001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:41.8981 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0d3ea8f-7eb0-491f-397a-08db208cafdc X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E9.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5234 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025446_232870_20A692E6 X-CRM114-Status: GOOD ( 18.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The nature of ITS virtualization on ARM is done via hypercalls, so kernel handles all IOVA mappings for the MSI doorbell in iommu_dma_prepare_msi() and iommu_dma_compose_msi_msg(). The current virtualization solution with a 2-stage nested translation setup is to do 1:1 IOVA mappings at stage-1 guest-level IO page table via a RMR region in guest-level IORT, aligning with an IOVA region that's predefined and mapped in the host kernel: [stage-2 host level] #define MSI_IOVA_BASE 0x8000000 #define MSI_IOVA_LENGTH 0x100000 ... iommu_get_msi_cookie(): cookie->msi_iova = MSI_IOVA_BASE; ... iommu_dma_prepare_msi(its_pa): domain = iommu_get_domain_for_dev(dev); iommu_dma_get_msi_page(its_pa, domain): cookie = domain->iova_cookie; iova = iommu_dma_alloc_iova(): return cookie->msi_iova - size; iommu_map(iova, its_pa, ...); [stage-1 guest level] // Define in IORT a RMR [MSI_IOVA_BASE, MSI_IOVA_LENGTH] ... iommu_create_device_direct_mappings(): iommu_map(iova=MSI_IOVA_BASE, pa=MSI_IOVA_BASE, len=MSI_IOVA_LENGTH); This solution calling iommu_get_domain_for_dev() needs the device to get attached to a host-level iommu_domain that has the msi_cookie. On the other hand, IOMMUFD designs two iommu_domain objects to represent the two stages: a stage-1 domain (IOMMU_DOMAIN_NESTED type) and a stage-2 domain (IOMMU_DOMAIN_UNMANAGED type). In this design, the device will be attached to the stage-1 domain representing a guest-level IO page table, or a Context Descriptor Table in SMMU's term. This is obviously a mismatch, as the iommu_get_domain_for_dev() does not return the correct domain pointer in iommu_dma_prepare_msi(). Add an iommu_get_unmanaged_domain helper to allow drivers to return the correct IOMMU_DOMAIN_UNMANAGED iommu_domain having the IOVA mappings for the msi_cookie. Keep it in the iommu-priv header for internal use only. Suggested-by: Jason Gunthorpe Signed-off-by: Nicolin Chen Signed-off-by: Robin Murphy --- drivers/iommu/dma-iommu.c | 5 +++-- drivers/iommu/iommu-priv.h | 15 +++++++++++++++ include/linux/iommu.h | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 99b2646cb5c7..6b0409d0ff85 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -31,6 +31,7 @@ #include #include "dma-iommu.h" +#include "iommu-priv.h" struct iommu_dma_msi_page { struct list_head list; @@ -1652,7 +1653,7 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev, int iommu_dma_prepare_msi(struct msi_desc *desc, phys_addr_t msi_addr) { struct device *dev = msi_desc_to_dev(desc); - struct iommu_domain *domain = iommu_get_domain_for_dev(dev); + struct iommu_domain *domain = iommu_get_unmanaged_domain(dev); struct iommu_dma_msi_page *msi_page; static DEFINE_MUTEX(msi_prepare_lock); /* see below */ @@ -1685,7 +1686,7 @@ int iommu_dma_prepare_msi(struct msi_desc *desc, phys_addr_t msi_addr) void iommu_dma_compose_msi_msg(struct msi_desc *desc, struct msi_msg *msg) { struct device *dev = msi_desc_to_dev(desc); - const struct iommu_domain *domain = iommu_get_domain_for_dev(dev); + const struct iommu_domain *domain = iommu_get_unmanaged_domain(dev); const struct iommu_dma_msi_page *msi_page; msi_page = msi_desc_get_iommu_cookie(desc); diff --git a/drivers/iommu/iommu-priv.h b/drivers/iommu/iommu-priv.h index a6e694f59f64..da8044da9ad8 100644 --- a/drivers/iommu/iommu-priv.h +++ b/drivers/iommu/iommu-priv.h @@ -15,6 +15,21 @@ static inline const struct iommu_ops *dev_iommu_ops(struct device *dev) return dev->iommu->iommu_dev->ops; } +static inline struct iommu_domain *iommu_get_unmanaged_domain(struct device *dev) +{ + const struct iommu_ops *ops; + + if (!dev->iommu || !dev->iommu->iommu_dev) + goto attached_domain; + + ops = dev_iommu_ops(dev); + if (ops->get_unmanaged_domain) + return ops->get_unmanaged_domain(dev); + +attached_domain: + return iommu_get_domain_for_dev(dev); +} + int iommu_group_replace_domain(struct iommu_group *group, struct iommu_domain *new_domain); diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 080278c8154d..76c65cc4fc15 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -275,6 +275,8 @@ struct iommu_ops { struct iommu_domain *parent, const void *user_data); + struct iommu_domain *(*get_unmanaged_domain)(struct device *dev); + struct iommu_device *(*probe_device)(struct device *dev); void (*release_device)(struct device *dev); void (*probe_finalize)(struct device *dev); From patchwork Thu Mar 9 10:53:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167207 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 801ABC64EC4 for ; Thu, 9 Mar 2023 10:56:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Z3GaegGLI9eQcdydv8qZbOw5myC+2zs7BaL9/9tmBLs=; b=W1DUxziusbGOnQ CktxaltgfIJgkoYE0tlo1NwV487xCwJh/Oun1zZfZIouXJ1cRwcmUUeVOIzU83Aq7OK4dd0Xa10ca 92c3OLct7nTm3Si7wzJSL8XWcvGqCj/XWaVWpBRyqPP/AxcXSeYNL7QlvJK1dNrSE/JZq8SNIl+au 9upFUO8xHAvai8bLApIeEbVrG/VNAJRvft6RiI7rOsrqTGJyTba34Cq83m20wXKU5b67F63/vBxUJ 9LhFVJqXLtQ90HFA40P8AMf1Jo1zDyWfD3CE9ceqVP0qzNjAsZ+DeZVm4gahR0gpbv5f9aSgG+znB 3ct+5beHCc/PSCnHCokg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDva-009FT2-49; Thu, 09 Mar 2023 10:55:18 +0000 Received: from mail-bn1nam02on20624.outbound.protection.outlook.com ([2a01:111:f400:7eb2::624] helo=NAM02-BN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDv7-009FBP-Pg for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tnf9Uc693BFIgWrDArU2BFV25oh4qxkx6N5p6md0gEqrDpIHszhK2WfvoaJ8NHFPlI97pvTCbUDJ8Jxwk9C+0WwbCZAcPUPeuITfdDCSPEG7RYuj/939kpE7MpxAyBKLkcqktAGBTKhjqCwdgJpEX7uDDOE9wmoccGZgXLb7h+T+z+LYDTrNw30bLhCRU8ZaGWrqK1X2DDTbA41TmOcE9zp17rzwUxwlkuHTmf4tIAfVgmGLkTjl33y7QFJtsB4/XR/FL7aH+Roy02dUtyQmHOf/njjZlGpL826SmFzHD18nB/mVhP1EfczY6c4Vc2de8IBGubVLcg0WEI8B3FHdVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4oQ6kddw9272X4EaqFsjJqO46o5w+MkB4mjzLJs4WdY=; b=bDLPhZzE1VyofWQvqJGFLG1P0QeS/SaKHvfamBtPm3M6egWj1LAVKpwpQX3KPD29b9+ng48k6C6mORTYirxjZRw4RS0DsjTx0y4tHBc+nk4TqL4onLEk9+W0AJTBZniYdf8y/eG3jdXnhKns1ABxCeK4xPkEc0aDZdhYGp2kGDwFajga5oIHTPKK/o2kpiwJHp7CUG9+WPcLKia1vUUvkxCRc9OlZc7jEt2WU5vUlVWt8CawQmMFPHj36tNGhmM79UZEPQlC8KhVG4o5M+/mLzcgaLDE1Kgbmf1LgAmyf5cJ5Y+iBKekfmsRKYTJzjWuR8zTjRoloal6hconGROW1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4oQ6kddw9272X4EaqFsjJqO46o5w+MkB4mjzLJs4WdY=; b=Kt7XPqNixtnvnGhg2MXi9d5dwfFJbwNyonmaiBsDxgpstntaGfQ27Ukk/oe06S5bV5ceRnX8ZZsmF52kklz3pvSdKDZuo0AfAnNIsfyMDnIPAvyjMHYnpEA4LXUWiUi3EOLAIPnOxLc++iBOz/ndwzeA83B4LXg5Y1ePB8KRx0P6OIGvco9t/GsoncRLEK1PKKpg4CTA+O+ReD/lgGfZLXgcoJJzap5LrN9CSHFR/sEDJudCfvSHYIEkaa1NO7tIh3Az6K1agq475545F7iuvSpTiZ8W7W/ekxTKYSxiFMKmkyF1StxMpRdX17tuikxEee3ow6RMKeko2v41lS/n+g== Received: from BN9PR03CA0843.namprd03.prod.outlook.com (2603:10b6:408:13d::8) by DM6PR12MB4433.namprd12.prod.outlook.com (2603:10b6:5:2a1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:43 +0000 Received: from BL02EPF000108E9.namprd05.prod.outlook.com (2603:10b6:408:13d:cafe::60) by BN9PR03CA0843.outlook.office365.com (2603:10b6:408:13d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E9.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.12 via Frontend Transport; Thu, 9 Mar 2023 10:54:43 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:34 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:34 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:34 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 02/14] iommufd: Add nesting related data structures for ARM SMMUv3 Date: Thu, 9 Mar 2023 02:53:38 -0800 Message-ID: <364cfbe5b228ab178093db2de13fa3accf7a6120.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E9:EE_|DM6PR12MB4433:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cae24fa-5983-45f2-41fe-08db208cb0e7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fbuc96ajFZNCTLGRhJYRiDZtERvpg+2CpgHugDlVXgjtY7drdOzmNs5FpXNYS8JA0bma08RawTqB4/1+CtYZCdw13m6KsIKaH7/yzX0UsErKAya+j+1Pga0ncqaJml3QeDFFz7JeqSv9Lc2+kiQAK3tzFqhRTZlsjUrNqqVDHKzMGUmf3NRSo2StJtEwBgjvWCECoHLnG2fKJ8qQkLlCwlvwP9f86DcpCYrScFMiZMEUqR/NY88by5b9e2hYTAagN2yEmJHWAeqHttmTVG6Fbhhg3+a6Q71C97crK8VTjik1e9/1DhAuiyMT1e/D8bpALzpmj7SLAN+Sfq1VNYy0hCd3t+KuN+2Gk6XaSQfUzBA+uLll1IgPamTs9hyXPs55g9ux924KpMV4ojlomOM5siZB+XLVpLbYJK56+UFLON5bNOHoT+gbiD7lG+U9yue8U7+Taer1qW72MGNMBWAv/0HAjeyV0q4IgcDwMccH33nfqAXmLvUxqrgGZfERNtCeOsl2ZBpD9tKfUhdMuzJBWrUgjL4iYll2IAu0LXXLB4O4Tnm+DXnDFlkxAWRIpVBNM5nr+bDYH3GcBKiIO5M9QIPkShwFmUQK3pTIKJL0Ez2tPS/iWu5Rw4edHUkk3Gy6jp5yku/I89E+/2cu607gbi9RUp9xvrWm5pvcbHc8QIuQIb0jgAd6YUmZ0ZKyxkQNJzhK2f/OI6adQx9HTSUZQX5UmaFkN5Lm8D0VriHxpZsEt7Rdhhh/EErd3kQxBOUjLE37EpQmflp1MAnud82K9C9IjL4psO0iCqj7OXR0BTf8V9XJyVr9dPkItxeItS8R X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(136003)(396003)(376002)(39860400002)(451199018)(46966006)(36840700001)(40470700004)(8936002)(36756003)(7416002)(5660300002)(26005)(36860700001)(82740400003)(7636003)(82310400005)(336012)(426003)(47076005)(83380400001)(186003)(2616005)(40480700001)(54906003)(86362001)(316002)(110136005)(41300700001)(8676002)(70206006)(70586007)(4326008)(40460700003)(356005)(7696005)(478600001)(2906002)(473944003)(414714003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:43.6481 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2cae24fa-5983-45f2-41fe-08db208cb0e7 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E9.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4433 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025449_877370_0EC51687 X-CRM114-Status: GOOD ( 13.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add the following data structures for corresponding ioctls: iommu_hwpt_arm_smmuv3 => IOMMUFD_CMD_HWPT_ALLOC iommu_hwpt_invalidate_arm_smmuv3 => IOMMUFD_CMD_HWPT_INVALIDATE Also, add IOMMU_HW_INFO_TYPE_ARM_SMMUV3 and IOMMU_PGTBL_TYPE_ARM_SMMUV3_S1 to the header and corresponding type/size arrays. Signed-off-by: Nicolin Chen --- drivers/iommu/iommufd/hw_pagetable.c | 4 +++ drivers/iommu/iommufd/main.c | 1 + include/uapi/linux/iommufd.h | 50 ++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/drivers/iommu/iommufd/hw_pagetable.c b/drivers/iommu/iommufd/hw_pagetable.c index 8f9985bddeeb..5e798b2f9a3a 100644 --- a/drivers/iommu/iommufd/hw_pagetable.c +++ b/drivers/iommu/iommufd/hw_pagetable.c @@ -173,6 +173,7 @@ iommufd_hw_pagetable_alloc(struct iommufd_ctx *ictx, struct iommufd_ioas *ioas, static const size_t iommufd_hwpt_alloc_data_size[] = { [IOMMU_HWPT_TYPE_DEFAULT] = 0, [IOMMU_HWPT_TYPE_VTD_S1] = sizeof(struct iommu_hwpt_intel_vtd), + [IOMMU_HWPT_TYPE_ARM_SMMUV3] = sizeof(struct iommu_hwpt_arm_smmuv3), }; /* @@ -183,6 +184,8 @@ const u64 iommufd_hwpt_type_bitmaps[] = { [IOMMU_HW_INFO_TYPE_DEFAULT] = BIT_ULL(IOMMU_HWPT_TYPE_DEFAULT), [IOMMU_HW_INFO_TYPE_INTEL_VTD] = BIT_ULL(IOMMU_HWPT_TYPE_DEFAULT) | BIT_ULL(IOMMU_HWPT_TYPE_VTD_S1), + [IOMMU_HW_INFO_TYPE_ARM_SMMUV3] = BIT_ULL(IOMMU_HWPT_TYPE_DEFAULT) | + BIT_ULL(IOMMU_HWPT_TYPE_ARM_SMMUV3), }; /* Return true if type is supported, otherwise false */ @@ -329,6 +332,7 @@ int iommufd_hwpt_alloc(struct iommufd_ucmd *ucmd) */ static const size_t iommufd_hwpt_invalidate_info_size[] = { [IOMMU_HWPT_TYPE_VTD_S1] = sizeof(struct iommu_hwpt_invalidate_intel_vtd), + [IOMMU_HWPT_TYPE_ARM_SMMUV3] = sizeof(struct iommu_hwpt_invalidate_arm_smmuv3), }; int iommufd_hwpt_invalidate(struct iommufd_ucmd *ucmd) diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c index 514db4c26927..0b0097af7c86 100644 --- a/drivers/iommu/iommufd/main.c +++ b/drivers/iommu/iommufd/main.c @@ -280,6 +280,7 @@ union ucmd_buffer { * path. */ struct iommu_hwpt_invalidate_intel_vtd vtd; + struct iommu_hwpt_invalidate_arm_smmuv3 smmuv3; }; struct iommufd_ioctl_op { diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index 2a6c326391b2..0d5551b1b2be 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -352,10 +352,13 @@ struct iommu_vfio_ioas { * enum iommu_hwpt_type - IOMMU HWPT Type * @IOMMU_HWPT_TYPE_DEFAULT: default * @IOMMU_HWPT_TYPE_VTD_S1: Intel VT-d stage-1 page table + * @IOMMU_HWPT_TYPE_ARM_SMMUV3: ARM SMMUv3 stage-1 Context Descriptor + * table */ enum iommu_hwpt_type { IOMMU_HWPT_TYPE_DEFAULT, IOMMU_HWPT_TYPE_VTD_S1, + IOMMU_HWPT_TYPE_ARM_SMMUV3, }; /** @@ -411,6 +414,28 @@ struct iommu_hwpt_intel_vtd { __u32 __reserved; }; +/** + * struct iommu_hwpt_arm_smmuv3 - ARM SMMUv3 specific page table data + * + * @flags: page table entry attributes + * @s2vmid: Virtual machine identifier + * @s1ctxptr: Stage-1 context descriptor pointer + * @s1cdmax: Number of CDs pointed to by s1ContextPtr + * @s1fmt: Stage-1 Format + * @s1dss: Default substream + */ +struct iommu_hwpt_arm_smmuv3 { +#define IOMMU_SMMUV3_FLAG_S2 (1 << 0) /* if unset, stage-1 */ +#define IOMMU_SMMUV3_FLAG_VMID (1 << 1) /* vmid override */ + __u64 flags; + __u32 s2vmid; + __u32 __reserved; + __u64 s1ctxptr; + __u64 s1cdmax; + __u64 s1fmt; + __u64 s1dss; +}; + /** * struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC) * @size: sizeof(struct iommu_hwpt_alloc) @@ -446,6 +471,8 @@ struct iommu_hwpt_intel_vtd { * +------------------------------+-------------------------------------+-----------+ * | IOMMU_HWPT_TYPE_VTD_S1 | struct iommu_hwpt_intel_vtd | HWPT | * +------------------------------+-------------------------------------+-----------+ + * | IOMMU_HWPT_TYPE_ARM_SMMUV3 | struct iommu_hwpt_arm_smmuv3 | IOAS/HWPT | + * +------------------------------+-------------------------------------------------+ */ struct iommu_hwpt_alloc { __u32 size; @@ -463,10 +490,12 @@ struct iommu_hwpt_alloc { /** * enum iommu_hw_info_type - IOMMU Hardware Info Types * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type + * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type */ enum iommu_hw_info_type { IOMMU_HW_INFO_TYPE_DEFAULT, IOMMU_HW_INFO_TYPE_INTEL_VTD, + IOMMU_HW_INFO_TYPE_ARM_SMMUV3, }; /** @@ -591,6 +620,25 @@ struct iommu_hwpt_invalidate_intel_vtd { __u64 nb_granules; }; +/** + * struct iommu_hwpt_invalidate_arm_smmuv3 - ARM SMMUv3 cahce invalidation info + * @flags: boolean attributes of cache invalidation command + * @opcode: opcode of cache invalidation command + * @ssid: SubStream ID + * @granule_size: page/block size of the mapping in bytes + * @range: IOVA range to invalidate + */ +struct iommu_hwpt_invalidate_arm_smmuv3 { +#define IOMMU_SMMUV3_CMDQ_TLBI_VA_LEAF (1 << 0) + __u64 flags; + __u8 opcode; + __u8 padding[3]; + __u32 asid; + __u32 ssid; + __u32 granule_size; + struct iommu_iova_range range; +}; + /** * struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE) * @size: sizeof(struct iommu_hwpt_invalidate) @@ -609,6 +657,8 @@ struct iommu_hwpt_invalidate_intel_vtd { * +------------------------------+----------------------------------------+ * | IOMMU_HWPT_TYPE_VTD_S1 | struct iommu_hwpt_invalidate_intel_vtd | * +------------------------------+----------------------------------------+ + * | IOMMU_HWPT_TYPE_ARM_SMMUV3 | struct iommu_hwpt_invalidate_arm_smmuv3| + * +------------------------------+----------------------------------------+ */ struct iommu_hwpt_invalidate { __u32 size; From patchwork Thu Mar 9 10:53:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167288 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 1F933C61DA4 for ; Thu, 9 Mar 2023 11:29:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IxF8hcHI18FXyWvjeobQqvp6excXl1IvZyMF7THUAyg=; b=R67BN3kQhInk+f HMbd5ISLUq+XxRZQY/aV3wmGauy8dMCfK5r13jd6karvi6Igs3krFtZlPsAM2+mEJRiOZm5IeXWOJ 9Kty24hQuQoVtZR9Ts2MNWiSvjZLkvnXSqrn9Ob7E/fs8KxrEiGB0K84S8tJlsO38jcEmOBFigoR0 gTHwqkNpvg7uB2+MpAXWPWlhftM7N8ckBP9hRXx7X2NirOhpyBZ2epW7zkfA9/YPuw440gYKRUzmt wX2WAluZ0YJ4VspZcW8PBGVtBJz6VIwZv2fFo+PKJJQH1G0z0fr7uF9w3CZk6ooBRXaU4ZR8QvkSL mYHS8RDxD1AKNMMWK3gg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paERw-009VPL-1C; Thu, 09 Mar 2023 11:28:45 +0000 Received: from mail-bn8nam11on20601.outbound.protection.outlook.com ([2a01:111:f400:7eae::601] helo=NAM11-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paEAT-009M2n-C7 for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 11:10:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UNbmqyVciTqVOBMEHEeEFQS+9mkyUVuBBBl1iNzV1mH8F0R+KvWNQ2o2WP5Oh7Kj1HmvNzJ5K/iwQlk6q3kSHnke7LftZEWseFu6rOR6cwfcyf2PpCq7X/yWwaYHqCYcT5Sa5hwQ5lwsNMrxFK/LDMf3lc/8aNdBQz5Wj6x00DWxrP6IHZOJsYQQGqdBU/SDm8eAiVSNYIaV3RrrGo0AjeP8jHbNh+ltu3jg8DDSQOolkI4Es03PaR37Vqqkhgk34KXEsAdgjR8rKgWh9AzojQXt4F5JFOQaHCo5FPxnQkvmLFq8ZLRC4GE24ofQwSuxIEJ7PlFRRd2o5rcdSQMtDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=01G6gO08B/uWnt1JfG91ZSIhhTkT4A/+8QJfB7wPVbU=; b=m+8XE1dz4FNUptum+4b+8jy3JUoaX0YzZF1i+8a76tUrNv/N4pDXX2TBTKkuGvtFOsUMUzTzJxOxi5uqSOUHzEpSxcLGoemoJOJU/f2lUWq5NdELXxesHXIFW32a1Ds9MSyRrVDvgWL+FzQUtuVSfw8+DbtwzqRkW66YusPtnGrIs1e+xxtK9n7bbsjzUTiV513azQ2zZ5WmF/QTa0o0COKhWDTLaKfP2qa0PQ6MYFsBEpD1PFjciG/mK82P+6fH9y9ao9ThaG9Qyx5gWUW4HaV2HT3EltpseXk4VM9X6KzYcujHZyanmV85P2priZylqZe3DEY7IbRtt6HxpTGhcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=01G6gO08B/uWnt1JfG91ZSIhhTkT4A/+8QJfB7wPVbU=; b=ieuk/JH+pt4efosD3CBwoEmJxSECqymMQ9+MOJiWN/37CSwqITBkBA8aAobN0gsJPK+4avSXIzlVfM0CGFLNZcNzMuY08fHckF/csw8RVxRudJFP9LARJ3OfXEeNLT55EAAB1I3G9PNVCHUto6viMlLylK3ZFcAX8UjqQCIg4usb6m4LoWfKTZBWRhTpAFqzx6MUvpE5XLclcJwnccUhp5T56r+begwKRuX/TulU8GySv/xAv/+XHXVQHy4nB1DKZOh91aJZ5jLP3HwgCrI1suZaQ+KSW0bABSAwUyhZoykDouTEQw9lBqyZMTQL5jxpsQGN5RqBtCRmU0jg6ZAbKA== Received: from MN2PR04CA0015.namprd04.prod.outlook.com (2603:10b6:208:d4::28) by SJ2PR12MB8649.namprd12.prod.outlook.com (2603:10b6:a03:53c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.29; Thu, 9 Mar 2023 10:54:45 +0000 Received: from BL02EPF000108E8.namprd05.prod.outlook.com (2603:10b6:208:d4:cafe::3a) by MN2PR04CA0015.outlook.office365.com (2603:10b6:208:d4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.29 via Frontend Transport; Thu, 9 Mar 2023 10:54:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E8.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.13 via Frontend Transport; Thu, 9 Mar 2023 10:54:44 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:35 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:35 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:34 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 03/14] iommufd/device: Setup MSI on kernel-managed domains Date: Thu, 9 Mar 2023 02:53:39 -0800 Message-ID: <5149b7e711a46e81aea8515676cf0e45608b3afd.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E8:EE_|SJ2PR12MB8649:EE_ X-MS-Office365-Filtering-Correlation-Id: f56f7c7c-84df-4e8c-b1f0-08db208cb19f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nzp/q2s89mmRmMG2JtRD3iM6C5AG4h5iaRtYtHQWIk9LbuyP/2uR0DbYlVJ5chED/tsDAyi3hsj4Cr5k1yjrEAoPn9n/VsoAdNlqzcUwVm8rCP4vvPePMh9DiUZySRbsZW+PYrSwIOtJPceTVEKJD6Awd1bOQtNHeRR6ltp3VQIIf1qE6iNTKMtqn2GrhtmAUKCyJ80rt76ttbfZHZxk4ysJAr+q2lDmJWnGBfUnGWUqmXyAMiAOU+FYPdsEFDGXsV/0YHwVIfYWYHdzpdEDCIKxYpn5AH0MqMazpEetmIog3Svz6pdBLuUZXQ/Lbd/wk6GIU7J7G2WMol0omXSGeH7NhXLXV9FnFByQtUpyFZQEffdMEkeoWFwWAftej+5cFCuY3d4tipztIkyEFHhTDi9HrHQetSIkeVgWGw/ane0FSvzOpNXm2OrF4rjctvbLsgq68QBvcIgYqfSLMLljkLprRg2lwuVewQfVbw89zWs1ZWEzK+sx+yGGt9dEEDf5qO3vBEgRtp1DufSXvfHQQ8akz4hiHmCR0DmFuz0kV1Qm/w4svQm/E78lOGIo70Z/yvNS4RhOqVHDs8HHOXkb5j3UneqCNNzNg+A1b5Rnas4RKMqSiJFrrr43UpeoTD6YI8e3tPq7u6f6emW9P/MpMWYRbgHYSosHhOMBJoJrO3ViSlmnvuR9DhmLAcTrvRhDA57n25NPkj/Hzdvn4VO/jp7GexjUjLQRZoFmcXgOgAuY7TmngpIjeZaZRrU5OS7/ X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(396003)(346002)(136003)(376002)(39860400002)(451199018)(36840700001)(46966006)(40470700004)(36860700001)(86362001)(7636003)(356005)(82740400003)(70586007)(7416002)(70206006)(36756003)(2906002)(8936002)(5660300002)(4326008)(8676002)(41300700001)(82310400005)(47076005)(186003)(26005)(336012)(40480700001)(2616005)(426003)(40460700003)(83380400001)(316002)(54906003)(478600001)(7696005)(110136005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:44.8881 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f56f7c7c-84df-4e8c-b1f0-08db208cb19f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8649 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_031041_436096_AC975C95 X-CRM114-Status: GOOD ( 14.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The IOMMU_RESV_SW_MSI is a kernel-managed domain thing. So, it should be only setup on a kernel-managed domain only. If the attaching domain is a user-managed domain, redirect the hwpt to hwpt->parent to do it correctly. Signed-off-by: Nicolin Chen --- drivers/iommu/iommufd/device.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/iommufd/device.c b/drivers/iommu/iommufd/device.c index f95b558f5e95..a3e7d2889164 100644 --- a/drivers/iommu/iommufd/device.c +++ b/drivers/iommu/iommufd/device.c @@ -350,7 +350,8 @@ static int iommufd_group_setup_msi(struct iommufd_group *igroup, * call iommu_get_msi_cookie() on its behalf. This is necessary to setup * the MSI window so iommu_dma_prepare_msi() can install pages into our * domain after request_irq(). If it is not done interrupts will not - * work on this domain. + * work on this domain. And the msi_cookie should be always set into the + * kernel-managed (parent) domain. * * FIXME: This is conceptually broken for iommufd since we want to allow * userspace to change the domains, eg switch from an identity IOAS to a @@ -358,6 +359,8 @@ static int iommufd_group_setup_msi(struct iommufd_group *igroup, * matches what the IRQ layer actually expects in a newly created * domain. */ + if (hwpt->parent) + hwpt = hwpt->parent; if (sw_msi_start != PHYS_ADDR_MAX && !hwpt->msi_cookie) { rc = iommu_get_msi_cookie(hwpt->domain, sw_msi_start); if (rc) From patchwork Thu Mar 9 10:53:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167211 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 35477C61DA4 for ; Thu, 9 Mar 2023 10:57:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4+Ib+2sYyQXb0TiruEfUn5pl3a6AW0sFGJhzGdfFG8s=; b=dqCwKO1F34YXQS QMpFpcwRRPagZqV7LIXbcZxPqYEpKZjJ/08zfRw3q8cRY/OkYTQyx6CZNhDnNMS2D4c2UM9nk4Nd6 1vhXMFthmc1HdY6AeTL0sqT2pTjn8EIkedLefeOsp4l1/hEKFb9gAWDFOq9FXZvLfPt7ES9QQ/ukA p7jtaLsjq6xiJGL2gbQ7WlQE3YRdkrFsgT2QIR/K5N4zeRFZ9D/6du8bf1ufY0FRb2NgrmKJFTHyc dOufOHqfgPNd/5sMXfqhIT82W1mY+/UfM0f0Xgg7hLTj0p73jl+sSIWbarkoUYBtOZD0LHAKw/IZI CQqOIfEXpR1Dk2uh4gaw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDwV-009FuU-De; Thu, 09 Mar 2023 10:56:15 +0000 Received: from mail-mw2nam12on2062e.outbound.protection.outlook.com ([2a01:111:f400:fe5a::62e] helo=NAM12-MW2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvA-009FCz-5x for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TCNpUEGVgeh54aVvaPkVKnhYswAmIQV4YhPOO1tMEvo/AOCve7cMdccGwReB73VYV3jSZYHDBAwfq47HBsQd5YXZwWxn4ogJ0OibLf6oO3uwJPSGo3gTkOO0JCc6sIA1KaHrMNECHIuWzvReZK9QeJW3mWT+PMiyI1wSjievPefdh46Go8JNcjbyv7ZYLYkwha9Ye9dVk1wni8s7kljQy+feh1Ck+/i5rStl4sgHjbRbUc5hHeR3lpP849HhLBye5KPGKmCYe2JCbJk116kO0En7IXiWmiGOndVGk2SwX0DwD2qWOhrFuCQqFNiNn84hGCsZ1S+4hzpME31C2s0dXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=APls1b12/0qHWZdaJX+Nl4MRhtKgoUW4jTruISisK5Y=; b=UvDEOh/CO8o9m0WDeH4NPfb52dHDTIQnRFVZ71gCkgTmIMthLbsl/6ChLCY/F1aYkfIQKC4CuQ+igf9aNcNVXMQXS4XlKuNgkck91WNqEeedBFw/RI0aD4hN63Diu96TSe93HWiCLvaVj7ouQgYgpEEEMV1+bEhF8Z6tUfjmdjop8GUZkIBj7J5v5TwqOleDKlTxkyIMJzMdHq9DLxHMv8Me80Beu07OL9GMVlZfpzal8hAuscm+YfFA/JRsjC7XYU/5+G6MJHa1K0fH9yOMGRR3VNGR21Kl1LmdleF4D0/TnKArGeL9H9LC7nzxejuCM1aj315ltpXB8sNuV/9JBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=APls1b12/0qHWZdaJX+Nl4MRhtKgoUW4jTruISisK5Y=; b=Nczxip5cVnFczXQW7X5BazMX3cmDR0pJRKDj25b4q1vXnHIZZkEwTevubxd+lJ9D7/TyRuok5qF2CjK3Ce/VYldbKfh+KH9v0NmARj52Nkw06HVrX/+3IKJDrb1nf8tGZOsftMXFcz3JctRiIiufoeQgdf0huRZ2ychnn/FtLklnqeUsiQBH/Nb/7j1ceDh3FTfMNmEF8RXCfq6zNVzL3KMppKiPY7gcMU1oIc5FLqlkGiYUFvUqMJ/QI08FU+ucaBVRZG6adeoQLcKIV8/U6OV6QanQFzXbQhB0+OIFhUxBmaeoZfybkdP5Qi6uL6BjzIL3/AoPxBe3m7NYXykZqw== Received: from BN9PR03CA0800.namprd03.prod.outlook.com (2603:10b6:408:13f::25) by DM4PR12MB5167.namprd12.prod.outlook.com (2603:10b6:5:396::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.18; Thu, 9 Mar 2023 10:54:48 +0000 Received: from BL02EPF000108EB.namprd05.prod.outlook.com (2603:10b6:408:13f:cafe::86) by BN9PR03CA0800.outlook.office365.com (2603:10b6:408:13f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108EB.mail.protection.outlook.com (10.167.241.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.12 via Frontend Transport; Thu, 9 Mar 2023 10:54:46 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:36 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:36 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:35 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 04/14] iommu/arm-smmu-v3: Add arm_smmu_hw_info Date: Thu, 9 Mar 2023 02:53:40 -0800 Message-ID: <494e36cbb77d49e11427b308868dbc1b0e19fe18.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108EB:EE_|DM4PR12MB5167:EE_ X-MS-Office365-Filtering-Correlation-Id: e1751a30-cbd3-47a0-88a6-08db208cb295 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3yWS7+madUSpXEfIXUPKsS1D8jk1BRxg89LUvsg7Z2MnElN7yatYnHkKsfwdktT/qdb1EdoYZOCt/UOePpSVg7vPt+ZYuOSnb72oVQVS+wG8ZfCsesG06HukSAm9HpW2SJekFxCdSUQ01TYYnCNvDUSk5ahWWa31pC2Fi2aLR8o5lmXwQjSywaFK3gbgQXuXoc0JNYe7JvTWq263NAudDqZGOH8O2qhz3+xUC8JlMBNSABtNTnUt8J6wh5DPDjX+ykqWw4DfDAD2o3JO3aLlaI17/I6aOt2L4f3J5p/eTWKVbCNbFP4P4jkw870YvF/KowF7qAVeBXCzMvGHGSYmheDryvHWAN2P/T+tU1HENEjcFVJyQJGTNOQahGrshMaQ8YeW6tcTExx0eLhISgUIKsf94L8cIX+G7mCcN/AppHD61GdoxGk8U9tIaztZcajB3vvgVZc4TBTvzY/+QkJOSi7mVFWhkqgCpq8eTeQb4aN77PPsbf5XVC/SkvLe0Vxt9WtOp79QhU4rAhzPQ0+7voyYS0cQ4jGGZsURfjypJ1wwCSMb6GCnEBt1dYwj9d6w0ybw5l/9pJ+xDoAgo3R5J9w/dXBmGAkBDmyOrTUbIZts2696Nkh6iMSAUgOyhTLaiFf9lM0edErzCH0Ivh9vXknBFTiXAWxTRTR2zQzyuvfE/kOyddl8arhtuR0z+ff+7OfRofCJWl7XpHpGsRiLsM1Wo/DNgDRa+RcJH35OThi5N2TtaR3MOHr0eypcF0YA X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199018)(36840700001)(46966006)(40470700004)(36756003)(40460700003)(54906003)(316002)(110136005)(478600001)(5660300002)(7696005)(7416002)(2906002)(8676002)(70586007)(70206006)(8936002)(4326008)(41300700001)(36860700001)(7636003)(82740400003)(26005)(356005)(40480700001)(86362001)(6666004)(2616005)(186003)(82310400005)(336012)(47076005)(426003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:46.4836 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e1751a30-cbd3-47a0-88a6-08db208cb295 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108EB.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5167 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025452_273858_4CFAA27A X-CRM114-Status: GOOD ( 16.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This is used to forward the host IDR values to the user space, so the hypervisor and the guest VM can learn about the underlying hardware's capabilities. Also, set the driver_type to IOMMU_HW_INFO_TYPE_ARM_SMMUV3 to pass the corresponding type sanity in the core. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 25 +++++++++++++++++++++ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 ++ include/uapi/linux/iommufd.h | 14 ++++++++++++ 3 files changed, 41 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index f2425b0f0cd6..c1aac695ae0d 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2005,6 +2005,29 @@ static bool arm_smmu_capable(struct device *dev, enum iommu_cap cap) } } +static void *arm_smmu_hw_info(struct device *dev, u32 *length) +{ + struct arm_smmu_master *master = dev_iommu_priv_get(dev); + struct iommu_hw_info_smmuv3 *info; + void *base_idr; + int i; + + if (!master || !master->smmu) + return ERR_PTR(-ENODEV); + + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) + return ERR_PTR(-ENOMEM); + + base_idr = master->smmu->base + ARM_SMMU_IDR0; + for (i = 0; i <= 5; i++) + info->idr[i] = readl_relaxed(base_idr + 0x4 * i); + + *length = sizeof(*info); + + return info; +} + static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) { struct arm_smmu_domain *smmu_domain; @@ -2845,6 +2868,7 @@ static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid) static struct iommu_ops arm_smmu_ops = { .capable = arm_smmu_capable, + .hw_info = arm_smmu_hw_info, .domain_alloc = arm_smmu_domain_alloc, .probe_device = arm_smmu_probe_device, .release_device = arm_smmu_release_device, @@ -2857,6 +2881,7 @@ static struct iommu_ops arm_smmu_ops = { .page_response = arm_smmu_page_response, .def_domain_type = arm_smmu_def_domain_type, .pgsize_bitmap = -1UL, /* Restricted during device attach */ + .driver_type = IOMMU_HW_INFO_TYPE_ARM_SMMUV3, .owner = THIS_MODULE, .default_domain_ops = &(const struct iommu_domain_ops) { .attach_dev = arm_smmu_attach_dev, diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 8d772ea8a583..ba2b4562f4b2 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -14,6 +14,8 @@ #include #include +#include + /* MMIO registers */ #define ARM_SMMU_IDR0 0x0 #define IDR0_ST_LVL GENMASK(28, 27) diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h index 0d5551b1b2be..c7a37915b49c 100644 --- a/include/uapi/linux/iommufd.h +++ b/include/uapi/linux/iommufd.h @@ -519,6 +519,20 @@ struct iommu_hw_info_vtd { __aligned_u64 ecap_reg; }; +/** + * struct iommu_hw_info_smmuv3 - ARM SMMUv3 device info + * + * @flags: Must be set to 0 + * @__reserved: Must be 0 + * @idr: Implemented features for the SMMU Non-secure programming interface. + * Please refer to the chapters from 6.3.1 to 6.3.6 in the SMMUv3 Spec. + */ +struct iommu_hw_info_smmuv3 { + __u32 flags; + __u32 __reserved; + __u32 idr[6]; +}; + /** * struct iommu_hw_info - ioctl(IOMMU_DEVICE_GET_HW_INFO) * @size: sizeof(struct iommu_hw_info) From patchwork Thu Mar 9 10:53:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167208 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B7566C64EC4 for ; Thu, 9 Mar 2023 10:56:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7NXYEelECS6y4oiWTiTFtNGM+2HywClsmr3MN8A1rsE=; b=k8AlgKCwNAcIvE XlVq3wceTPorcX1OxuFMFexBShyBFMjevke9fARYPBUHGd8aaC5WZHWX8v/lHjZuVj1mbrBr3/8fk 7V8Ac8sXlcGAjppI1Y+j/l+oWLAsrx4U6/eoir20zB5QQwJtjFmTwMXXOgQquTOKeeKYWo3HSBkSN liBNi8hxdQuGyuQw2Z6BTa6zbawuV0KWrUHIu0OGSxOnrsrl6S/42ktOotAlaMHgSFYH01AIBv05f V2HWuPg50g7reWilZ8XX2NZ/W7ZqSwknSanjNybweu02GnKv/2AvkGtDjtmcMmJxO+PJWwkPnQj/z 9h6PlMov+fY8tLbGbLcg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvm-009FXS-LE; Thu, 09 Mar 2023 10:55:31 +0000 Received: from mail-mw2nam12on20631.outbound.protection.outlook.com ([2a01:111:f400:fe5a::631] helo=NAM12-MW2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDv9-009FCc-Qc for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FhardJhDAsAc9EY2XkCWlrAfZe1LpGLR/NIgIOLpQjIWvNqxiI/TUOdkeTLPl+C/M5llNyuDZWOq3wHScsOSJKWhPRTK4wBajDoZNWS3l75drDuNxq8YxwYrcXHMXvIrj+BsjjwUHnD8pdLSW3e5AVS/3XFAKTLoMzhsUk142qDt+8fGWjtLPzhGKq+SQXVhx+jB2k9kSz6F0adJkGPP3HMP10yEA2uW79Zsnnq9Vzm1ps/nKiPAJDCVQ4WAfLdck39LCaF/6aLxVQd6dN2X3QsHM2w/mq5oTG8RsmExJQ9p6pqguUPMHzObS3R7V16n8mmqdXvgxGyYEXY7+P8pbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8n79L2CX87paRCe6UZUTXdwVr8iA8ZUEUlBJsOnbdWk=; b=m4DLIm7kpkWrdNI0sL3LZk9qCT7yK7CfyM3mmqidIhR9PT3kbbMc1wMwHN9pnuG1qPl0Lqk77T9DVSwGJlc1A027xnGItZ7jmrqIbbvupXZuJ54jsV+O2A19UFYR6avL+Rdu9XCmg9QCzUOY5wmt46fppFHHB/DsF07FX1++wZbzmC6wMVQzf7U6kuYU+d03flOAdPSh8AcA6tyrvXQouMelQxsMN2PgEzRoOV4zLT6QUN9z8jDgoL6afqeyELnKVUcpGwYMokvN/dx49pRczPzCosW3B1Nakb/8HXy67nY2VpNl9yxdX5A3wr40lF7cO+BOz+4EXIeCbh5CwvfvFQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8n79L2CX87paRCe6UZUTXdwVr8iA8ZUEUlBJsOnbdWk=; b=o6mi//CpQkeV7PXElN6lsb8diyuB/LIg0V8vMluQ6VPpVEw3P7wDNiROU516PTQSGzNN5HiCRv64uUiJnuKSRY8LQj37xN4lziDK3XSzpZh6AEluxK/ehRigAdQK0bltTnQotiouRseYFzmpvVSeqF1F3hJFbIesQxLe6IPoOsX0/f1pLBcn6EzPhSDyrDiXAP5kRuvUqvidqWg5KA5o2k0kFPqLVp/TiAOObiNsjfABkUHhjBUZIjvnePDGCBSDRgf6muYlt4dMub0LCf8MQuv8tuH9/2DTrumGJk+o7qTRa+h7fI3IkGssqWRXYULOjkMWNnfW9mIvBjig4j9r6A== Received: from MN2PR22CA0003.namprd22.prod.outlook.com (2603:10b6:208:238::8) by DM4PR12MB5748.namprd12.prod.outlook.com (2603:10b6:8:5f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28; Thu, 9 Mar 2023 10:54:47 +0000 Received: from BL02EPF000100D1.namprd05.prod.outlook.com (2603:10b6:208:238:cafe::b7) by MN2PR22CA0003.outlook.office365.com (2603:10b6:208:238::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF000100D1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Thu, 9 Mar 2023 10:54:46 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:37 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:37 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:36 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 05/14] iommu/arm-smmu-v3: Remove ARM_SMMU_DOMAIN_NESTED Date: Thu, 9 Mar 2023 02:53:41 -0800 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000100D1:EE_|DM4PR12MB5748:EE_ X-MS-Office365-Filtering-Correlation-Id: df00ed52-7200-42a6-deee-08db208cb2d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PGUHFIx8lNVzJbHhdgSOlnXiWRykm+XT+cQhZKFI9jbeooV0qoEsyJhIzyoqHRacTBXfKDFMjKt2FdhCM2TCw6uR9ZWOhUYPFbEX+uptCOA1z+8n1/fpjbJaBeJMq+SGs9c08tY5j1RkCjsJu+plC/1Si33VDU1BuWAMJhPM0UiKQAQu/t9WT1Awhgx/eFXV96rjCLem+qImiYnuQq+5MWVsqQGd36W1OtQu6ss2l1a7XpqUrslskR2Qh5efVDmzn8Tnamoakq7a8oqOirdf7pmmtZZRRub7d7KeoBt23I9t6n5pJLqa6AzhuNjJ/I/XscllvjbntlKIAMxZBuk59Yr2vZk6UCU1KDsbzwFgrFqq7yMMrZGhHx51LYCwIDyw5O8VtgjYAMVcVt2KGpaw9myVFgFvTmrUDJBYVEpiehOyV5k7tMxiyKmnom2dLWG6XyemFkbteMzLk3jD2/UOuHEsNy9qXlKVvobL2I5z/TNHsiiCwQGKtmcMh2uToyxL9egtoz683H4l/oWH0Dj36IXhRm2MA5qu6KiH1tWaQJQMkwrXjqXNzhse6iOo95SoO8cs4nmgY5lEV81ulIMrlmJAH6ELocjbuQHVi8DSJGVWezNkkv2tx9nGO5RzEJO/sijQIz3N0CNT9xdU2QDKsfEtCxxAc0iUqQ+8qmBhvyi5VG4/3p3HhbjLJL8wfBnwOQO0xo8o3Nv5LrdkcDhjM9JHM70ePMRsMP/acwJj24qa9Gsr3HfOlkukBb/B/u38 X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(396003)(376002)(346002)(451199018)(40470700004)(36840700001)(46966006)(6666004)(70586007)(7696005)(70206006)(40480700001)(36756003)(7416002)(4326008)(41300700001)(356005)(7636003)(82740400003)(86362001)(478600001)(8936002)(36860700001)(8676002)(5660300002)(316002)(110136005)(54906003)(82310400005)(40460700003)(2906002)(426003)(83380400001)(47076005)(336012)(186003)(2616005)(26005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:46.9315 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: df00ed52-7200-42a6-deee-08db208cb2d9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000100D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5748 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025451_936835_1907742D X-CRM114-Status: GOOD ( 11.99 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org IOMMUFD designs two iommu_domain pointers to represent two stages. The S1 iommu_domain (IOMMU_DOMAIN_NESTED type) represents the Context Descriptor table in the user space. The S2 iommu_domain (IOMMU_DOMAIN_UNMANAGED type) represents the translation table in the kernel, owned by a hypervisor. So there comes to no use case of the ARM_SMMU_DOMAIN_NESTED. Drop it, and use the type IOMMU_DOMAIN_NESTED instead. Also drop the unused arm_smmu_enable_nesting(). One following patche will configure the correct smmu_domain->stage. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 18 ------------------ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 - 2 files changed, 19 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index c1aac695ae0d..c5616145e2a3 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -1279,7 +1279,6 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid, s1_cfg = &smmu_domain->s1_cfg; break; case ARM_SMMU_DOMAIN_S2: - case ARM_SMMU_DOMAIN_NESTED: s2_cfg = &smmu_domain->s2_cfg; break; default: @@ -2220,7 +2219,6 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain, fmt = ARM_64_LPAE_S1; finalise_stage_fn = arm_smmu_domain_finalise_s1; break; - case ARM_SMMU_DOMAIN_NESTED: case ARM_SMMU_DOMAIN_S2: ias = smmu->ias; oas = smmu->oas; @@ -2747,21 +2745,6 @@ static struct iommu_group *arm_smmu_device_group(struct device *dev) return group; } -static int arm_smmu_enable_nesting(struct iommu_domain *domain) -{ - struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - int ret = 0; - - mutex_lock(&smmu_domain->init_mutex); - if (smmu_domain->smmu) - ret = -EPERM; - else - smmu_domain->stage = ARM_SMMU_DOMAIN_NESTED; - mutex_unlock(&smmu_domain->init_mutex); - - return ret; -} - static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args) { return iommu_fwspec_add_ids(dev, args->args, 1); @@ -2890,7 +2873,6 @@ static struct iommu_ops arm_smmu_ops = { .flush_iotlb_all = arm_smmu_flush_iotlb_all, .iotlb_sync = arm_smmu_iotlb_sync, .iova_to_phys = arm_smmu_iova_to_phys, - .enable_nesting = arm_smmu_enable_nesting, .free = arm_smmu_domain_free, } }; diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index ba2b4562f4b2..233bfc377267 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -704,7 +704,6 @@ struct arm_smmu_master { enum arm_smmu_domain_stage { ARM_SMMU_DOMAIN_S1 = 0, ARM_SMMU_DOMAIN_S2, - ARM_SMMU_DOMAIN_NESTED, ARM_SMMU_DOMAIN_BYPASS, }; From patchwork Thu Mar 9 10:53:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167224 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 6942FC64EC4 for ; Thu, 9 Mar 2023 10:58:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=csBu8iRLweQyCZd9TY3DCXqZxbX6EM+XLItgJyK0z6Q=; b=yLgcrDxnYZfdSM c/0Rlp/7WWJOWyGo/a6SIIZr5M6hwj+a26xGu7AOnFchxcdXZkNBofGjrqdL+YM79JdA4k5U3XQdO ldJn5a1I+uzU+0tTzZ/oqFIYx38x91NHXGeVb+VAzve19HXB7GZVcOuXt+dJi2Rv+nq8vW7164gSA ZjydIhrePS+25xIyQ4StlMCwd+fppfuzEXqh4bQW6++dOe9p9sgRzWHrTjYJn5IL/Xp7m9p3kH/Op 8HgSK5Vur2btb4Dc1or9grWPMtuGyliiWvU/WHgTHzUQgPZbOSSNlNrZdDGUpZfTXop5nQEwmYptu nlmmNcgTYJU3kEIAYytA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDxc-009GS6-1O; Thu, 09 Mar 2023 10:57:24 +0000 Received: from mail-sn1nam02on20625.outbound.protection.outlook.com ([2a01:111:f400:7ea9::625] helo=NAM02-SN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvD-009FDi-2u for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YR3LTLXUWI45a3QY+pCl9l/JsFPsipaP0jXl9geDgpXVTKR5IJdUgEOeZOoAmeVvdJBXKqE7PuVctTqkEIRX2Ib+TpNP9initSq/13pQQ4h3FiKfA1dJPHbrPdH6Jm1drM1CTEpg+canRW8OS+kdmgKrqFeg+9qt+zFOOY9g3wJNn5diNgnmjhmJGFMr1oQ1/g3ZQLOt/sZZav9kaxd/lAU87GpHcR2Thy3vAhXk6SWvoCCCWy5ukNIiaTJzA0FCfTmpzExgdv5n/+qWBYWmGvTLb0AuC+54wx6aFtikoiE3FI2UgUKotVaI9I50ppYUArtmxG1Rxif0IPbpI7JUQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=I5uh0txpedJi0zm1j3xWje6fBmSfQB17NuXIZ/aesMg=; b=Msr4ykrfztxK8pwD2H3Tq77sHWXn39BWcoht60COKlflpxW+a8uTFflPJnDQLP1PuYST0eofGY0vKM3+ZX1Txs9SqPGAyi3dJrbQe7yJ1OWdtLEWLMa3nRFQJ5TCUl4xbpvCbQAvKvn2jEQM5nU7GWXpBIAPNvwPGYrX43VTzJraLQKBfdUMfz9OwqGa9KKZ5dVjx6lpSW9gT2+bWbOspVACI72uR86SHH4SrwD8Gf/IpW/1YKKOBkPQyYf8p3UlJN2wX1DzuPAggu9PGJR7rJ9Iz4eMz0vmy5Sf9uqTMOH+sNW5UUGt+/PmfprFN28CoJxmyL9Sr+RmcHFZOEt93g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I5uh0txpedJi0zm1j3xWje6fBmSfQB17NuXIZ/aesMg=; b=lUd7p+yknPQdMHotjfGWPht+pbW9vXtohzHGCzwdsCdQWNh3qn9Ke3urdFBdPgepqrp+8aPl8rK3FFjV1RlbfRCwxhtpetQvMZ+wKCZQ1iPndkpr2jiZXSZ/ytPckNdf94lmEsnXpxjwg9LmHFlVm2QzGSxKboftrRozj/Pl/vW8nI/aidIcvPvzctIF5yZL2BY6txNhznqHWj7DmcubZcr7IWn8Jv0m9Pcf2Mah62ZBuGcuw0ItEMtTnqh8lb8XhrDUCsifrCP7xFWlYwHp7L+2jm6XXuC3MBOrKuQM+k7OoT8NNNKwkciNnicA+/yB+qFGfuOkaJLffmTuQBp9Rg== Received: from BL1PR13CA0002.namprd13.prod.outlook.com (2603:10b6:208:256::7) by SN7PR12MB6888.namprd12.prod.outlook.com (2603:10b6:806:260::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:49 +0000 Received: from BL02EPF000100D3.namprd05.prod.outlook.com (2603:10b6:208:256:cafe::52) by BL1PR13CA0002.outlook.office365.com (2603:10b6:208:256::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF000100D3.mail.protection.outlook.com (10.167.241.207) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Thu, 9 Mar 2023 10:54:48 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:38 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:37 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:37 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 06/14] iommu/arm-smmu-v3: Unset corresponding STE fields when s2_cfg is NULL Date: Thu, 9 Mar 2023 02:53:42 -0800 Message-ID: <995e48fe6eb9e31c71dbe8bb80d445aa34a51819.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000100D3:EE_|SN7PR12MB6888:EE_ X-MS-Office365-Filtering-Correlation-Id: 5644ae0f-0c37-4b76-806d-08db208cb3af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hCS2MVoNx7iiFq1hrtdJt5LXJe8GoliRz9heG1xcNnoKSXNoajM2uCCXRkdsXeHOciR9DJOnU6E75GULglV/JOx3EXXA2+Q+G9+uoh0Ns01RVEgxKyNgFSPC1e/nbrm2LPfPKpK8yx+bOfSWJk09F2BxlTO9CZoAH8BqogjM/oSCpOouztKYsXf79jHWd3ho3txQyLa12nps332akDqoDQJgQ2zMYxSQFWjmt+K+xow2PhefTaei0D/730B1sBbXq8M32DE62pSEOAr738hkBtSG2st7VFdeAvpUJ1fTsPT/KG4pIMaYgM8seGN35R1eX+61d5rIobGINtoYIDNEsnm321SMvWTmLMnFlK0CclQvXt6k5bKs9L+TQFB6+nrgeqPQ2TMliXzJx56Dw6wuUBRcAecCmKQXX/OZpc5B5nY0OSb440VgtygWJLmvAp2nFPsc9Fg/q6M49AqHehatHsuXahxnqUyQlIdnityulCAONi+ulVCFoMegO5tItUzwpIL9wFC1CRNm28iTEZe4YPjXdhwPHPj8tBKppPd8DrYzvll9UoSO1WDV2fEnL2FC9Yr99urZRkCXURkxLW0ihlojn8BvQ/K803CWZDQFqpzSnB21VTzdKaLgSIHmMewpuSyQwBwKRsV01BZJVBkWq+z4SQT9irBsRgwUkkDeq+W8i3n4PG9hPpA6fpzPU36Cv3/MNwArq+7gJsDDYvUXxiAI40lNC79jE/N1icCmb7VOMFVmv0+V7c8yR4UGD7q5 X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(39860400002)(396003)(376002)(136003)(451199018)(46966006)(36840700001)(40470700004)(82740400003)(7696005)(36860700001)(186003)(36756003)(478600001)(7636003)(356005)(54906003)(110136005)(86362001)(316002)(82310400005)(336012)(26005)(47076005)(426003)(41300700001)(2616005)(40460700003)(6666004)(5660300002)(7416002)(70206006)(70586007)(40480700001)(8936002)(2906002)(4326008)(8676002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:48.3315 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5644ae0f-0c37-4b76-806d-08db208cb3af X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000100D3.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6888 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025455_179161_D72379B2 X-CRM114-Status: GOOD ( 11.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Eric Auger Despite the spec does not seem to mention this, on some implementations, when the STE configuration switches from an S1+S2 cfg to an S1 only one, a C_BAD_STE error would happen if dst[3] (S2TTB) is not reset. Explicitly reset those two higher 64b fields, to prevent that. Note that this is not a bug at this moment, since a 2-stage translation setup is not yet enabled, until the following patches add its support. Reported-by: Shameer Kolothum Signed-off-by: Eric Auger Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index c5616145e2a3..29e36448d23b 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -1361,6 +1361,9 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid, dst[3] = cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK); val |= FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS); + } else { + dst[2] = 0; + dst[3] = 0; } if (master->ats_enabled) From patchwork Thu Mar 9 10:53:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167210 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id BC3C9C64EC4 for ; Thu, 9 Mar 2023 10:57:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=D2xyO6Jxu/tSG+d/60Cbme78n4kLWKb531bXjORpLr0=; b=CMfvs9h+OEE4VY DjDBJX/1D/kx0lr4U2iLMR7XSUfy2JkitDmTly+LSuY75+SPUamHXFvkKtcgRyMIkO+Lwk9UNyNUR 79dtKEtOG6jtn8PYaR9S9lY1s1n+ti3d/iDZwcq88F/uNnSM+23OqlLdl3GK167R2MvuE+SemothK ZzoEWJ94GoEWCR7YV5UCTd8OaDkIcEY8E0+UppUnJw5gFHZCaiT08vS4kpxjjNiZBWULJScwlbwfl xGAC2VKXLMZVNZsC7Wic/OaxZ1hQ7r7qt/3Tsd01gNq0QKF7XS66wSUZKmf7zgoAyn9qZpCcRYuNH cF1gfzTILMNl4f6GUfGA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDwG-009FnD-33; Thu, 09 Mar 2023 10:56:00 +0000 Received: from mail-mw2nam12on2062e.outbound.protection.outlook.com ([2a01:111:f400:fe5a::62e] helo=NAM12-MW2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvB-009FEX-0V for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R0XLhMFBmi0sIHg0BMgnLVAWWNfGSxQgAXd6BQ0xkyzT9ghE23Q5qQz6p3H7GkaSpEyLB5HacII2/2h6mR4C+b8H4+oEUfZ5FWmecmSmLlyqqUX7UznvB4gRMJ0rh2K/0S8gy6qo3eMe1fJukUSVkH0/tTKCkU9VtGiKVj+xLow7nTkSFHujrzUs7DoxlTU0lx+rcgBdrJ8tpETizTo1Rvq5YFeK0tG4lEla+V6FmEbdh9YdowmIsAFfmzcvG/7Dqx4DX5RmtQbKBK0aaDs+3/6uluzE54fVLjwKoLCXpa1EiISwlbfuPPIODvRE1IVG9jnnbHC/MECbtH6b/6p2Ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Oy679PsGKRdgAaCm07/ByNB8RFd7Yujq/wr7apZd26s=; b=GMPYatuiBFmwb1HMcrWAR/9HekJRHyWpSgi0p7aaWHXmlsftCSGgG8iVb1FZj+BQ6ciuTq6w9Wz2jW55LKUjGf2KHGO7LmVcrLJXGcyqBqTsUMG/BYziAJWB5XJxzYW4NzX1tfILR8YP2zEfRee8/Zp3tA1fmMHiJcdY8PTvjRjqT8uEEs8JUK5CYSbOa5ZPNoJr7d35E7fAvHTgUlSHCBUASl/TqBXzquVZNbm6l1zlhf5NHBBr1Zy2Yoqf9Ige1UJl0N3SRmHb1Jf3aHI0qk8Xxzb+cpyaiLd4u5hbb2+v8ozfWTjyickWKrKMUF9MtlqlseAhl+k0jmsWtKrlgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Oy679PsGKRdgAaCm07/ByNB8RFd7Yujq/wr7apZd26s=; b=slVVUN6lMMqXgy40wlTSumJ5qxh5AZbPoqF9oLGxIUPzhCdTTFt4z9LlFBeL2wHmBqvKd4OI5gBvEPVhOyrvUpl3qnYjX3DrSfAugTWQCQS87CboVoolYCCUI7crSVXx9VjO7mHXTAGu7fepxPSaGqyJFdB+q1RBBepcHSwKgcrgqTVJUj768yt0KNVWLogy1oP79tfnKs6MoDBAx3pliGCzqKy5h12qqydXFUJPVKaRgjybpKKsjtfghIJQcyx+gZfQbZCdgl4IyuGyP2bjeNccpzu+HvUCQxDDLDtsZZF3kO0g9XNxp5Ig4WTSGHShw0TuBfwf3aY/lmu5ZJ9mmg== Received: from MN2PR22CA0024.namprd22.prod.outlook.com (2603:10b6:208:238::29) by SA1PR12MB8966.namprd12.prod.outlook.com (2603:10b6:806:385::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Thu, 9 Mar 2023 10:54:50 +0000 Received: from BL02EPF000100D1.namprd05.prod.outlook.com (2603:10b6:208:238:cafe::f0) by MN2PR22CA0024.outlook.office365.com (2603:10b6:208:238::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF000100D1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Thu, 9 Mar 2023 10:54:49 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:39 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:38 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:38 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 07/14] iommu/arm-smmu-v3: Add STRTAB_STE_0_CFG_NESTED for 2-stage translation Date: Thu, 9 Mar 2023 02:53:43 -0800 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000100D1:EE_|SA1PR12MB8966:EE_ X-MS-Office365-Filtering-Correlation-Id: 3059bac4-fc4b-462c-cc6d-08db208cb4aa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kue/I/zPYOFUNsRCFVYTSRqIRXUz/Ww9zwHYpJS+lnMgHHFI5eAAFu3BbI1fGHPxqxUfD2PHi+Gl4VycREV4HBYaqU/zvc29M4ga3OqkM98WWqBFyEcTxwi4dfT7swbkbwTmbhI3YaXyEgCBH5Gtny/z9qdODMoBr09OLokGcUDJgi54ZFx+prv2i52KCzY2UMtkslOcRFtAjI139EqH+NtTa0rJxdwdVLmDn0wib0o2ZGE7ibfKVxZCBBCtx23m/EOkdZbpMz2zrRGJPcefcwNrUpAPhrNMnFy8QDY2fhUtPVgk64bZBeiue969orW0tRBQC6xIiuHjIv/x0Ypuh+uhPhm5HqZawNU2om8WepepOcoTUMGrLjIkKNZbA3YnoebSQ7p6N1KiNxmEHGdGS0sZqJxRF4tQTusT4jLHb2f2GiL6vdFBnwoRfNT7EQvvE2s3IzWg+g7nwLYtSibKqCUnH3l/7qgdTnW9Kd+R1P8JCeAON2kx2qvMpVmdcMCiKCrZ1OP/qsqtSvyTiqayPMvXzWP3tDTyt5kZ8StKbekkEZxer29SuO/5ku1tzD2+vM03CdCg96LvwJHU9C6i3JEnXAg1TqwW81N+wtY26ye5J0jCm9SzB0itDLz8x0a3yJC25KunTR8PwQDHrnyfz65gz1Q1g91Aikuxkm/OJMz/1d/sSklgGrTktunfRKPkM+8lgIlxh4inV8R7kEt7BGxfBw8+tSo7JM2LOPagf7ti7o1VTklh5KuTeaLZEviE X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(136003)(396003)(346002)(39860400002)(451199018)(46966006)(36840700001)(40470700004)(7636003)(2906002)(186003)(5660300002)(8936002)(36860700001)(41300700001)(7416002)(82740400003)(2616005)(26005)(86362001)(70206006)(70586007)(82310400005)(4326008)(6666004)(336012)(316002)(426003)(7696005)(110136005)(478600001)(8676002)(47076005)(36756003)(356005)(40480700001)(54906003)(40460700003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:49.9784 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3059bac4-fc4b-462c-cc6d-08db208cb4aa X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000100D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8966 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025453_086508_D323535A X-CRM114-Status: GOOD ( 10.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Eric Auger The value of the STRTAB_STE_0_CFG field can be 0b111 as the configuration for a 2-stage translation, meaning that both S1 and S2 are valid. Add it and mark the ste_live accordingly. Signed-off-by: Eric Auger Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 + drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 29e36448d23b..21d819979865 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -1292,6 +1292,7 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid, break; case STRTAB_STE_0_CFG_S1_TRANS: case STRTAB_STE_0_CFG_S2_TRANS: + case STRTAB_STE_0_CFG_NESTED: ste_live = true; break; case STRTAB_STE_0_CFG_ABORT: diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 233bfc377267..1a93eeb993ea 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -208,6 +208,7 @@ #define STRTAB_STE_0_CFG_BYPASS 4 #define STRTAB_STE_0_CFG_S1_TRANS 5 #define STRTAB_STE_0_CFG_S2_TRANS 6 +#define STRTAB_STE_0_CFG_NESTED 7 #define STRTAB_STE_0_S1FMT GENMASK_ULL(5, 4) #define STRTAB_STE_0_S1FMT_LINEAR 0 From patchwork Thu Mar 9 10:53:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167209 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 2B93AC64EC4 for ; Thu, 9 Mar 2023 10:56:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WJ7wMXJRiLqz6CmvaOvgK45aTtxL9AXsiYTO3Izj4bQ=; b=Fp2yWdH6lShmW/ 7adsxa4BPr/Yspli+Qk6ujyOSj4qhi5uMi+sdIcPN6oEgw63TV3LoNNvbLfKx4Zn0HdH6O+cyk5Gb b+3xZdcVUg+2K5F3r8Ymsr13fix80T7zORqpeGIrGwIPkIUbVCIHQSMx7N5LwXIYDDIIXi7S+eDRb tLNNOtp27NEbTXlG2m4lZ9FqydMiny9ZZhr3ekcWA1JDk7kDJ9LPtO3OXQWPIHacLiC6+LgXbx1bM cqeqFbq+B93HcTp79rPvbE9/2srFtBuKQkTAuTMEYkFVR0ITQnM6K6/+xZ7rF/HyRRfB7E1MJNvp6 DYZV4nPGMQ+Fz57P0hBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDw2-009Fff-6z; Thu, 09 Mar 2023 10:55:46 +0000 Received: from mail-bn8nam11on20600.outbound.protection.outlook.com ([2a01:111:f400:7eae::600] helo=NAM11-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvA-009FCw-1m for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aMaCUukIFAooyETFmLGTqolPuqk3Z9QkBzPGj9Uoh1t+6nlFGON1SJd0A4ddVoViThNdstQezEJ57iuyi1byGuSmsvJDcUR+T2ZZdPYFcDI7DUO4DtFayEFmQyYkpt4NUBFpJLGwGETaM6QQRR9zHPGDE/LFXqRR49qL0WByi6vixe8CCGVloxG/Vxg2Wn5NoNqdIkluVdsPVp5H7YEdnC/FOHg554OevKvHYO178YGD8wQaKHWgEGu9Gzr7ZGvcWPZMMUCh+Fsyjd7jrlDuasbITc8byvJpIv36YhNBKGACP2L/ksZWIspzO3ERq8QvfLERGAPDXzmQ7FQTxyKnaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=U6mV0v4fbbmz39mZPKbnbHbmd90snt/MKRfL1nKdO9I=; b=feF7h13e9rg1Vngcb92uWz8GZ3QkrF/gtr+B3s3AXBByjesCZAJFvSsgRhUDDvihMFJViRo9aSjyjT/wF7vqiVC5XrTIZPutfIDzVPwl7Xjdzsakf0R5rw+NZqERnIDmSLTOOHrYGK9/e4MxCETjwEvd0OxPztKG4FMuQbOiZpfQx2y3KA6YEkyYMr7BiijM154r0jiC+wY4YXQd2ukpdBQjhts9JFRBSCZrjhGruFHI47XWC/ea5Trmzrj9pVqg0yd0W2b/fQc7D5nnyElpXvqr3XSNJpYhq4G/TYKnM8kguNW16wTMPWIDGCeH3tFR+DHCIyheyLJtDO+a6kV2cA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U6mV0v4fbbmz39mZPKbnbHbmd90snt/MKRfL1nKdO9I=; b=Z24a2LaKyftfxSwWa9hMs9rWUQXWWbfzwb4IlRJ804XQHB9/8S9LEHHVZngD3G0JOprwNhsqApgwtr7ZqqZBoDxRH+xknH7RgVp2wmMXqBI/i9HOZy/FCoajwDOr7DIBQE23O1CsqOTc67cOa6At3lmU53UWgcBd//RmdjA8/gfIi6h9GqfMpLRPoXnoAlFC7ZvfvoVbFA++2duPYE7y23DT/vK0YTORs3Eq4HPJu5sJUpJK3jm/GaLsN5rITvgyIPz9M58jlZTJplTo+LjlIKcLqSnq1GQ2UZPlyUqWRkoPkYjNCVLdYKplKKhU4TFfhjXlGvNEiRiWr23zIJ1j4w== Received: from MN2PR04CA0009.namprd04.prod.outlook.com (2603:10b6:208:d4::22) by CY5PR12MB6154.namprd12.prod.outlook.com (2603:10b6:930:26::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:48 +0000 Received: from BL02EPF000108E8.namprd05.prod.outlook.com (2603:10b6:208:d4:cafe::71) by MN2PR04CA0009.outlook.office365.com (2603:10b6:208:d4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.28 via Frontend Transport; Thu, 9 Mar 2023 10:54:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E8.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.13 via Frontend Transport; Thu, 9 Mar 2023 10:54:48 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:39 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:39 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:39 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 08/14] iommu/arm-smmu-v3: Prepare for nested domain support Date: Thu, 9 Mar 2023 02:53:44 -0800 Message-ID: <4740f8a40caf68ccc1f9fee5fcdf1604546fb354.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E8:EE_|CY5PR12MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: be2ff6f0-63a3-4ba8-619f-08db208cb3b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VwPJdVdK50NWl1RQoHrKWqqf96pSzR8xjQ48o18mSHVZ4HZcoKUGxqVbunfw/vAOovtQ2p6wHj1OdbI4tSJRVDhLKjaN5FQVVt2vJ8ogoNE5y0FeDSv9PxVPU6o6kxb0KDvAmrtDrDKiOe2lS7nvnDPbffeqcbRlURkjYQXnemgIBzQ5hc+3tzpcL+3x90frnBGRdaF9xB67djRLxborrzw5o4AP5KnDx5UhMuVRcoqfzUlEQ+OIjx07XwHxPXYPVIqf/uYxQCD/6LBjUd6pJChLfDh6CvdDrJfceIUibwHJPudhqm7bTbfmG+JUUEggegLpoJs1VaLBoVXrEUqECaJqfyjfwQpuul3nEAKKVzpynVSeL9PQmkcc00Rk51byT9Z+3u1IzqQhgR3dj3fAe8THjf55ofTm+V7aoEHnts9u7o14jewCrOXJPkmYD2aumxfEE6RseHe7a26Js+7J8F9JEI1dA+BPDYvPselkJ0eyfYfearqjUIIHjRo7NBRRslyq+TwovftWdFLueBsbghRx+9zMSYOq3muI/O6AHuy0KKQuao+kPfEGWLcIZYAy36uqfrN2vc2eqwHl/gNZFIJKgU+1/5wSnTUPtiG6fNLvqGMDMsXeZ4GUYbj3CKCGZxilWEhlBVb2JKQehO5CBfd/3EM9XM1qWSRklDbc4b2yvppyTV2P0XfcrjAL5nQCqNes7c/BR/I3IaPevTQ/yEpA7KkDItvyo4GgMucoqGjchL72WUh6tAeAPBebv83o X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(396003)(376002)(346002)(39860400002)(136003)(451199018)(36840700001)(46966006)(40470700004)(36756003)(82740400003)(83380400001)(47076005)(426003)(36860700001)(186003)(26005)(6666004)(2616005)(7696005)(336012)(41300700001)(40460700003)(8936002)(70206006)(70586007)(86362001)(8676002)(2906002)(4326008)(7416002)(5660300002)(356005)(7636003)(316002)(40480700001)(478600001)(54906003)(110136005)(82310400005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:48.3569 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be2ff6f0-63a3-4ba8-619f-08db208cb3b3 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6154 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025452_155430_4F02F61E X-CRM114-Status: GOOD ( 16.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In a nested translation setup, the device is attached to a stage-1 domain that represents the guest-level Context Descriptor table. A Stream Table Entry for a 2-stage translation needs both the stage-1 Context Descriptor table info and the stage-2 Translation table information, i.e. a pair of s1_cfg and s2_cfg. Add an "s2" pointer in struct arm_smmu_domain, so a nested stage-1 domain can simply navigate its stage-2 domain for the s2_cfg pointer. Also, add a to_s2_cfg() helper for this purpose, and use it at proper places. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 25 +++++++++++++++++++-- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 21d819979865..fee5977feef3 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -100,6 +100,24 @@ static void parse_driver_options(struct arm_smmu_device *smmu) } while (arm_smmu_options[++i].opt); } +static struct arm_smmu_s2_cfg *to_s2_cfg(struct arm_smmu_domain *smmu_domain) +{ + if (!smmu_domain) + return NULL; + + switch (smmu_domain->stage) { + case ARM_SMMU_DOMAIN_S1: + if (smmu_domain->s2) + return &smmu_domain->s2->s2_cfg; + return NULL; + case ARM_SMMU_DOMAIN_S2: + return &smmu_domain->s2_cfg; + case ARM_SMMU_DOMAIN_BYPASS: + default: + return NULL; + } +} + /* Low-level queue manipulation functions */ static bool queue_has_space(struct arm_smmu_ll_queue *q, u32 n) { @@ -1277,6 +1295,7 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_master *master, u32 sid, switch (smmu_domain->stage) { case ARM_SMMU_DOMAIN_S1: s1_cfg = &smmu_domain->s1_cfg; + s2_cfg = to_s2_cfg(smmu_domain); break; case ARM_SMMU_DOMAIN_S2: s2_cfg = &smmu_domain->s2_cfg; @@ -1846,6 +1865,7 @@ int arm_smmu_atc_inv_domain(struct arm_smmu_domain *smmu_domain, int ssid, static void arm_smmu_tlb_inv_context(void *cookie) { struct arm_smmu_domain *smmu_domain = cookie; + struct arm_smmu_s2_cfg *s2_cfg = to_s2_cfg(smmu_domain); struct arm_smmu_device *smmu = smmu_domain->smmu; struct arm_smmu_cmdq_ent cmd; @@ -1860,7 +1880,7 @@ static void arm_smmu_tlb_inv_context(void *cookie) arm_smmu_tlb_inv_asid(smmu, smmu_domain->s1_cfg.cd.asid); } else { cmd.opcode = CMDQ_OP_TLBI_S12_VMALL; - cmd.tlbi.vmid = smmu_domain->s2_cfg.vmid; + cmd.tlbi.vmid = s2_cfg->vmid; arm_smmu_cmdq_issue_cmd_with_sync(smmu, &cmd); } arm_smmu_atc_inv_domain(smmu_domain, 0, 0, 0); @@ -1931,6 +1951,7 @@ static void arm_smmu_tlb_inv_range_domain(unsigned long iova, size_t size, size_t granule, bool leaf, struct arm_smmu_domain *smmu_domain) { + struct arm_smmu_s2_cfg *s2_cfg = to_s2_cfg(smmu_domain); struct arm_smmu_cmdq_ent cmd = { .tlbi = { .leaf = leaf, @@ -1943,7 +1964,7 @@ static void arm_smmu_tlb_inv_range_domain(unsigned long iova, size_t size, cmd.tlbi.asid = smmu_domain->s1_cfg.cd.asid; } else { cmd.opcode = CMDQ_OP_TLBI_S2_IPA; - cmd.tlbi.vmid = smmu_domain->s2_cfg.vmid; + cmd.tlbi.vmid = s2_cfg->vmid; } __arm_smmu_tlb_inv_range(&cmd, iova, size, granule, smmu_domain); diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 1a93eeb993ea..6cf516852721 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -709,6 +709,7 @@ enum arm_smmu_domain_stage { }; struct arm_smmu_domain { + struct arm_smmu_domain *s2; struct arm_smmu_device *smmu; struct mutex init_mutex; /* Protects smmu pointer */ From patchwork Thu Mar 9 10:53:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167212 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id ACFD5C61DA4 for ; Thu, 9 Mar 2023 10:57:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jmQ5KDV0uyaOovNjQ1aTfIKB+fOX+Rw1RBxoFDUZyAI=; b=inz8x1c8HBx/ID 5pSCTlKWDY+m4fujlxu0QbXqIX6enwR/HgeC1mZxOTt1bgtuARb1OUQPSRthiFFsIcrOCtxagwzfb KTonazRU44RhHpRx57bmf0trIXHE6XZfld41J54NoB1dRt0zZ3dTcubNGIwcX1ds40/gYC5ymtrHq MD2XRY9zkkOmU8xSCxrN3lV13gGMKKjKTS/bs51mOMEwVoYg5yPdUB7jECnPWy5kiSSAci6WDSHsn ux2xHrt7M5piORc7udNtIqbzH+84b0hF6F9jgn5fcYoPDgJqwCVoAp9x7OUVTYSJ7Imcz8Ns1M7jY ul/IgKyGkwipaqaV104Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDww-009G9D-Ol; Thu, 09 Mar 2023 10:56:43 +0000 Received: from mail-bn8nam11on20600.outbound.protection.outlook.com ([2a01:111:f400:7eae::600] helo=NAM11-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvB-009FEY-AW for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:54:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ta4P3bCpv4A1VFWTPxgdTj+7w9H/P5WK07RzuEKZ3nBlKKoNoeGj6Yh7bIUajsHmbdLlXm/QadzGiPLDhyVF5bV/zZHs6HPsqZGp/wXzAPh8Eb9s1lqdPHmo5oC/Yju6yfjFOXPfD8u3Ibv4bvRC0fqa5ch7icZfvxfRYiElFoiFR11HxD8bpNcHftdB0ZC3D8SqOOFfyhhY85NyQdmVLIXLR2ziZ8e5T5yBZ6zCu4gpP6YXNQl/RZHhXxKXFor9QE5wk0GJ1tW5wCeLWysozb6t/ww13q0TZOYYQvvhbsvjy8JRzcPSKUo4D23VvXtQF5Aj7etLsRWMKbphgTtgfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=veohshV62f6X/GkXmFLi4CeciGkHfiBxeuF+YJjXtLo=; b=m56a9lGvGDlmkR0YxapSrblinqkIQZ/eNtfGuLE+0z8Nae3cL/4Nwe8xemo64wFb/+bS90RswR0QDsXmbG9QmjpP2EMEfJ/gTw2C7EUaYwZ/Hz3IgQPX/kLfDmglq4BBeC6jazqJdmqc0T6hWBcWvAlFmDtxREKjeqCIo1VUM04Nx84loSyMu359g+avIEvdkk5FlW1o59R6mz5A9OK6fQj1N8aum3/uF3TxKx2CUREcQMAT5mYWXD6bGQGQbsdYEdkQXr8KJDExmz39JlACkcMQXHad7l0DSNKtuH9PS6ci3tl4RdCsVkn+dukhmwGQh07NmigYBYNk9i3zGko6OQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=veohshV62f6X/GkXmFLi4CeciGkHfiBxeuF+YJjXtLo=; b=rbZ2XX6ccck5zvRrHOMju5is3tmUZy5IYvngQEfdwSq0ICKFVxHZEgCCo2TvusdBlG++fsV7JfZ841BfRusfLgljJuA1dVYlWAt4gE4sXHEjVKMDIOrSx8+vPwWRkhDUjGwk3D2qlQ1dwj4C3ZAXRwasOu7LUqbEolLcmtpraKv41LGc3Cr8Wj9HG0IUCq0WwOxLVpnbJrr82HKScxKuqmDN9FZ7nsAljZN8vcKVxJNVOcxn8nR2kRIWrxaUoKxsemhMYThgTLKnWji0A8/84FFYo/ZBi63BNTtBhyGNPJzor8AHAQkuPROYactzAHOw24gJjbWtVh9yBkbsJhKP6A== Received: from MN2PR04CA0034.namprd04.prod.outlook.com (2603:10b6:208:d4::47) by DM8PR12MB5495.namprd12.prod.outlook.com (2603:10b6:8:33::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:50 +0000 Received: from BL02EPF000108E8.namprd05.prod.outlook.com (2603:10b6:208:d4:cafe::5c) by MN2PR04CA0034.outlook.office365.com (2603:10b6:208:d4::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E8.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.13 via Frontend Transport; Thu, 9 Mar 2023 10:54:50 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:40 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:40 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:39 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 09/14] iommu/arm-smmu-v3: Implement arm_smmu_get_unmanaged_domain Date: Thu, 9 Mar 2023 02:53:45 -0800 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E8:EE_|DM8PR12MB5495:EE_ X-MS-Office365-Filtering-Correlation-Id: 47f1d7c0-8736-4fbf-1a93-08db208cb4b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0/u6jxisrhtQWdzb5C8FpfgPCfK5IlQ5JYljqF2Stp1f+qwWkYejuu462BzXW6v/gjZYt2G3PictpGK4QkJGCKn04gUVLohRLnajLwf6dizWgojlodkApPXVVFaAfOTWj8G6r0HFK48G+SlH3l9EpBPRzE8odJX6AMXAI68gOtDWmp4PytbbxtPN/IachK/Qh7gdt6D5BwpT2E89RIaE7Ti7tvkDKuIfedua9berQlVinHmoHR5/RquQI0iRf39+5cgCuLsEcn0lNkXpVn3+5IPiKXyJnRDgiGFGexEhIFahV/ZEQFo5XPVVZDz2DCll7nl3HtnUBh9YwJkxB1aaZ2THTSZ9MuvsfEJ6d7ttvRg6CxrF34TAwQKRrdAfu8WfM27tg/6z2bP6v1s/Mk+UnTwyQVpG5S70GgWFzQOaD/kJKdVecWeScI6WK+eNjXI+32LTZsQLTuECAER9f/i121uzuvW3g+jUGKARl6BmPEkxg7LfvCM75hg9hDNRrBUFryui/YcICvBrm0f3BI7LbODKF04Z4/EqyN2yOEJy/lmpveuRJ3FcPpS3OswG78zsU4MTs3hkZlJOfkSAMFLH0l5Q2blNA9CxvGDAOPW+1S3LOEXPHm2JzXNABZlY3/hN3OqTYvXLEDr1ttDG/OzA2htFjbEb9Vl60gpWDGzrzTno9nkKbOg9RHXtVWSNBW/R45azLsbu14ZdcUi2hzCD68Kvr24F13Zasi1QOBmcFtHyg+kUiewdUYrEdpLWuWNm X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(346002)(376002)(396003)(451199018)(46966006)(40470700004)(36840700001)(2906002)(7416002)(5660300002)(26005)(8676002)(8936002)(36756003)(41300700001)(70206006)(4326008)(70586007)(40460700003)(110136005)(40480700001)(316002)(86362001)(54906003)(356005)(7696005)(478600001)(7636003)(6666004)(82740400003)(36860700001)(186003)(2616005)(82310400005)(47076005)(336012)(426003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:50.0132 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 47f1d7c0-8736-4fbf-1a93-08db208cb4b0 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5495 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025453_404371_8C49D03C X-CRM114-Status: GOOD ( 10.52 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In a 1-stage translation setup, a device is attached to an iommu_domain (ARM_SMMU_DOMAIN_S1) that is IOMMU_DOMAIN_UNMANAGED type. In a 2-stage translation setup, a device is attached to an iommu_domain (ARM_SMMU_DOMAIN_S1) that is IOMMU_DOMAIN_NESTED type, which must have a valid "s2" pointer for an iommu_domain (ARM_SMMU_DOMAIN_S2) that is IOMMU_DOMAIN_UNMANAGED type. Add a function to return the correct iommu_domain pointer accordingly. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index fee5977feef3..18ab5d516cf2 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2082,6 +2082,17 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) return &smmu_domain->domain; } +static struct iommu_domain *arm_smmu_get_unmanaged_domain(struct device *dev) +{ + struct arm_smmu_master *master = dev_iommu_priv_get(dev); + struct arm_smmu_domain *smmu_domain = master->domain; + + if (smmu_domain->s2) + return &smmu_domain->s2->domain; + + return &smmu_domain->domain; +} + static int arm_smmu_bitmap_alloc(unsigned long *map, int span) { int idx, size = 1 << span; @@ -2878,6 +2889,7 @@ static struct iommu_ops arm_smmu_ops = { .capable = arm_smmu_capable, .hw_info = arm_smmu_hw_info, .domain_alloc = arm_smmu_domain_alloc, + .get_unmanaged_domain = arm_smmu_get_unmanaged_domain, .probe_device = arm_smmu_probe_device, .release_device = arm_smmu_release_device, .device_group = arm_smmu_device_group, From patchwork Thu Mar 9 10:53:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167227 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 33E04C64EC4 for ; Thu, 9 Mar 2023 11:00:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gp7hw1P+gtTiCeJyudnXOZd/AOi4tXtxQM4CR24RY6Y=; b=kljThqdHjcizG3 ChUUnO5N3QFYKkA8P9HQ4RJUyqpvqlsSQzVu3UKCkklBvLlAAMqfWWIrysMSVOXUxGW25NX9fKgCS GNu27YmUMa0zO270WjNMu8UkUrdzHgzeaGEqFBbr4xr91qeXVUXwcEQ2IF6+Xy8ykQJLqwFYqHZTG iIzjPge2llCrNNJipIxSMVgytd2gl7vlA0YlUaw33iF6i3ZO1nsCSLnXWeCXvos04sCioB2mOgt2d NLy6rldFHE70BfQoS+qEsf1OX5tFo+2pdn7o6cPqPR0swsbujACpCOsVDZasonBf8yByS5n5q7lwD RnmzekzYrq/FNy69ZGrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDzk-009HMC-9O; Thu, 09 Mar 2023 10:59:37 +0000 Received: from mail-dm6nam12on2067.outbound.protection.outlook.com ([40.107.243.67] helo=NAM12-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvH-009FH6-KU for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:55:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bDTNhIw6PFhnVmUmfnuvzvX7Nj8NxV48mR+xYUAznTkinpsei+sIyt61KA5ny60YItMobwisW2xa7/x6R0f4B4hvIFtiw5RFCnpuYHh3iBS9qxIQ4FOmPQbRM9PyrUKh/EPRihicct3C3oH3A21s8vdM0fJOmBsTaQQCWCyrxVdZSBwcFAZdnoiS3pfnSZIB5YGJwk7D+9dWQ9Uyf6xKikqZrTuI5bkGFmuL6cSmPmsdoyIVewGMOWR6orB0snIW8lUPAlKPik9uUzFoRAF8+bfbxCsLD3RCBf/eOuyacPT68Dv+hoQkFaLqFzrtlxmZ485QSmK/55WgzmmSqriaxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qu2hNAgMKUWJWkJKPV/u8sJ3QMgIzwQ7mZzx+VX3FjM=; b=CqaGTSGw7/t8G3IoP601v8NuzLw4GsyuI1ACgc267y5xXdwTp8bwj0foc293sNqTAbiYy3X1LhUCZYTzxQqm3EkMMfRUqNjfMoVfj6x4tF/+PzX7sqlHT2xxv1bneeWOLCv/Foto3hvd2G/RFn9NGdMVMXvUOBEUG5zMvudmZdhiPSed+kDd80iLXFs7nWyS0Yvn3llnwYXr7k4byNjBHUrQKqhmwn04fhc+so1B/S4Oqbcm74HxbTDFUlJ/1mTIYjJif9WPzA2jZiNYBcNnV4DRUsWY9Y3aUR5N8nZX40PpW49bfRC7VpyUHJqFxtRZsPo4XsboipN26RtD9+PH3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qu2hNAgMKUWJWkJKPV/u8sJ3QMgIzwQ7mZzx+VX3FjM=; b=NmXYk98QBrBh9bWMXFV26mGCZ/jRZoACEZRE6Xx3P3h81P5BzwMT0cyMcFBbtDJPA2vxvP+1SvDToXoZogS4wZ4z2gcsfu+j9EpgrF46yLTAd8W6mdyWa5QvNvpws1D2AzzftX0X0pfQ6M2+VTDcRZoEaNbQ47pLgV5npRPl6zSHnxCZyEgUqtcsnITmneJ08YBglaGoZrl6YmopTepifFNBcvkhrqbhvtHexw1bd/rb9HQG0O4HHEJ0MXjN5uYldYu+2gZkSirErMX5TwAJsNhySXItQij77iqSfS4QePLIgXptWDLRhbAz6EPbdSmCQJo3bhBLNtPgLJL9EFe9sw== Received: from MN2PR22CA0017.namprd22.prod.outlook.com (2603:10b6:208:238::22) by DS0PR12MB8365.namprd12.prod.outlook.com (2603:10b6:8:f8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.18; Thu, 9 Mar 2023 10:54:54 +0000 Received: from BL02EPF000100D1.namprd05.prod.outlook.com (2603:10b6:208:238:cafe::25) by MN2PR22CA0017.outlook.office365.com (2603:10b6:208:238::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF000100D1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Thu, 9 Mar 2023 10:54:53 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:41 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:41 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:40 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 10/14] iommu/arm-smmu-v3: Pass in user_cfg to arm_smmu_domain_finalise Date: Thu, 9 Mar 2023 02:53:46 -0800 Message-ID: <118863752be19884bfe9c2f7384f9ad19a1c2083.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000100D1:EE_|DS0PR12MB8365:EE_ X-MS-Office365-Filtering-Correlation-Id: c4cdb2f8-ec02-4917-2953-08db208cb6ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yChfbPS2e+FBgyjNUxLqFnlDC4iPzyZH2jdhvVTIMNsJ4bDL9i+OSD+f5dSBwFp7XIfzkPum2wCU0e+U2zzY0S7JbAEckKuI6NLJYqhzUXDffcy1IC3sFtn6+yZJahE92HcFXJARL9pL9WZpSP6wM8kesC99DRh5V2IMhGxJ9dUnMMzqv+t/UVNf8q+I5fLKeWdeH7kwmMI01Gd/qtrFQOQfw06lVeis0Jv3hb72LFcWSNxctOYWLTb98EpcLsehqdsvdf9hcBD6u9rvNOuwQMNjqrYCLcW9XWdBhquOh/BnIWeZ0C9TfIcbCaWaIUsCkLVju1wuJOHdmJroc1ogMUlW/H56IM5HLYC1TULQJiq+rqzSdliXJD69Z6y1cVo9cIfpCASk4bssyqQvU6U6QbLbhEC2aXJVF9FPdsGrxJS8n0EOn5ev4OL05p5UgJSgancmNX9Wa5asWSPsLWnubaDp6EyWeHoME6iwZGhMgjiuKdIEtBCPzZkY5tDA6Isv5yBDJDZdR347PVjj69f78RQsR/I/0xT4DjR9wnU9bckf/p2shlfme++2V/YlhQrByKdD6GHAuF/wGq/dhfuEOMOZHQMwA8tq2EKvypX6c8HqbvJctIdqt96QQJ6QrZ+CBM/LCnxcM71NQ6wBM76LokpeHnDQcva+NKzOyarNp6ZLe6/n5VrH9P4PYl21eUqVDGURwyYEjngzqi+MiVt3LUCGYpo3S9EXpTRFBSzyrF8baqbUGii1mehcPkR9kUk/ X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(39860400002)(136003)(376002)(396003)(451199018)(46966006)(40470700004)(36840700001)(70586007)(70206006)(36860700001)(316002)(47076005)(41300700001)(83380400001)(8676002)(4326008)(426003)(7636003)(36756003)(54906003)(110136005)(336012)(82740400003)(2906002)(356005)(5660300002)(40460700003)(2616005)(7416002)(478600001)(7696005)(82310400005)(8936002)(186003)(86362001)(26005)(40480700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:53.7753 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c4cdb2f8-ec02-4917-2953-08db208cb6ee X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000100D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8365 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025459_716829_87751EF5 X-CRM114-Status: GOOD ( 15.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The struct iommu_hwpt_arm_smmuv3 contains the userspace Stream Table Entry info (for ARM_SMMU_DOMAIN_S1) and an "S2" flag (for ARM_SMMU_DOMAIN_S2). Pass in a valid user_cfg pointer, so arm_smmu_domain_finalise() can handle both types of user domain finalizations. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 18ab5d516cf2..2d29f7320570 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "arm-smmu-v3.h" #include "../../dma-iommu.h" @@ -2223,7 +2224,8 @@ static int arm_smmu_domain_finalise_s2(struct arm_smmu_domain *smmu_domain, } static int arm_smmu_domain_finalise(struct iommu_domain *domain, - struct arm_smmu_master *master) + struct arm_smmu_master *master, + const struct iommu_hwpt_arm_smmuv3 *user_cfg) { int ret; unsigned long ias, oas; @@ -2235,12 +2237,18 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain, struct io_pgtable_cfg *); struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_device *smmu = smmu_domain->smmu; + bool user_cfg_s2 = user_cfg && (user_cfg->flags & IOMMU_SMMUV3_FLAG_S2); if (domain->type == IOMMU_DOMAIN_IDENTITY) { smmu_domain->stage = ARM_SMMU_DOMAIN_BYPASS; return 0; } + if (user_cfg_s2 && !(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) + return -EINVAL; + if (user_cfg_s2) + smmu_domain->stage = ARM_SMMU_DOMAIN_S2; + /* Restrict the stage to what we can actually support */ if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1)) smmu_domain->stage = ARM_SMMU_DOMAIN_S2; @@ -2484,7 +2492,7 @@ static int arm_smmu_attach_dev(struct iommu_domain *domain, struct device *dev) if (!smmu_domain->smmu) { smmu_domain->smmu = smmu; - ret = arm_smmu_domain_finalise(domain, master); + ret = arm_smmu_domain_finalise(domain, master, NULL); if (ret) { smmu_domain->smmu = NULL; goto out_unlock; From patchwork Thu Mar 9 10:53:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167225 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id DB03EC61DA4 for ; Thu, 9 Mar 2023 10:59:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=x2BkiOlF2XI6raMHC3r5pYQeKGLLvKUvOy82TiiJmWo=; b=kdn0QzW8IIWecs eJyiPQwfEfUiiubpOuBq6hQDtT8bz98VWpi5PfkDMHbQkXb+Z10zX2AVdBQnTgXSAQnPSM/SMtkXW 645nbXyyTTIr8Gy0vgsQPsztYsspCDQ3Qx52OH3IIAySv2Y0PHEGSskgz6ur+QPeZdk/UIiV5E/Z8 R2uXwdKZp1ur6VYXxH4TePDe2Nn9BYJ90dNSqn86ktzWEljVaxFEAET3GLX6O58zQtz/FTF1AderC Jl038N3oBioqlM71KVzEyLjcG+wx/ldI7JWAY0SvMFScdb061NsNnxrYuIW2djShvF+k8+gfAyONM WAQtPjtSlGNn2U8fQ0rg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDyO-009Gkt-1r; Thu, 09 Mar 2023 10:58:14 +0000 Received: from mail-bn8nam12on20625.outbound.protection.outlook.com ([2a01:111:f400:fe5b::625] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvG-009FGX-EG for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:55:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iIzp3NGPHl+ag0Lb7tEvVpd/x+g9stHdzXvYQ4/AwCwerp+dmE59Lfsq9Lm54JyxGfixM00oB4iXvA+Z5SSxl2keHl4f5lyHZGMi096VXRbIXcjNWc6xJfr6XY4tVtoYyJXz53mgeEMiys89s4ajnvZLWhYi89NiD/RcVQVLmwG85CPGxZK29sSwYsE1yLncNIgfHefPbb4LXCTPz9Lv1d8xJpd2kTnFRvghw0AuhBcGGqMgMzuESqw1ln74hWVkeFC2BSSQSa3toK64IwzpLNC0BoITj/I866nSKHDS0ownu6MalaBUchZwviI3wyM3BEPLH1VRT7FhPTFdiB1Htg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2ZVXA4L9BTJ0E+4M8b1F5QLwtubB6Sh0NdsH8STRMr8=; b=OxfszRkm7qKyEukFDDLYVzTLph97XBQvIXGAE2hdkYj/kRI0LLIHGLvr6cX2Qrh/wzT54+9Tt6a+i6JoaybG7eQkyObLN+N8bFxQ7J+74sMXkcWdk2oJjIVhxpd1QJVBrnzWhySEchfbCBJTL7xwBYOevKXJmNy88L50fGZlt7guBaE8g/eGOdhPOcfiHveSEj5RAZwboXdaXVG57CVE8S3Li0uBmjR5zP6ZBgcOP01OAEiTkkn5BWpTON3ZqDsknmyr3ZRXTP031f7r8f66iHKGvSlL6NaxzVZcOOlD+zoIt/1faN5iXQ1mrtOXcGY+z17jSGgixM3e1CuPU30XHg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2ZVXA4L9BTJ0E+4M8b1F5QLwtubB6Sh0NdsH8STRMr8=; b=EBzQXLRouFhbdPB/7sMthAy1u6OC1/ylb1jP6Tdt1V2BFYnR0BgNv81OAZkMAVxL+6tC1uN69e2MchGoKWoLrRt+LOayCxUcTUkt9LcCSCho9FnCIgLaaR7Gwvrb83iDY7ixtKgr1j54bEKkfa7CcYRmC7Ez5fF8Z6toiz5vTFg8feMQp6Wklyb7ThvCIi4DdBGRUzmHKBYMjSk46fBzR5f7x9AsDb2vMpvqQ9gJQ7FeIDxPKC6evwmvsD9G/BJubho9kMzq/JSc1d1HHyYHJoE6gtIz62174PhA3ADMMyOl1S36tLIAbP+lQYFW4RswQJ7jVD4SejXOxyyKsMGF9g== Received: from BL1PR13CA0075.namprd13.prod.outlook.com (2603:10b6:208:2b8::20) by DM4PR12MB6422.namprd12.prod.outlook.com (2603:10b6:8:b9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.29; Thu, 9 Mar 2023 10:54:52 +0000 Received: from BL02EPF000108E8.namprd05.prod.outlook.com (2603:10b6:208:2b8:cafe::29) by BL1PR13CA0075.outlook.office365.com (2603:10b6:208:2b8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108E8.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.13 via Frontend Transport; Thu, 9 Mar 2023 10:54:52 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:42 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:42 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:41 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 11/14] iommu/arm-smmu-v3: Add arm_smmu_domain_alloc_user Date: Thu, 9 Mar 2023 02:53:47 -0800 Message-ID: <7d26e897780bdc009b11bc0c0ddc7b755a769b24.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108E8:EE_|DM4PR12MB6422:EE_ X-MS-Office365-Filtering-Correlation-Id: 753e7895-e0be-4266-bcd3-08db208cb5f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l2FPmZkq0+MOofBck0p2ZGL7tAgDXMSpmyCbI9rasYvCbwYgXB874UI7yMCR147hCdbXg6aC9ddCMdLczxh3dWJhnR30A84C01jX7DfmVha5bsaxxmiC24Jj1QchpHeXwZD474DMpLpSfuD3lwhgedIjfuk3NeIuPvOyBtHBB+O1TUmPfJI63wwz0YwMvRlQeRH0sHgyFaa+rFw+1RRtYfoJ9fO+E6D3mQoajMtK3sUZyF8PMCVMJr9Oxwi98NrBdmVNec5YxE9Gkp22mrDMNAVx9D3WaCcsOVRiIemBtcXcGJgN9OnuheW4IQCnX0qtukcPfW2I3WWW6DFqAlUDOLCSNR4fWzJAOKptBcWOGgaP8okyIN1/qlGT5OHnBGs+5sn5tZEAd381rQ+UqeydJ6lvgV6ZLG29U3ydwwZVIzLDt+5a+5XN5uoK+EAzl08ZdGoAI1Vtzysu4QchYC4CfbnBEmbovb0n3rnkI54QKkCxGFez0ogqMQvQuYfnrX8UMhin6V3vTjxjSipjhkSA9396F1TU4uIPblof0XguVoT+NG4targ2k8WMMwkmRbAoRb4P/iet8ZzAlb4eCXIr5Jt3Gub6vKLGH5qU1mew2GpwRbduutxzei95jRLCVRlysqpFkwm5pAwoGFf3+Lu0dzbYqOTD7oQ+6TcAXHYxvgEj7R816NjMf/8G/IJa2mYIIyubb/fJv+UWF/co9phK+Z8o76kP/d/J9IzZz4ISE6t46ZN1niOrs4iq7EMNwvMv X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(376002)(39860400002)(396003)(346002)(451199018)(40470700004)(46966006)(36840700001)(2906002)(7416002)(8936002)(5660300002)(336012)(47076005)(70586007)(41300700001)(426003)(86362001)(7696005)(316002)(70206006)(36756003)(40460700003)(110136005)(40480700001)(54906003)(8676002)(4326008)(83380400001)(7636003)(2616005)(186003)(26005)(36860700001)(356005)(82310400005)(82740400003)(478600001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:52.1382 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 753e7895-e0be-4266-bcd3-08db208cb5f6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6422 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025458_522752_78636555 X-CRM114-Status: GOOD ( 18.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The arm_smmu_domain_alloc_user callback function is used for userspace to allocate iommu_domains, such as standalone stage-1 domain, nested stage-1 domain, and nested stage-2 domain. The input user_data is in the type of struct iommu_hwpt_arm_smmuv3 that contains the configurations of a nested stage-1 or a nested stage-2 iommu_domain. A NULL user_data will just opt in a standalone stage-1 domain allocation. Add a constitutive function __arm_smmu_domain_alloc to support that. Since ops->domain_alloc_user has a valid dev pointer, the master pointer is available when calling __arm_smmu_domain_alloc() in this case, meaning that arm_smmu_domain_finalise() can be done at the allocation stage. This allows IOMMUFD to initialize the hw_pagetable for the domain. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 95 ++++++++++++++------- 1 file changed, 65 insertions(+), 30 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 2d29f7320570..5ff74edfbd68 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2053,36 +2053,6 @@ static void *arm_smmu_hw_info(struct device *dev, u32 *length) return info; } -static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) -{ - struct arm_smmu_domain *smmu_domain; - - if (type == IOMMU_DOMAIN_SVA) - return arm_smmu_sva_domain_alloc(); - - if (type != IOMMU_DOMAIN_UNMANAGED && - type != IOMMU_DOMAIN_DMA && - type != IOMMU_DOMAIN_DMA_FQ && - type != IOMMU_DOMAIN_IDENTITY) - return NULL; - - /* - * Allocate the domain and initialise some of its data structures. - * We can't really do anything meaningful until we've added a - * master. - */ - smmu_domain = kzalloc(sizeof(*smmu_domain), GFP_KERNEL); - if (!smmu_domain) - return NULL; - - mutex_init(&smmu_domain->init_mutex); - INIT_LIST_HEAD(&smmu_domain->devices); - spin_lock_init(&smmu_domain->devices_lock); - INIT_LIST_HEAD(&smmu_domain->mmu_notifiers); - - return &smmu_domain->domain; -} - static struct iommu_domain *arm_smmu_get_unmanaged_domain(struct device *dev) { struct arm_smmu_master *master = dev_iommu_priv_get(dev); @@ -2893,10 +2863,75 @@ static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid) arm_smmu_sva_remove_dev_pasid(domain, dev, pasid); } +static struct iommu_domain * +__arm_smmu_domain_alloc(unsigned type, + struct arm_smmu_domain *s2, + struct arm_smmu_master *master, + const struct iommu_hwpt_arm_smmuv3 *user_cfg) +{ + struct arm_smmu_domain *smmu_domain; + struct iommu_domain *domain; + int ret = 0; + + if (type == IOMMU_DOMAIN_SVA) + return arm_smmu_sva_domain_alloc(); + + if (type != IOMMU_DOMAIN_UNMANAGED && + type != IOMMU_DOMAIN_DMA && + type != IOMMU_DOMAIN_DMA_FQ && + type != IOMMU_DOMAIN_IDENTITY) + return NULL; + + /* + * Allocate the domain and initialise some of its data structures. + * We can't really finalise the domain unless a master is given. + */ + smmu_domain = kzalloc(sizeof(*smmu_domain), GFP_KERNEL); + if (!smmu_domain) + return NULL; + domain = &smmu_domain->domain; + + domain->type = type; + domain->ops = arm_smmu_ops.default_domain_ops; + + mutex_init(&smmu_domain->init_mutex); + INIT_LIST_HEAD(&smmu_domain->devices); + spin_lock_init(&smmu_domain->devices_lock); + INIT_LIST_HEAD(&smmu_domain->mmu_notifiers); + + if (master) { + smmu_domain->smmu = master->smmu; + ret = arm_smmu_domain_finalise(domain, master, user_cfg); + if (ret) { + kfree(smmu_domain); + return NULL; + } + } + + return domain; +} + +static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) +{ + return __arm_smmu_domain_alloc(type, NULL, NULL, NULL); +} + +static struct iommu_domain * +arm_smmu_domain_alloc_user(struct device *dev, struct iommu_domain *parent, + const void *user_data) +{ + const struct iommu_hwpt_arm_smmuv3 *user_cfg = user_data; + struct arm_smmu_master *master = dev_iommu_priv_get(dev); + unsigned type = IOMMU_DOMAIN_UNMANAGED; + + return __arm_smmu_domain_alloc(type, NULL, master, user_cfg); +} + static struct iommu_ops arm_smmu_ops = { .capable = arm_smmu_capable, .hw_info = arm_smmu_hw_info, .domain_alloc = arm_smmu_domain_alloc, + .domain_alloc_user = arm_smmu_domain_alloc_user, .get_unmanaged_domain = arm_smmu_get_unmanaged_domain, .probe_device = arm_smmu_probe_device, .release_device = arm_smmu_release_device, From patchwork Thu Mar 9 10:53:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167226 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id EBF72C64EC4 for ; Thu, 9 Mar 2023 11:00:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tHO/PzOZpTXSNW68hfXjDQSpJBUWxEonQHvrjo+yPb0=; b=RZ0DzoESJTsRhi kTQn9sEkC/hVNfL6X7TpqYWbVIm3vdGLPmMQQLwkjrAWrmZ6wKj47JsKpCbSPT6QL4CIb8Bu1151A SPANVdQ3aoG60Fk3CY374iQ8ryG619fULrqoyr+zsXaVKh6Ve152gfRdJBk+dZ1pwV7HcgU0En67F +TsbJcjh4k/XInjomUxQIz7d/0Crky9T/iFUzjA8eVAMJNXvjAu2aEKiu6bfN9WkX5jfpn+Bbw45z 7xeNWKInKaFnpPxYYv/N7S3sWllksv8SsqxHyVmbA2shliXtne+U8aEQIGFCFmfvC6jL87+N9lyyt 36X1n9iaUzdr1tLszGkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDzF-009H9R-5t; Thu, 09 Mar 2023 10:59:06 +0000 Received: from mail-dm6nam11on20630.outbound.protection.outlook.com ([2a01:111:f400:7eaa::630] helo=NAM11-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvG-009FHb-MY for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:55:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IISH63EXsGuTAJ3CMFaD8mgS2G5Tkm83lnvSwONTpqeHRmGwL4+qjdFDPGoxuOWRWZ5sE8ieGLxwP68DqPdLVfGydkzq6opfWco0Llm4qYenWUp+wTBNY5RDb9t7ByL7o0V6w/wwIiRQnopaz+Xp6VAXUNd3wnyvlb6AeM4913t0Z5YYy5CNVUuvG3er6ojYQLVknHtO5gV0Fs9FulNuQmSrcWpLcluYsqr6qvNy6VicIIig1U5WrPYMrnUtjmiN/FE4wdqHs060LB4+5R6VCTDoYxCsBK3I1NJGUw204zU9GLPnP2ao88G27pMcJ71CJPkve5DqW6eFt1honoFhZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ROCSFJ+OhHO2HWfCKnJ+03se15MOoPB3m1JFGtF+Y8E=; b=YW+Oc7Y3fYbXO1wK/DTQCBjWGKRyyFCelsT9IVyrgqTXlB6fSl8TzBkaQX2H8aParO31GnDznVNpLefMfuWPZbGWZ0YksAY9M2Km4gwB26u9jnQs5bGinW/7SrC+aMqVjKKrjJIwTWLYKZKXBbhcJT8YN/lLJyN9Z8qxurJx5eyT7aZl/kOk8ngYvJ2FH8GcmhCf9WtXGJkjZ5Em7T4CUTFArL0lSvOwsayY0LU3A+HmxGC4nRE0WdpXOZgLdnmicfo6d32ZY5rVEBeS2KveiY3yOpyN+sa1SEMqTUBJnFieQGowNX9dpa2Vvg9AILXNLkjbdxudidTnCdqbv8gB1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ROCSFJ+OhHO2HWfCKnJ+03se15MOoPB3m1JFGtF+Y8E=; b=VEF2qZAXS/nJn8m6Xj/BU1m7S+2dowNh1JET4dno8qlJj5Am99BQqr/gRFX2G8DM4hydGivYOfb57iq5FCMKkyV4ZQL7v1lOYCmipsJYqrcmMbQDlcNQ1LOFdayAcrr0HTB5bTN/NZI5Lp54ESRv85wgQ3qbRJTngS07P3hvPNm3OsbIcs4xppnmrtMGtq6ToiNKypBE8ck+PTjU6LeWuuy57TkDYI14Vxn0ykIQxqGWo54rz6dW+UHZP4ZBPRevduO5CvpfZHC+B5c7oeiBw2aVWIqmMnXF9mG7wLuTKzcC4yD219hO8hON6ptw3F6LeBlYj7HOR0fJU/wOdtE2ag== Received: from BN9PR03CA0803.namprd03.prod.outlook.com (2603:10b6:408:13f::28) by MN0PR12MB5836.namprd12.prod.outlook.com (2603:10b6:208:37b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Thu, 9 Mar 2023 10:54:53 +0000 Received: from BL02EPF000108EB.namprd05.prod.outlook.com (2603:10b6:408:13f:cafe::31) by BN9PR03CA0803.outlook.office365.com (2603:10b6:408:13f::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108EB.mail.protection.outlook.com (10.167.241.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.12 via Frontend Transport; Thu, 9 Mar 2023 10:54:53 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:43 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:43 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:42 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 12/14] iommu/arm-smmu-v3: Support IOMMU_DOMAIN_NESTED type of allocations Date: Thu, 9 Mar 2023 02:53:48 -0800 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108EB:EE_|MN0PR12MB5836:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e658049-009d-4d57-8189-08db208cb6d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XRmoxe7y4ayn4t5sFJsES5enyYtF/unh+JBQUcKF9u665zOAsPji5tk26wFnUZyE/AcKZMa8iaG0ieewsreuyxn/9a+M7LoCfXuijpL9EWXlapF5bKxFFBS9VXzyt0OgtpgyRtEHo3UFibBF24xrEJ0vcbH5GKBymmQxJ/KuWYWx1+HPVlL7pqFehRtbCKpjc3A67N+poMYa+GbSm0SfstdjAStL22mOgdIuTYOOm+zN9k2Z+812V6m/F2IdoOWgx9p5lR/EcKld9XMXStyyRHiPMttCARQIWcvmryRYYbRWv7a1HDhr2cCPzqxvGMuMDjHRvNRL1azV49YnarW0ztwpRTNPFcwxBAkEHMMxjhWVqdLtcNg9wQvTT7AljZMXo85LZmgcxh2XPruQOb1/FgLTEZ7yLAiyplDpyi0IJdrnQy2T7rfZUa1YzGn3z8UlTThkHblInuxSuMZXt2TH3qd52vz219qhVopZAol3Ttz6OhL/2VcxgR0WIK6GE4O65bL1kp//Lae+0WJRjkZXQ4ZTEQrj006oyxqbgXgse+JHgTMSOlq+uUO/1baGEDJJRkxwbwGGd0PB41tabxQ1/Ca6fgGgPer70EilwzmyxWGIUxxWbgSKRmeWNuH6ZurfAJiIN9U2U2Dw8NpANMnE+aSB9+Y0tfK6cHCk/vHpsUTYoPOFL+7tSyKzCRyuVwC6rMEyRzRcC+PuOLshKOPGlmd5LKqauiY0YKqAxHVHQtiaPsSUt9LbTaOtYiV+6kk50PFFbRv/DpoR6EDJGLTjSw== X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(136003)(39860400002)(376002)(396003)(451199018)(40470700004)(46966006)(36840700001)(478600001)(7636003)(47076005)(82740400003)(83380400001)(36756003)(426003)(110136005)(186003)(2906002)(316002)(356005)(2616005)(7696005)(26005)(54906003)(5660300002)(70206006)(70586007)(4326008)(8676002)(7416002)(82310400005)(36860700001)(40480700001)(8936002)(40460700003)(86362001)(41300700001)(336012)(473944003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:53.6243 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e658049-009d-4d57-8189-08db208cb6d9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108EB.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5836 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025458_828778_84345689 X-CRM114-Status: GOOD ( 17.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add domain allocation support for IOMMU_DOMAIN_NESTED type. This includes the "finalise" part to log in the user space Stream Table Entry info. Co-developed-by: Eric Auger Signed-off-by: Eric Auger Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 38 +++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 5ff74edfbd68..1f318b5e0921 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2214,6 +2214,19 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain, return 0; } + if (domain->type == IOMMU_DOMAIN_NESTED) { + if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1) || + !(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) { + dev_dbg(smmu->dev, "does not implement two stages\n"); + return -EINVAL; + } + smmu_domain->stage = ARM_SMMU_DOMAIN_S1; + smmu_domain->s1_cfg.s1fmt = user_cfg->s1fmt; + smmu_domain->s1_cfg.s1cdmax = user_cfg->s1cdmax; + smmu_domain->s1_cfg.cdcfg.cdtab_dma = user_cfg->s1ctxptr; + return 0; + } + if (user_cfg_s2 && !(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) return -EINVAL; if (user_cfg_s2) @@ -2863,6 +2876,11 @@ static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid) arm_smmu_sva_remove_dev_pasid(domain, dev, pasid); } +static const struct iommu_domain_ops arm_smmu_nested_domain_ops = { + .attach_dev = arm_smmu_attach_dev, + .free = arm_smmu_domain_free, +}; + static struct iommu_domain * __arm_smmu_domain_alloc(unsigned type, struct arm_smmu_domain *s2, @@ -2877,11 +2895,15 @@ __arm_smmu_domain_alloc(unsigned type, return arm_smmu_sva_domain_alloc(); if (type != IOMMU_DOMAIN_UNMANAGED && + type != IOMMU_DOMAIN_NESTED && type != IOMMU_DOMAIN_DMA && type != IOMMU_DOMAIN_DMA_FQ && type != IOMMU_DOMAIN_IDENTITY) return NULL; + if (s2 && s2->stage != ARM_SMMU_DOMAIN_S2) + return NULL; + /* * Allocate the domain and initialise some of its data structures. * We can't really finalise the domain unless a master is given. @@ -2889,10 +2911,14 @@ __arm_smmu_domain_alloc(unsigned type, smmu_domain = kzalloc(sizeof(*smmu_domain), GFP_KERNEL); if (!smmu_domain) return NULL; + smmu_domain->s2 = s2; domain = &smmu_domain->domain; domain->type = type; - domain->ops = arm_smmu_ops.default_domain_ops; + if (s2) + domain->ops = &arm_smmu_nested_domain_ops; + else + domain->ops = arm_smmu_ops.default_domain_ops; mutex_init(&smmu_domain->init_mutex); INIT_LIST_HEAD(&smmu_domain->devices); @@ -2923,8 +2949,16 @@ arm_smmu_domain_alloc_user(struct device *dev, struct iommu_domain *parent, const struct iommu_hwpt_arm_smmuv3 *user_cfg = user_data; struct arm_smmu_master *master = dev_iommu_priv_get(dev); unsigned type = IOMMU_DOMAIN_UNMANAGED; + struct arm_smmu_domain *s2 = NULL; + + if (parent) { + if (parent->ops != arm_smmu_ops.default_domain_ops) + return NULL; + type = IOMMU_DOMAIN_NESTED; + s2 = to_smmu_domain(parent); + } - return __arm_smmu_domain_alloc(type, NULL, master, user_cfg); + return __arm_smmu_domain_alloc(type, s2, master, user_cfg); } static struct iommu_ops arm_smmu_ops = { From patchwork Thu Mar 9 10:53:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167228 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B10A8C61DA4 for ; Thu, 9 Mar 2023 11:01:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=A27AzBIcta9gHVs0h6ZZxcpgK8im8tMT81/ZU0KL4iI=; b=vUipbQspR00H4d xVnjqzygz9daw1o8YzSPMJG5CD0+8Hl/6hEPmsA/T/m8FB9pFR+2pJ/tUjOWNyjPJD6/RA5fm9CsJ ompdAo8gFH/w73cY0HQuDC6GEY7xXQMi1mVJemPSgjF22xa9t7DgFhmOGFW+RyOFCmK7Oei/9gtGB 0vNJNBwJt9LKYBGYX3eXDYeF4YeKbj+BINfrl5p+sHboA8sLJH0t+FaHacjhm/EZ66qLsmCv/XLAD E6qls2djh32A89RRw3tRAumXszqX/u32TfWnaOsVxV4sQIFd1zbFv9leCDbKk3dG6EZcD/uEIA9lO xfuXJo8DHhFDCR32nE4A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paE0Q-009Hcw-EY; Thu, 09 Mar 2023 11:00:19 +0000 Received: from mail-co1nam11on20623.outbound.protection.outlook.com ([2a01:111:f400:7eab::623] helo=NAM11-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvJ-009FJy-3y for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:55:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U5t4uakCxMpGR0K+0YPb5jylaVti0xnhytb4t8HVU7uEyocXesbcpVPme4nKdti7UG1EPnzKwnnxVBaHZiReC1YU8eJd8OGYsXjjUAHp0QNO1HCP1GwjSJqIlr/JhMfA7/4nMpB3HQYO4h9TwjH8/XyRgnaCprTaqVRduxhai99fRhrfk9Pi/tkMWx0kVr77QQYdU29jTD2uONvgXG2Xzzs1bwRz81y5cDfHd9Qtzp4nNm7pbthnZCgfJKnqPUfearl32pWMMpNePFMnvIYByhrX0VPohWcEAbPYJMmudQhbftF3qNQwTi6EysYBdxpcB4wqewYfN5JIWQMMfYayLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SIfOVDKmZ8OXI3O0ZYUaQ7tXZq1RKFWIxLbQkns0a+o=; b=d245wBaZcVJ+Xb/gDH/JmmFQgrG98jPrxDS2dSOLg3nT/CAMZkkE+XEmFUgqZ+UmyuWrrKvjD1KLxH6Qh4GUCsTgr8JmRaglhWVnR1tG8DdQQ8+PoMsvwNEbTBh3aOgZY7rIcVWsvf4/yocuSasQ+CRaG8HQ2TZ+e8u1+8UWdEC29qO7iw5P/Bg1ZLDEnC7a8ZoUpjkJ0ylR6UrQidElUTDFQDr3UvWFp61kC/tLqjMezp83oGXkCm91o4K+IbeCuqhCuFH5OtN4wuRDASwX6kVUBcmMjLRndnys36aQnxIyzHZWlke3BzoGvqWx/0uKU7q6toJn19fcG/cjhdywXg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SIfOVDKmZ8OXI3O0ZYUaQ7tXZq1RKFWIxLbQkns0a+o=; b=qxClTDW+11qo6475HBfp6IzH/JAeER4mQ4MdXLCPxp0lbvjDPdSJZKauZE7NAOZBLcBKkDy9c6e5A7zapIR/Db7sjnLT++WYfsib6NsJUTQPSWTdgXX0CxDhmM2JRc9WzRSZ4l3Py9R0t/vSaVk0lzoI426D8Cj/wXepdC+JJchknfEBGrUAMWeAgIRELWaNnlArku4fByziRXG47nb2fxq8OYg8eotHxFtKjnjIL4eOeLwwiKxg1+EfaYah/13g+7LpA05u8F/BBzxUVkptVS7lf4FV3b4TDuZLRyMTDqfvFpi97FbQig5TP09FT0WAbr9oN0YAMvZ5/sLJ4xjRJg== Received: from MN2PR22CA0015.namprd22.prod.outlook.com (2603:10b6:208:238::20) by DM6PR12MB4925.namprd12.prod.outlook.com (2603:10b6:5:1b7::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Thu, 9 Mar 2023 10:54:57 +0000 Received: from BL02EPF000100D1.namprd05.prod.outlook.com (2603:10b6:208:238:cafe::c2) by MN2PR22CA0015.outlook.office365.com (2603:10b6:208:238::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF000100D1.mail.protection.outlook.com (10.167.241.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Thu, 9 Mar 2023 10:54:57 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:44 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:44 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:43 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 13/14] iommu/arm-smmu-v3: Add CMDQ_OP_TLBI_NH_VAA and CMDQ_OP_TLBI_NH_ALL Date: Thu, 9 Mar 2023 02:53:49 -0800 Message-ID: <3b059f4b0bda1e83d402248114a774186f678387.1678348754.git.nicolinc@nvidia.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000100D1:EE_|DM6PR12MB4925:EE_ X-MS-Office365-Filtering-Correlation-Id: e29bf047-9f56-4d24-76e3-08db208cb8e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G60v53t1DrhomcTjc9JQINaiVEMjq537xZJbzQ3EcfLS1CEnnR0GT5f38KoE+t72ej4O7+cpEH9kn56O+Vrn3Cdt1Vptul0J/6iFoiwU0xH3dqx7HKvntgMKTOJ6kwupbGSGixUsREFzLFUl6BW+a4XSnTdwSotACUMRIfYcScTc6ReSBr0iKp/+jaVgnFJG9y57H2lm79PhHICwnBysQg+OTfu0VN7VJ93T+ZRsz6T+XRbadhEJw4nN5xJjbAMifs8ZlSp33Rz5cYbicHlKl1RDq5hCC4F7pXmfKVlVqSILwoyzfIgURRXXsYx9j/ylRpE37kpUUrzXnWtn9asQuQxYUYgGZqjFls/+K4hHPkK49575la/ispih/+85euskJwMojsyRD3/vd3H5ioTDx03yo9gX87JqVEVUR8hmD6F9HC01T6T6WsR8LJJaFVOGKaVhxZtjlSFSvPmledDSP7pPQPy4DAOT0JdINkcJOMKwfvBhfjc4U+unCM4pLo/KwepF/Isqkcr6zbg7reEXRIDtMv55D+yglYhrUzusqveUldJB4Zdn3FoHvwiWWZHVt04HQXLuZ8FEXBLS+EaCKKmZKNGpozx2bKrZxX65/7XTlwUy1Cvr0XURipHW1I1H2FvYZMg0QmJKh5HVxxCow3tw3Ch2PKD6OrJhP97LUNNECz2fu/WagOjCs2QaIuLPL9QWuddSPFjMyEIzv64vzjuM80qzzGr+IQWOdbHzpL4jyjKP+x/2Jfr3NtvzyN5Y X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(136003)(376002)(39860400002)(346002)(396003)(451199018)(40470700004)(36840700001)(46966006)(356005)(186003)(336012)(2906002)(82740400003)(26005)(2616005)(7636003)(5660300002)(36860700001)(7416002)(8936002)(41300700001)(82310400005)(110136005)(47076005)(86362001)(40460700003)(70586007)(8676002)(40480700001)(70206006)(4326008)(478600001)(426003)(316002)(7696005)(83380400001)(54906003)(36756003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:57.0410 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e29bf047-9f56-4d24-76e3-08db208cb8e0 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000100D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4925 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025501_234566_53ADD730 X-CRM114-Status: GOOD ( 11.98 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org With a nested translation setup, a stage-1 Context Descriptor table can be managed by a guest OS in the user space. So, the kernel driver should not assume that the guest OS will use a user space device driver that doesn't support TLBI_NH_VAA and TLBI_NH_ALL commands. Add them in the arm_smmu_cmdq_build_cmd(), to prepare for support of these two TLBI invalidation requests from the guest level. Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 4 ++++ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 1f318b5e0921..ac63185ae268 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -277,6 +277,9 @@ static int arm_smmu_cmdq_build_cmd(u64 *cmd, struct arm_smmu_cmdq_ent *ent) /* Cover the entire SID range */ cmd[1] |= FIELD_PREP(CMDQ_CFGI_1_RANGE, 31); break; + case CMDQ_OP_TLBI_NH_VAA: + ent->tlbi.asid = 0; + fallthrough; case CMDQ_OP_TLBI_NH_VA: cmd[0] |= FIELD_PREP(CMDQ_TLBI_0_VMID, ent->tlbi.vmid); fallthrough; @@ -301,6 +304,7 @@ static int arm_smmu_cmdq_build_cmd(u64 *cmd, struct arm_smmu_cmdq_ent *ent) case CMDQ_OP_TLBI_NH_ASID: cmd[0] |= FIELD_PREP(CMDQ_TLBI_0_ASID, ent->tlbi.asid); fallthrough; + case CMDQ_OP_TLBI_NH_ALL: case CMDQ_OP_TLBI_S12_VMALL: cmd[0] |= FIELD_PREP(CMDQ_TLBI_0_VMID, ent->tlbi.vmid); break; diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 6cf516852721..6181d6cd8b51 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -454,8 +454,10 @@ struct arm_smmu_cmdq_ent { }; } cfgi; + #define CMDQ_OP_TLBI_NH_ALL 0x10 #define CMDQ_OP_TLBI_NH_ASID 0x11 #define CMDQ_OP_TLBI_NH_VA 0x12 + #define CMDQ_OP_TLBI_NH_VAA 0x13 #define CMDQ_OP_TLBI_EL2_ALL 0x20 #define CMDQ_OP_TLBI_EL2_ASID 0x21 #define CMDQ_OP_TLBI_EL2_VA 0x22 From patchwork Thu Mar 9 10:53:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolin Chen X-Patchwork-Id: 13167229 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id C213CC64EC4 for ; Thu, 9 Mar 2023 11:02:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tNhL2OXL0cyIj1S4z3hHc526O+ixeXRxLA/iGe3T2mk=; b=txFcz2j7Za76PC dY5dQA61zNjB15kEt3r7GoX/ayEy8gJEXEU4EFWcf9tpnvCR8vdqh6o2GiG8oyf3uTEIwaX+IZ40D jsHtmnrMC+8aZakvWRuIvkLZT41l6XmE3nExRlPrIXPeyGujiY8OZboUVptWcNCteWH3gTlNQvZY8 ArsCvhWZ/s0JsTfMIqPLgxUPukOX3M6Q9UMGVcCFCNoaovN5naSnw9XAyl2/JfppidrfPueXA4uvj QW8mYVNRtfzKcqVrpAP1t0xRnC2UOBfuaP6ex0EV4FLdGvNnPMGlv+RxD6Mus1958ukgpT54QmwXA Nobn/ycNWwp0tUyIdH+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1paE1F-009Hxz-Cu; Thu, 09 Mar 2023 11:01:10 +0000 Received: from mail-bn8nam11on20601.outbound.protection.outlook.com ([2a01:111:f400:7eae::601] helo=NAM11-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1paDvL-009FKS-VN for linux-arm-kernel@lists.infradead.org; Thu, 09 Mar 2023 10:55:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c3XSa1NB+uZX5VhKQzls4q9LKhD6ZgSmJ5aALTxhcaDRX3MNeOvsqd/HmX3pHpVh34qfBLfdxrW3Z5oWM4YO7eytMN1pWfLTmu27JGHc+9yUf8SM52MINJgSAWcRWrWuuiPu4yOiRq3nuOcaM3RjY/Iz9BLb5mPF9vICN5BzPKiwZNykzcchYXLoGoLHZu4m1Ua8BiRq5tbJm5YDHZEwPJ1//v6NbVPiFxXu42jmax7lGWUDBQsO2G0XVh7HUWhB0gaz5hbIGC6KpnP5qEPmYuIE/3bOvbci/0HShvcPyAx5apJCiu5BullmdOO70Tm21rPlfC3ywbHeN3Spt1Y/sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rBztAGL4Dhn5vTJ1Bs0zPepM3SJkBS2uuAlsDyd2xI4=; b=S09oMd43mcSTG/f3Tc2bZrMf3tBIDvahXaF6YzrrG4LBm5Ms7qQj4x09vIdnB+PY1/Q2MmJf1Z7iYJsCGEKmL5cbjS+9AuoAENyzlxBrHilTcUS4f5GpfsG2+GSDYLz1FiKUNIedjsoewXKjac/BurPWZQKlN7nFp9JCo2w4mAirHWQRT4A2SBfr0+L/E+o0dMgukb41Owamojqv1nMoqYgL57v8F7IxUoHRwz+6fxJRADbw8QB6WJAeChrD1SvGmlzisnbNem7UNmebPnZzCffIDDl1948WgFpbLzBuF9bv19+QmrP/NRojWAgxa5bZC31VmCAiS+TtlCH3mv725A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rBztAGL4Dhn5vTJ1Bs0zPepM3SJkBS2uuAlsDyd2xI4=; b=td0QXMooG6zi+WawQit4BaEbkmS/5ZeJlYPqfa+g7K/rlZVte1NDR/MDvgVm75JlEgCKPpO3d97xn7EP9Lco/TZyt4VF5U53yPvLAMAlRFB2b5RTESNK0KWETicGTwsiwQso9otXwC6E19UClTNY+2h3m39CzZ4rXc2uNkUJ0V1+Qcp9V1e15CrVWYJ8iZr/1WPy0iFxHZFUdI+fjdEos8PRLDU3BA4cjbJeACVLFAHk+eCga8dC0rT4ejDgJrDSMM6zGG8z0EgH0b9A/FywBS1CbtbIAbs5hbfi+4vw+smH7doGasw2sAypo0HMpi3fIg+F6T+KL5F5KbJVvPIzzQ== Received: from BN9PR03CA0792.namprd03.prod.outlook.com (2603:10b6:408:13f::17) by CH2PR12MB4213.namprd12.prod.outlook.com (2603:10b6:610:a4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Thu, 9 Mar 2023 10:54:57 +0000 Received: from BL02EPF000108EB.namprd05.prod.outlook.com (2603:10b6:408:13f:cafe::9b) by BN9PR03CA0792.outlook.office365.com (2603:10b6:408:13f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19 via Frontend Transport; Thu, 9 Mar 2023 10:54:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL02EPF000108EB.mail.protection.outlook.com (10.167.241.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.12 via Frontend Transport; Thu, 9 Mar 2023 10:54:57 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 9 Mar 2023 02:54:45 -0800 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 9 Mar 2023 02:54:44 -0800 Received: from Asurada-Nvidia.nvidia.com (10.127.8.11) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 9 Mar 2023 02:54:44 -0800 From: Nicolin Chen To: , , CC: , , , , , , , , Subject: [PATCH v1 14/14] iommu/arm-smmu-v3: Add arm_smmu_cache_invalidate_user Date: Thu, 9 Mar 2023 02:53:50 -0800 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF000108EB:EE_|CH2PR12MB4213:EE_ X-MS-Office365-Filtering-Correlation-Id: 707da11f-994c-464f-4114-08db208cb91f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VNxCBgug5Qm10VaMVAHqAoU6X5M/+cDj7TjdChldMWsHNo/Zpta018FEGS9eXf5E/Wt2BBVIEOh/GdrkvpjE7PVXukYF2uf2fo9YTjMKRpVQ/0xleADGVlkNoh+SYy4XaqjmWCpDSTP9z4wexw5Os5+9SRiUZPgU1J8Ansvv7ow+z9IdfAw1/Rppq4hWdPEsYXKrhptwtvcGA4T03+VtumbgFP8mcq7fT0V5eIYnaMExcjXs/m2L+gvbQ4CJVL0y0a1gbuEn4l5MXwyQtQYZ/sibn61d+1wE3nvCwQi5Kqy3V991YyjVOkFgaKe3upyneWz9GkkUUs8VT+dcnPmsWHqWACA8boJfHGeI7n+kmGHlrDA7YhLPDztEEbsTpp3pjtesErJ7lxFkUQ3G6kGbmK3l3IWLN83+AGNSwRVZa9xZF6pvJgtL3qabwAZfHARtc7+Yz85B1d9yg21ih2P0TaIHPTiKcyDfCDKcV4+GkjX/0odwhk4OBVjOFT53mn/Zm0uMhj0Dz3vx+268vAOjwz6QV7cDkgFwwmr4pvPAPkMjnX8SBLFIqK78TFOE/okqlpQBt0ajX/5PFY+HNGIFuum8REUjiBEIE/OE/OndThGPjg/3BRRYLu+SvoS/ObcK/NsKa+vin8qlsUNbp2Lc+wpj5b9p+6yPkCcoLy/3yvUfNpv58neVf2E/9fb+geOssubSWzLRfFcC/UdCV85ce2ZxhjkrGfUTR0JBmksKLdnbdyVLJgnUGUpYfU/Co1AN X-Forefront-Antispam-Report: CIP:216.228.118.233;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge2.nvidia.com;CAT:NONE;SFS:(13230025)(4636009)(396003)(376002)(346002)(136003)(39860400002)(451199018)(40470700004)(46966006)(36840700001)(40460700003)(36756003)(54906003)(110136005)(478600001)(316002)(7696005)(7416002)(5660300002)(2906002)(8936002)(70206006)(8676002)(70586007)(4326008)(41300700001)(82740400003)(7636003)(36860700001)(40480700001)(356005)(86362001)(6666004)(186003)(2616005)(26005)(83380400001)(82310400005)(336012)(426003)(47076005);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2023 10:54:57.4525 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 707da11f-994c-464f-4114-08db208cb91f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.233];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF000108EB.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4213 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230309_025504_088370_0F628B91 X-CRM114-Status: GOOD ( 14.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add arm_smmu_cache_invalidate_user() function for user space to invalidate TLB entries and Context Descriptors, since either an IO page table entrie or a Context Descriptor in the user space is still cached by the hardware. The input user_data is defined in "struct iommu_hwpt_invalidate_arm_smmuv3" that contains the essential data for corresponding invalidation commands. Co-developed-by: Eric Auger Signed-off-by: Eric Auger Signed-off-by: Nicolin Chen --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 56 +++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index ac63185ae268..7d73eab5e7f4 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2880,9 +2880,65 @@ static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid) arm_smmu_sva_remove_dev_pasid(domain, dev, pasid); } +static void arm_smmu_cache_invalidate_user(struct iommu_domain *domain, + void *user_data) +{ + struct iommu_hwpt_invalidate_arm_smmuv3 *inv_info = user_data; + struct arm_smmu_cmdq_ent cmd = { .opcode = inv_info->opcode }; + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); + struct arm_smmu_device *smmu = smmu_domain->smmu; + size_t granule_size = inv_info->granule_size; + unsigned long iova = 0; + size_t size = 0; + int ssid = 0; + + if (!smmu || !smmu_domain->s2 || domain->type != IOMMU_DOMAIN_NESTED) + return; + + switch (inv_info->opcode) { + case CMDQ_OP_CFGI_CD: + case CMDQ_OP_CFGI_CD_ALL: + return arm_smmu_sync_cd(smmu_domain, inv_info->ssid, true); + case CMDQ_OP_TLBI_NH_VA: + cmd.tlbi.asid = inv_info->asid; + fallthrough; + case CMDQ_OP_TLBI_NH_VAA: + if (!granule_size || !(granule_size & smmu->pgsize_bitmap) || + granule_size & ~(1ULL << __ffs(granule_size))) + return; + + iova = inv_info->range.start; + size = inv_info->range.last - inv_info->range.start + 1; + if (!size) + return; + + cmd.tlbi.vmid = smmu_domain->s2->s2_cfg.vmid; + cmd.tlbi.leaf = inv_info->flags & IOMMU_SMMUV3_CMDQ_TLBI_VA_LEAF; + __arm_smmu_tlb_inv_range(&cmd, iova, size, granule_size, smmu_domain); + break; + case CMDQ_OP_TLBI_NH_ASID: + cmd.tlbi.asid = inv_info->asid; + fallthrough; + case CMDQ_OP_TLBI_NH_ALL: + cmd.tlbi.vmid = smmu_domain->s2->s2_cfg.vmid; + arm_smmu_cmdq_issue_cmd_with_sync(smmu, &cmd); + break; + case CMDQ_OP_ATC_INV: + ssid = inv_info->ssid; + iova = inv_info->range.start; + size = inv_info->range.last - inv_info->range.start + 1; + break; + default: + return; + } + + arm_smmu_atc_inv_domain(smmu_domain, ssid, iova, size); +} + static const struct iommu_domain_ops arm_smmu_nested_domain_ops = { .attach_dev = arm_smmu_attach_dev, .free = arm_smmu_domain_free, + .cache_invalidate_user = arm_smmu_cache_invalidate_user, }; static struct iommu_domain *