From nobody Sun Apr 28 13:05:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1613556354; cv=none; d=zohomail.com; s=zohoarc; b=KKDlQXOPFPf2wgXLqXoQnyILNyB5GU19WIGAiCPB4n6YkKiqnlVA2oqS93/pjEOqlXTg2RE0eKQHuAi9VwX19DLXQH1ffkW9V05FpS4CY9PETiyLahMxPYiSzsOH380h+M0Cc4VRBaL3dwqvkqzcqB96uw3gNzud9tycrkkjk74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613556354; h=Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:Message-ID:Sender:Subject:To; bh=puhd2UgxsNriza827Ry9x6MjkdnIW5tgX31Lcip8eW8=; b=YBtC6mRsS5JJTO0+mu4bcr+Fenu26avYgyQMvKXGLXmNvfg4hFmPtyv2Qn2ATdS1h/7YIweBlHEZPOjli0kpXkZT6vmdaAivEdvSpVn1oo0JvgQs9wB+be8QEMKKtFa4WY4Wp/bio0bV1sLTInXlsGz7uKaEtA9Me1AvXT0nfRc= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1613556353734534.7011218297196; Wed, 17 Feb 2021 02:05:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.86197.161581 (Exim 4.92) (envelope-from ) id 1lCJiC-0004si-QR; Wed, 17 Feb 2021 10:05:36 +0000 Received: by outflank-mailman (output) from mailman id 86197.161581; Wed, 17 Feb 2021 10:05:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lCJiC-0004sb-NW; Wed, 17 Feb 2021 10:05:36 +0000 Received: by outflank-mailman (input) for mailman id 86197; Wed, 17 Feb 2021 10:05:34 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lCJiA-0004sW-OZ for xen-devel@lists.xenproject.org; Wed, 17 Feb 2021 10:05:34 +0000 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 8e77610b-4e3b-4f2d-9232-281804662c2e; Wed, 17 Feb 2021 10:05:32 +0000 (UTC) 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 2394B1042; Wed, 17 Feb 2021 02:05:32 -0800 (PST) Received: from scm-wfh-server-rahsin01.stack04.eu02.mi.arm.com (unknown [10.58.246.76]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 57A783F73B; Wed, 17 Feb 2021 02:05:31 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 8e77610b-4e3b-4f2d-9232-281804662c2e From: Rahul Singh To: xen-devel@lists.xenproject.org Cc: Bertrand Marquis , Stefano Stabellini , Julien Grall , Volodymyr Babchuk Subject: [PATCH] xen/arm : smmuv3: Fix to handle multiple StreamIds per device. Date: Wed, 17 Feb 2021 10:05:14 +0000 Message-Id: <43de5b58df37d8b8de037cb23c47ab8454caf37c.1613492577.git.rahul.singh@arm.com> X-Mailer: git-send-email 2.17.1 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" SMMUv3 driver does not handle multiple StreamId if the master device supports more than one StreamID. This bug was introduced when the driver was ported from Linux to XEN. dt_device_set_protected(..) should be called from add_device(..) not from the dt_xlate(..). Move dt_device_set_protected(..) from dt_xlate(..) to add_device(). Signed-off-by: Rahul Singh Reviewed-by: Bertrand Marquis Reviewed-by: Stefano Stabellini --- This patch is a candidate for 4.15 as without this patch it is not possible= to assign multiple StreamIds to the same device when device is protected behind SMMUv3. --- xen/drivers/passthrough/arm/smmu-v3.c | 29 ++++++++++----------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 914cdc1cf4..53d150cdb6 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -2207,24 +2207,6 @@ static int arm_smmu_add_device(u8 devfn, struct devi= ce *dev) */ arm_smmu_enable_pasid(master); =20 - return 0; - -err_free_master: - xfree(master); - dev_iommu_priv_set(dev, NULL); - return ret; -} - -static int arm_smmu_dt_xlate(struct device *dev, - const struct dt_phandle_args *args) -{ - int ret; - struct iommu_fwspec *fwspec =3D dev_iommu_fwspec_get(dev); - - ret =3D iommu_fwspec_add_ids(dev, args->args, 1); - if (ret) - return ret; - if (dt_device_is_protected(dev_to_dt(dev))) { dev_err(dev, "Already added to SMMUv3\n"); return -EEXIST; @@ -2237,6 +2219,17 @@ static int arm_smmu_dt_xlate(struct device *dev, dev_name(fwspec->iommu_dev), fwspec->num_ids); =20 return 0; + +err_free_master: + xfree(master); + dev_iommu_priv_set(dev, NULL); + return ret; +} + +static int arm_smmu_dt_xlate(struct device *dev, + const struct dt_phandle_args *args) +{ + return iommu_fwspec_add_ids(dev, args->args, 1); } =20 /* Probing and initialisation functions */ --=20 2.17.1