Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp630692ybz; Wed, 29 Apr 2020 06:41:39 -0700 (PDT) X-Google-Smtp-Source: APiQypJ996s+9dwNQJhGckwK/XJ/Z061Q7aUIkFpRN+QPMs0qh/OCALHiRAivq3on3CCUYYDC/jC X-Received: by 2002:a17:906:304d:: with SMTP id d13mr2446562ejd.159.1588167699070; Wed, 29 Apr 2020 06:41:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588167699; cv=none; d=google.com; s=arc-20160816; b=B2RUVNmu7Mc9GjRtzf6ogtjA4/fglGEidVgRoVe/sEPRjd8svcSlKlYEZUI4gDJmCY nIJI/YfJNOd/ysx94MLAmwHFahR/uakXCO+Lg4frGM/BhtwuslOfxDiW8JBgDdvjRvob PuHtamTH7iUcsQjMGd6tyuVeoQloAUMC8vsK1JtM5OrZ/gv5xzZSmFsIrUrCNXerbw+9 1Sr/aP1lFcZFxgtfNoM8toh82pF6TbbyhNYnto/dSEdjBK/4WUlzgPwmXP9fftlfqAYP NReO5jtsfRwA6jEJjVA39+GEJ03W1TRyhvxadkeWCSg6Mn4o/b9wDoxFGuKTgetHWacY uWpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=4dW9BHyiT5HNqxLTKNG72Q3qgju7z9qE3XPCIhLWooU=; b=INYs3DMVJh9wqSUVrrtvBCOi4V65X3pacUAiM6LGEv5rfgltDVPJzFVQx+IOeacm0h 6pqTUxtlxs+YXvY+/DgNgnLjXLhRthO6rL8yVnNf1P2IOOMjz0XFPfmR5yJjek0CKjoZ iOAUOXeMwOTLdiF2/LReABqsyKAW48vhDBYECJjnaVNsYWLUG2MDw06JTQb34X7xxNq3 v/SOJiOR+e515H3D4nrGOKuHBjShqSeXvYZ5Nh5/KWu19eq/KtOlit4IbdWTeqxrotGc r/mtPUPAEndHJ90IxGzlfo/3TRNW5Xt02y8lfHwlWQnkp2idcYGcyIj8w6LYECV37DwD Ob/Q== 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=8bytes.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r24si3311124edm.269.2020.04.29.06.41.15; Wed, 29 Apr 2020 06:41:39 -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=8bytes.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728239AbgD2Nil (ORCPT + 99 others); Wed, 29 Apr 2020 09:38:41 -0400 Received: from 8bytes.org ([81.169.241.247]:40068 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727967AbgD2Nhy (ORCPT ); Wed, 29 Apr 2020 09:37:54 -0400 Received: by theia.8bytes.org (Postfix, from userid 1000) id 19246F0C; Wed, 29 Apr 2020 15:37:41 +0200 (CEST) From: Joerg Roedel To: Joerg Roedel , Will Deacon , Robin Murphy , Marek Szyprowski , Kukjin Kim , Krzysztof Kozlowski , David Woodhouse , Lu Baolu , Andy Gross , Bjorn Andersson , Matthias Brugger , Rob Clark , Heiko Stuebner , Gerald Schaefer , Thierry Reding , Jonathan Hunter , Jean-Philippe Brucker Cc: Daniel Drake , jonathan.derrick@intel.com, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org, linux-tegra@vger.kernel.org, virtualization@lists.linux-foundation.org, Joerg Roedel Subject: [PATCH v3 30/34] iommu/exynos: Use first SYSMMU in controllers list for IOMMU core Date: Wed, 29 Apr 2020 15:37:08 +0200 Message-Id: <20200429133712.31431-31-joro@8bytes.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200429133712.31431-1-joro@8bytes.org> References: <20200429133712.31431-1-joro@8bytes.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel On Exynos platforms there can be more than one SYSMMU (IOMMU) for one DMA master device. Since the IOMMU core code expects only one hardware IOMMU, use the first SYSMMU in the list. Tested-by: Marek Szyprowski Acked-by: Marek Szyprowski Signed-off-by: Joerg Roedel --- drivers/iommu/exynos-iommu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 186ff5cc975c..09cdd163560a 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -1261,6 +1261,11 @@ static int exynos_iommu_add_device(struct device *dev) } iommu_group_put(group); + /* There is always at least one entry, see exynos_iommu_of_xlate() */ + data = list_first_entry(&owner->controllers, + struct sysmmu_drvdata, owner_node); + iommu_device_link(&data->iommu, dev); + return 0; } @@ -1286,6 +1291,11 @@ static void exynos_iommu_remove_device(struct device *dev) list_for_each_entry(data, &owner->controllers, owner_node) device_link_del(data->link); + + /* There is always at least one entry, see exynos_iommu_of_xlate() */ + data = list_first_entry(&owner->controllers, + struct sysmmu_drvdata, owner_node); + iommu_device_unlink(&data->iommu, dev); } static int exynos_iommu_of_xlate(struct device *dev, -- 2.17.1