Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5361784pxv; Wed, 28 Jul 2021 09:01:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyn7kUVC8MHRJEbSIqNEMEElXvNbPCEO6WfbHNsxDdPVkbHCpauTmGUsLHlaEmQp3uYblCT X-Received: by 2002:a17:906:2acc:: with SMTP id m12mr165260eje.231.1627488068826; Wed, 28 Jul 2021 09:01:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627488068; cv=none; d=google.com; s=arc-20160816; b=p38nRthul/D7qBmDNLCoyyFDmVxNuNlTo/7wINITS/itw3ijt5n6hMUcf9mxX6MzBn 42tavfYVIy75Jp0hUuE4ZMYTCO51mYul/zF+eQKRBEmSSRODad31FQ7gYEymSoeKD4fd qzemfEOeUqFiXjZ9i/9CNZnVYupTl6OkX/80If3V4IrLMAXJnIqOPL4aYQm1BRbiWrhq +3EPinL8tboLSuAHF+qMCXQHhEhhwBLlnF2exicyQklZjXeb2hH7kE6vsOPgYdDqixG0 PuMTeIEArW++3212Rrqf5x4Nb/e7hCx+XwFEC5cOZ4FiEdzWjg4J+w8tSSBaA1txip5j 40Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=ptEk/+/eGlQm2BLjx1J4zkc52a4S9LttoKWF9ZC2XAo=; b=tX2LO7fN4TwIJdzWENMWhep/QRJjDJWoggY6Id4F8BI42VEY1K9x1zR+KuKl6DYhn4 x/IA5F87LnrIcU+sNlGsD8J/MeKJ14cWp4PN3u5YMamNLymrDyqAKj+eTb9nrmzSeXna IVnZwDT+TBM7ESWbqe6HGjPZeZBrQYErAnTzBSN4CelYGrj2Lbd8jWfnYhvFLB4pG1/P e7rC8l+xbTsatbCf5rWF9iUbNupsB4QgcbLAHIz9hbi0L8jiohy3M6bvtapXL0tj4O/D YCkEu1wHkjtrbt4tSokZo4hTGjf2gUMACxnZG5VbcsSKN785B+qAPZFaMozn44Z2ShzM Vs2A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e6si156360ejk.740.2021.07.28.09.00.43; Wed, 28 Jul 2021 09:01:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237300AbhG1P7S (ORCPT + 99 others); Wed, 28 Jul 2021 11:59:18 -0400 Received: from foss.arm.com ([217.140.110.172]:59212 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237222AbhG1P7L (ORCPT ); Wed, 28 Jul 2021 11:59:11 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CE7E1113E; Wed, 28 Jul 2021 08:59:09 -0700 (PDT) Received: from 010265703453.arm.com (unknown [10.57.36.146]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5BD513F70D; Wed, 28 Jul 2021 08:59:08 -0700 (PDT) From: Robin Murphy To: joro@8bytes.org, will@kernel.org Cc: iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, suravee.suthikulpanit@amd.com, baolu.lu@linux.intel.com, john.garry@huawei.com, dianders@chromium.org Subject: [PATCH v2 03/24] iommu/arm-smmu: Drop IOVA cookie management Date: Wed, 28 Jul 2021 16:58:24 +0100 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The core code bakes its own cookies now. Signed-off-by: Robin Murphy --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 7 ------- drivers/iommu/arm/arm-smmu/arm-smmu.c | 15 ++++----------- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 8 -------- 3 files changed, 4 insertions(+), 26 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 6346f21726f4..4c648da447bf 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -1984,12 +1984,6 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) if (!smmu_domain) return NULL; - if (type == IOMMU_DOMAIN_DMA && - iommu_get_dma_cookie(&smmu_domain->domain)) { - kfree(smmu_domain); - return NULL; - } - mutex_init(&smmu_domain->init_mutex); INIT_LIST_HEAD(&smmu_domain->devices); spin_lock_init(&smmu_domain->devices_lock); @@ -2021,7 +2015,6 @@ static void arm_smmu_domain_free(struct iommu_domain *domain) struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_device *smmu = smmu_domain->smmu; - iommu_put_dma_cookie(domain); free_io_pgtable_ops(smmu_domain->pgtbl_ops); /* Free the CD and ASID, if we allocated them */ diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c index ac21170fa208..970d9e4dcd69 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c @@ -868,10 +868,10 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) { struct arm_smmu_domain *smmu_domain; - if (type != IOMMU_DOMAIN_UNMANAGED && - type != IOMMU_DOMAIN_DMA && - type != IOMMU_DOMAIN_IDENTITY) - return NULL; + if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_IDENTITY) { + if (using_legacy_binding || type != IOMMU_DOMAIN_DMA) + return NULL; + } /* * Allocate the domain and initialise some of its data structures. * We can't really do anything meaningful until we've added a @@ -881,12 +881,6 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) if (!smmu_domain) return NULL; - if (type == IOMMU_DOMAIN_DMA && (using_legacy_binding || - iommu_get_dma_cookie(&smmu_domain->domain))) { - kfree(smmu_domain); - return NULL; - } - mutex_init(&smmu_domain->init_mutex); spin_lock_init(&smmu_domain->cb_lock); @@ -901,7 +895,6 @@ static void arm_smmu_domain_free(struct iommu_domain *domain) * Free the domain resources. We assume that all devices have * already been detached. */ - iommu_put_dma_cookie(domain); arm_smmu_destroy_domain_context(domain); kfree(smmu_domain); } diff --git a/drivers/iommu/arm/arm-smmu/qcom_iommu.c b/drivers/iommu/arm/arm-smmu/qcom_iommu.c index 021cf8f65ffc..4b7eca5f5148 100644 --- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c +++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c @@ -335,12 +335,6 @@ static struct iommu_domain *qcom_iommu_domain_alloc(unsigned type) if (!qcom_domain) return NULL; - if (type == IOMMU_DOMAIN_DMA && - iommu_get_dma_cookie(&qcom_domain->domain)) { - kfree(qcom_domain); - return NULL; - } - mutex_init(&qcom_domain->init_mutex); spin_lock_init(&qcom_domain->pgtbl_lock); @@ -351,8 +345,6 @@ static void qcom_iommu_domain_free(struct iommu_domain *domain) { struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain); - iommu_put_dma_cookie(domain); - if (qcom_domain->iommu) { /* * NOTE: unmap can be called after client device is powered -- 2.25.1