From patchwork Thu Jan 25 23:57:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 13531921 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 44D59C48286 for ; Fri, 26 Jan 2024 01:05:04 +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=wr2XwUUPiIG8MQ1WWq4HcUKDnq0nLDvP/7ip0FKzYhg=; b=cZcy9SAo9fuBBI apfUr0pZdxvBlkcXa47Rn2S47spWxzsKMOgzd3Zl7AYsgmx2orZBq9TujC1YqS7lob8kBw1fxDdB6 oeKBecouOSPizrYb7M6XSfm2ALd9Mu2byP+XcBoK3sg4c11QL1Q8hjfyNm9buW/chpVUfGlmVWd9s g4z7NfRZkfKW0jiUH3tMphxQ/7gfr/gGriA+Rp4HAMVS+a4fXFTf7pihtGi/S60SV2KWZMVNNNt7v EgGrKPFLNfuW5ltrmPFIgXqHPM6im607GZC5jnheWTHGXyMsnLt/y/M1DiHIfr9ANgJz7MmFb7wvF AVRBiLlcT/mHoljzRVIg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rTAeK-00000002hRU-1eJQ; Fri, 26 Jan 2024 01:04:52 +0000 Received: from mail-mw2nam04on20601.outbound.protection.outlook.com ([2a01:111:f403:240a::601] helo=NAM04-MW2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rT9bR-00000002XEl-1cUv for linux-arm-kernel@lists.infradead.org; Thu, 25 Jan 2024 23:57:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jGRc94xt/e8FUJGyag5J3gaJ8IJeLzUQcZ82HnoFBUodkNrfjwliZzao6sZAZdb8KJD9JuVO001+Bdq/ohO0ccVP6ip5kbSDcAbptNBWS+XLH8kCpUpjnRiY+IBv0LzmEVpl0v2llAZphODjHZVXxSTla3HNwqOgx14cHtwqMzoSoY1DCWu9K8eZDpjrrcHJJ+gTUCm9Rdc7R/rpKEkMuhLziST8Wn9ENAej2B1rzC+hOFVHWP7ixDOBU+Wm0N84GYPQ+QCALerOXtur+Y5e40RU/v9qWSeBeLN94tc71tzNq6UYK2b/9ATNPBdqUS879KcFmVC0FeA8oaSiOSKNhg== 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=t0sjiFmQcOdhTZybnjaAJAn6dKmD6B1S8xkpM0HlFxQ=; b=HTyXT9oj+Q9nA6pCySTZQAWdNz6wMjGOue6fVA+mO+c34oDGpOEI9Ux2oBzGaNQlsR7jvHweBL1DPwCTa8ogVBelWs7Zl54m5CnoxNIMLNlpAnl4wv+Twlz5Q8WvuaIyvfl21FU6CI9QU3FGwgLSeW/Z7KSrk0MDtLvQQD0qxTHxROUZFQ7y3cJq0wvMmwIdr0AmMSC9Jg1beCV2wadL/gnZtsGEuU+BqZhE7PLA2NPnM5V3XnC2eRL6kN2gu5Ll3QTZa9AdPWVDtF9uXYdiDhZJi8I7l+5r7S2I/s2l7CwkepFtCAec+479weydscuze9NQyb6REJAqVwR/L/LkGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; 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=t0sjiFmQcOdhTZybnjaAJAn6dKmD6B1S8xkpM0HlFxQ=; b=dm/nLXw8hfZ/o7pnD0Hqc9cM4+ykeGjgXeaaL4T+yNxf6iPLrD/nfd70cQ7fNj32wzwvmb1uMxyYb9P0BV/eYEHr1lp/URCQp3gZw03/RZNXwB75+9c3FB1RAMvuLE9XWsSdkt6JB7mliXJzkm28FP5S8gQ/xnI1b6y7KH8cwEZCBK/ulgkR3WPF+D5/mLQQNG8nkW5Xh6WzTmzWNZwWAVil49s+04uH4dGajf83cBmbUrl8AAGCe9LOCS3+S5GTIDZIK0FjvpkIeqlO97t/WZpVM+HqxQDsV05tk+lRKzUmaXxAdI7vSUbOeDWHahg9hhy4NWJbUO2PWWTAGzfkDw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) by SN7PR12MB7881.namprd12.prod.outlook.com (2603:10b6:806:34a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.24; Thu, 25 Jan 2024 23:57:37 +0000 Received: from LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::96dd:1160:6472:9873]) by LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::96dd:1160:6472:9873%6]) with mapi id 15.20.7228.022; Thu, 25 Jan 2024 23:57:37 +0000 From: Jason Gunthorpe To: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon Cc: Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameer Kolothum Subject: [PATCH v4 16/16] iommu/arm-smmu-v3: Convert to domain_alloc_paging() Date: Thu, 25 Jan 2024 19:57:26 -0400 Message-ID: <16-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> In-Reply-To: <0-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> References: X-ClientProxiedBy: SN7PR04CA0027.namprd04.prod.outlook.com (2603:10b6:806:f2::32) To LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV2PR12MB5869:EE_|SN7PR12MB7881:EE_ X-MS-Office365-Filtering-Correlation-Id: 1aedae19-ff85-4a0f-9337-08dc1e0164de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: J3LHKOVCHhCQInVruJVO1n6Jp6NIQce/35rI+6p95k7V0aRoyEs4JK4JCTRvzffQ2GVDE4rVVe8spvrzmB/y0fO50mG0skNCwi1j9WZIBiT65TGoDFB/xP8xaHk9wxRESKEWKy8Dp4jl3L/XBlhuRBmYq98Fgk+FhKUVyB44EHPplphq+L9GQk651a1FxyE+feWSmrUgV5pg4n6gCpUN4qqfP3CE7T1gURS6ULSeiaFgQP1IDZWts8wPfoTyVYGgxo4Zsfy+WYmKBBNRllhY8lrvY1/onTWx1k035WVVwzbP+jPQ33I/lLNJGTeid9bentcgU3K5KK8HVWHzHEJ1I8CkTBmgjCzVY0bPmMdIu+m+qTCFmFVsL3s3irO+3aBpU3LerkCStmTXYHM9DoG9HtBBEzRO28eE0KHhJgJGcPsGhOgxE8+Tzdpyf2VFn9LlVWfJG9qVegWcGugrrcANKHUxoTZtCDM+rSq4O2lKtUGWgVV5S2VgqHojjR0DORgj2mx29o715eCNoaecsdEVO5fQOOTTjXBnMChxMiQVCVljAAjTYXOoRKH+Io8WjiCX X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR12MB5869.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(136003)(396003)(346002)(39860400002)(366004)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(83380400001)(36756003)(66556008)(86362001)(54906003)(110136005)(66946007)(66476007)(26005)(38100700002)(6512007)(2906002)(2616005)(7416002)(478600001)(6666004)(41300700001)(6506007)(6486002)(5660300002)(316002)(8676002)(4326008)(8936002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aeDImkjH72kbDhBfQvPg/Tfjugjn+RsT57aZj2l3Su08IDAXYnCO1ThJA0AK6+b7zgaEY5Cevjq0mxUa5ca5Mnf/JkpO408ivzl3ge2fWT4TBQ5HwT7iPJh77uOZqCBjtHyb4mg5/jTCKaoIP1zUNzwQIJUuGe4VgD7JVJfzy8KA63jdgG4LUeeKnJ94Qyi/DFNfFia+hW5Gm92spOaPEMgGjQtvo5g8fbSBaaG8780bKR/5x/r8+8BZKTOD0t1iFC76J+EOKGDslNJXbFYiUmu+5gBDLdlbZgNTwRme7y63P0lJCztS82Kqaub9nWbBpOSiRAqUBtW6IQ/g0uPKW28GlT1hOl6RAhVyfaR/ApVG9tIgjpD2Q9VtkKBmHV/iV/2O7Y4Aco9lriEevAZxCdRQBoowI5djErZDj7ofFOCrjzMWJStHfKDu9dEg/aYST6JB3WSdUgE8WnT7vk3tCii9wxk+YRfoaMHtULduhU5mjjuvUKGRiIeeqUsORjoeckqrScNS1baoO7p4/fgjJxhgCzsS6xj1LoaPPIawpMlCk2C74dOy5JdO2zp6TkDN8QQSdpHB8Dkg6fbUVCzDdSCwwsPME/kQg0tAUlXR+vqTGfBa+9xOK3UuzJPDYhgjO5Y0yWyglMqte6MZq+mow/kU0DcgbN39+MNDG7zpyhZYdB38gHWKCTnMcpm7Xs/qWQKF1lZr/+kJYl9JU2TSQiF6qks5d0ehJlQbWeZdlxoDO1kRixpRn08XusQbkpYL8rngAP79UYjFTEK4w5kmy5/Jd9VWiH0NClFRJuwGZkCYLh8LdP/aSG18JyXIcN5qkEegPMpOVKkWRD0a16/KFJvR8n+wz+xyfkHQYqKGtALMEtKrmlPEomnH3B13EEzJ1Si6d7wRCIRuRP1jOvAK42rFTWxrvLY0wrv7sPU2aCHSVjk9FBpGvinRr+3GML9TDyvuqE67euJntr7DX/SIr0lBbLketGs4qhSG4+Ftaenj1XRPU3GyTKglife3s681ui5cXvJUt8YvBucLR5zGOy2JpQz0dXNARNUs8pv3DCg1W5CDHMGGxGYT8TnuCaVfSasRHNBuQlxH251uyIUs7nC1oRcKD33noev1hISQqgI+CLyZidme/oszemOgsb2AflbxWsl7pqPgU27lJ5bi1Dhd+2mxPWEcr67+ilIp6INICS1AhxHFpiGz3Y9djcqXxGRDrnw8gHMMODihpLCfNt37YGWIOc3usfv7gYZlSli5LFeIFS4I/Cl/ROnIHC4wM0JPvhqXxm1zyY9l/l+x3ywJAcIGhpkhVJQZTcFG0RjDVr6rrnd/CYrf8KrDjMobajc1LkB3ifY6A2433CB8GWOvsX4+vGqMa5/rfkTO12TEGoms7/3vEAzweDlmevDbjEy9DNsjByAnmKI3fZv6yIP3juQ+vNQQbFDvSlhgB4TZUOUF1fWQoTO9j2Qncgfcn4NUtCiAX/SF1Kich0pYQ9SF4GJhKSPy/6cD1MVXLtT6Rh9H4qcUBKPkoV9nHsuRq6GjyjcCaQhEBRKSQjoOJbq8DWM50iYhmk5FNhQf7gO9LgZ2d4TB0HJuk9XkL1Jt X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1aedae19-ff85-4a0f-9337-08dc1e0164de X-MS-Exchange-CrossTenant-AuthSource: LV2PR12MB5869.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2024 23:57:31.6551 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2B1j2l0BCkqDSuRKn75SFnqPvRUjabj38fZ27mZM71W4QBBsKmQLoMm3hdX9tBab X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7881 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240125_155749_554156_962444D4 X-CRM114-Status: GOOD ( 13.70 ) 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 Now that the BLOCKED and IDENTITY behaviors are managed with their own domains change to the domain_alloc_paging() op. For now SVA remains using the old interface, eventually it will get its own op that can pass in the device and mm_struct which will let us have a sane lifetime for the mmu_notifier. Call arm_smmu_domain_finalise() early if dev is available. Tested-by: Shameer Kolothum Tested-by: Nicolin Chen Tested-by: Moritz Fischer Reviewed-by: Nicolin Chen Signed-off-by: Jason Gunthorpe --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 22 ++++++++++++++++----- 1 file changed, 17 insertions(+), 5 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 f4543bf0c18a49..f890abe95e57f7 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2222,14 +2222,15 @@ static bool arm_smmu_capable(struct device *dev, enum iommu_cap cap) 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(); + return ERR_PTR(-EOPNOTSUPP); +} - if (type != IOMMU_DOMAIN_UNMANAGED && - type != IOMMU_DOMAIN_DMA) - return NULL; +static struct iommu_domain *arm_smmu_domain_alloc_paging(struct device *dev) +{ + struct arm_smmu_domain *smmu_domain; /* * Allocate the domain and initialise some of its data structures. @@ -2238,13 +2239,23 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) */ smmu_domain = kzalloc(sizeof(*smmu_domain), GFP_KERNEL); if (!smmu_domain) - return NULL; + return ERR_PTR(-ENOMEM); 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 (dev) { + struct arm_smmu_master *master = dev_iommu_priv_get(dev); + int ret; + + ret = arm_smmu_domain_finalise(smmu_domain, master->smmu); + if (ret) { + kfree(smmu_domain); + return ERR_PTR(ret); + } + } return &smmu_domain->domain; } @@ -3108,6 +3119,7 @@ static struct iommu_ops arm_smmu_ops = { .blocked_domain = &arm_smmu_blocked_domain, .capable = arm_smmu_capable, .domain_alloc = arm_smmu_domain_alloc, + .domain_alloc_paging = arm_smmu_domain_alloc_paging, .probe_device = arm_smmu_probe_device, .release_device = arm_smmu_release_device, .device_group = arm_smmu_device_group,