From nobody Tue Sep 16 02:19:43 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A25D0C54EBC for ; Mon, 9 Jan 2023 01:58:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234209AbjAIB6X (ORCPT ); Sun, 8 Jan 2023 20:58:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233961AbjAIB6F (ORCPT ); Sun, 8 Jan 2023 20:58:05 -0500 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3AB62101DD for ; Sun, 8 Jan 2023 17:58:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673229484; x=1704765484; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nBq2eOVotOHuuNbaX+AJBZNl0TFASfXTuzkriWWUcT4=; b=OZAxV0RgsEE3PyfJOVwOolCjD8lee4F9jRvEJ4E/VcHJly74mZhbr8vi WUh20d8415JsoO+3wwPYWCOkbqqubJ4VphYL+BDelKcSpiVra08DDWQfY /h6+tTwrGk3Ousw5iumSwlHF+yH4OgRY7j77AgLPP/rIwtMUlUmOukSwG GYOayvaH8Pw/ub1nWpsMTzErqJxWCSf636e7KkHe8B6JorfpHLeyrqDeX 2ZZQ71YFeqHVDH3lcuaM2oJ/5128OJc7q718PUnVYN8KHPnhKM4yhfayM Y3z2kYyTCVuJ92l6jVZNPQNSFk6pXgkPylmaYSvL9x6w3GJMv7+pdfYNJ g==; X-IronPort-AV: E=McAfee;i="6500,9779,10584"; a="322848746" X-IronPort-AV: E=Sophos;i="5.96,311,1665471600"; d="scan'208";a="322848746" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2023 17:57:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10584"; a="649867438" X-IronPort-AV: E=Sophos;i="5.96,311,1665471600"; d="scan'208";a="649867438" Received: from allen-box.sh.intel.com ([10.239.159.48]) by orsmga007.jf.intel.com with ESMTP; 08 Jan 2023 17:57:55 -0800 From: Lu Baolu To: iommu@lists.linux.dev Cc: Joerg Roedel , Will Deacon , Robin Murphy , Kevin Tian , linux-kernel@vger.kernel.org, Lu Baolu Subject: [PATCH 4/4] iommu/vt-d: Remove sva from intel_svm_dev Date: Mon, 9 Jan 2023 09:49:55 +0800 Message-Id: <20230109014955.147068-5-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230109014955.147068-1-baolu.lu@linux.intel.com> References: <20230109014955.147068-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" After commit be51b1d6bbff ("iommu/sva: Refactoring iommu_sva_bind/unbind_device()"), the iommu driver doesn't need to return an iommu_sva pointer anymore. This removes the sva field from intel_svm_dev and cleanups the code accordingly. Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.h | 1 - drivers/iommu/intel/svm.c | 23 +++++++++-------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index 2a1619ff0d79..f0222ad38757 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -761,7 +761,6 @@ struct intel_svm_dev { struct rcu_head rcu; struct device *dev; struct intel_iommu *iommu; - struct iommu_sva sva; u16 did; u16 sid, qdep; }; diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index c7dc53e40c26..e7b9bedebcc0 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -298,9 +298,8 @@ static int pasid_to_svm_sdev(struct device *dev, unsign= ed int pasid, return 0; } =20 -static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu, - struct device *dev, - struct mm_struct *mm) +static int intel_svm_bind_mm(struct intel_iommu *iommu, struct device *dev, + struct mm_struct *mm) { struct device_domain_info *info =3D dev_iommu_priv_get(dev); struct intel_svm_dev *sdev; @@ -312,7 +311,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel= _iommu *iommu, if (!svm) { svm =3D kzalloc(sizeof(*svm), GFP_KERNEL); if (!svm) - return ERR_PTR(-ENOMEM); + return -ENOMEM; =20 svm->pasid =3D mm->pasid; svm->mm =3D mm; @@ -322,14 +321,14 @@ static struct iommu_sva *intel_svm_bind_mm(struct int= el_iommu *iommu, ret =3D mmu_notifier_register(&svm->notifier, mm); if (ret) { kfree(svm); - return ERR_PTR(ret); + return ret; } =20 ret =3D pasid_private_add(svm->pasid, svm); if (ret) { mmu_notifier_unregister(&svm->notifier, mm); kfree(svm); - return ERR_PTR(ret); + return ret; } } =20 @@ -343,7 +342,6 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel= _iommu *iommu, sdev->iommu =3D iommu; sdev->did =3D FLPT_DEFAULT_DID; sdev->sid =3D PCI_DEVID(info->bus, info->devfn); - sdev->sva.dev =3D dev; init_rcu_head(&sdev->rcu); if (info->ats_enabled) { sdev->qdep =3D info->ats_qdep; @@ -360,7 +358,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel= _iommu *iommu, =20 list_add_rcu(&sdev->list, &svm->devs); =20 - return &sdev->sva; + return 0; =20 free_sdev: kfree(sdev); @@ -371,7 +369,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel= _iommu *iommu, kfree(svm); } =20 - return ERR_PTR(ret); + return ret; } =20 /* Caller must hold pasid_mutex */ @@ -843,13 +841,10 @@ static int intel_svm_set_dev_pasid(struct iommu_domai= n *domain, struct device_domain_info *info =3D dev_iommu_priv_get(dev); struct intel_iommu *iommu =3D info->iommu; struct mm_struct *mm =3D domain->mm; - struct iommu_sva *sva; - int ret =3D 0; + int ret; =20 mutex_lock(&pasid_mutex); - sva =3D intel_svm_bind_mm(iommu, dev, mm); - if (IS_ERR(sva)) - ret =3D PTR_ERR(sva); + ret =3D intel_svm_bind_mm(iommu, dev, mm); mutex_unlock(&pasid_mutex); =20 return ret; --=20 2.34.1