From nobody Sun May 5 11:37:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=nxp.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 154330168632085.045545179324; Mon, 26 Nov 2018 22:54:46 -0800 (PST) Received: from localhost ([::1]:40309 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXGe-0006RD-U0 for importer@patchew.org; Tue, 27 Nov 2018 01:54:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39320) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXEp-0004Pb-VF for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:52:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRXEo-0003fs-U8 for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:52:51 -0500 Received: from mail-ve1eur03on0615.outbound.protection.outlook.com ([2a01:111:f400:fe09::615]:65426 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRXEo-0003fl-Mo; Tue, 27 Nov 2018 01:52:50 -0500 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com (20.177.49.14) by VI1PR04MB5821.eurprd04.prod.outlook.com (20.178.204.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Tue, 27 Nov 2018 06:52:48 +0000 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a]) by VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a%2]) with mapi id 15.20.1339.032; Tue, 27 Nov 2018 06:52:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hx/MBVXxLTvKGcFZscz4wo9xxd0hA+vKrbGl8izRwuE=; b=qNuoyIsOwF4Q3ZmJeZ5bfhnb16VEY+r9t3ordjiVmjUmtJigC4xVCmkB1Y2//b7Qa2J5N5NFMY5BXgfXI93GTZU1GwEevYRGVoOo6+fvQMuM8eutCxcsJvAXl55m0rpBcxzix8k80zx4Ch7peSwsgXL1eEAEK5kFW8jkHAbrMrE= From: Bharat Bhushan To: "peter.maydell@linaro.org" , "alex.williamson@redhat.com" , "kevin.tian@intel.com" , "mst@redhat.com" , "tn@semihalf.com" , "drjones@redhat.com" , "linu.cherian@cavium.com" , "linuc.decode@gmail.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" Thread-Topic: [PATCH RFC v5 1/5] hw/vfio/common: Do not print error when viommu translates into an mmio region Thread-Index: AQHUhh3OoGAotL30PEyDi+3umU/G2Q== Date: Tue, 27 Nov 2018 06:52:47 +0000 Message-ID: <20181127064101.25887-2-Bharat.Bhushan@nxp.com> References: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> In-Reply-To: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BM1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::34) To VI1PR04MB4845.eurprd04.prod.outlook.com (2603:10a6:803:54::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=bharat.bhushan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5821; 6:t7oMlL84D+VJnPKt2EUOSBOM4hWScZwpTDKOyvNJUagATUsyAeKR224qh3CVAmuTMT/yTmhLSqHcJ69TNA4Kb7t1GIxOfe2+yIqfnjMS7ytSEslwNLz5FceVm43Q8fQHUeTIytNbHrwS0N1xXyyOncTEe7e34rNa9Ns7H4Evrbe2xAVDyxfgU3W8atAkscTl323ZYdfihWFyiopZOz3+5aFGBbh4xAIUCddfaFULVg0UsLcGjqCSzR2v28XciWEL3VBOgyIvfbnQQ03vJdWGhyeToFO5E+XaGFKVSRWvP/yDesK7DIomJR5uGzKMcbCN91M5peU2am9JDEH3RQDstTo35st/KIx0DufmvXrw9dARNPP9JTWXMr7zJ8oCFhu12NDEX+Fnrw+Wp2mbYHCT1l49t0VZoag3/d1T3lleXVxY4YHbw9adb4cMVK033Tx4qKHVCoygC3RdCWJe0wddDg==; 5:PDEvjcAsWFKopMHE8A5bnzA6A4GGwJMJ88VhPZq9USZbzL2FZebqDNbrJR0Rypszu+m2Ib8nQa1YnurPtudYmmR718reTL/b+r9HbKgbynhEzi2gLaR7DR0wGr+awMXzatppZQ2ZDZFILRLQ2VNRYb3kTrMuoIAl6tLKDRaaPbA=; 7:stHUen08Wy2IAQ3TV7N4rjNc1W9gg+hZ5lWl90saZfRSyi/zFPV2c7pUZQcZI4BaZfBn5IaLmDLqGa+83GC4ZCt7vmowbv9AsCI/uGckeHvpz5j84zeRl9xFuaUbEW9k+J1DQwF9lCGqyqg8e44V6g== x-ms-office365-filtering-correlation-id: 528dd0e4-c328-43b5-a8f2-08d65434f0c7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5821; x-ms-traffictypediagnostic: VI1PR04MB5821: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231443)(944501410)(52105112)(3002001)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5821; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5821; x-forefront-prvs: 086943A159 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(136003)(396003)(189003)(199004)(2201001)(316002)(6512007)(446003)(36756003)(3846002)(6116002)(7736002)(1076002)(8676002)(14454004)(53936002)(110136005)(2906002)(54906003)(6486002)(39060400002)(4326008)(5660300001)(305945005)(66066001)(81166006)(86362001)(6436002)(7416002)(81156014)(78486014)(256004)(71200400001)(217873002)(478600001)(71190400001)(25786009)(50226002)(68736007)(8936002)(2501003)(11346002)(486006)(186003)(99286004)(386003)(52116002)(97736004)(76176011)(6506007)(476003)(2616005)(105586002)(106356001)(55236004)(26005)(102836004)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5821; H:VI1PR04MB4845.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: dTRRt4nGatpb4ay9ix9zQl8h+VzZ//rAOmmk+0IK97BAZAUdry3KoCvRYdzorcUZwQ3vyBt72yVN+1herM2t4ccUmPTYlsgGWX4rvxmls139ltYUzZfytz1BEb5nxDlHbpioJvzAjEemEO0bYf5eetLiD5SpvJkvOJdIjuL2SHnGNxGOYPWRgQxKxeWM9mjTSTTV4ZZGV5wYABwvoEhuyt0u4SqoYwehoC85MmzxQXqNKuXM2y/DJXzlj+0Bdtz+ElLgzwWh03g1n/tm10VJM8mEwBlkliXvVkkX4Y8CaP8acaHESUxmCN5seV/MZeuU6I5A+f6mS1IGoD7AC2/DHZqwSh991APfoQJbNZGXQO8= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 528dd0e4-c328-43b5-a8f2-08d65434f0c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2018 06:52:47.8684 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5821 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe09::615 Subject: [Qemu-devel] [PATCH RFC v5 1/5] hw/vfio/common: Do not print error when viommu translates into an mmio region X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eric Auger , "bharatb.yadav@gmail.com" , Bharat Bhushan , "peterx@redhat.com" , "eric.auger.pro@gmail.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Eric Auger On ARM, the MSI doorbell is translated by the virtual IOMMU. As such address_space_translate() returns the MSI controller MMIO region and we get an "iommu map to non memory area" message. Let's remove this latter. Signed-off-by: Eric Auger Signed-off-by: Bharat Bhushan --- v5: - Added thi patch from Eric previous series (Eric somehow dropped in last version and this is needed for VFIO. hw/vfio/common.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 7c185e5a2e..fc40543121 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -328,8 +328,6 @@ static bool vfio_get_vaddr(IOMMUTLBEntry *iotlb, void *= *vaddr, &xlat, &len, writable, MEMTXATTRS_UNSPECIFIED); if (!memory_region_is_ram(mr)) { - error_report("iommu map to non memory area %"HWADDR_PRIx"", - xlat); return false; } =20 --=20 2.19.1 From nobody Sun May 5 11:37:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=nxp.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1543301698580771.727047264213; Mon, 26 Nov 2018 22:54:58 -0800 (PST) Received: from localhost ([::1]:40310 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXGr-0006aL-BQ for importer@patchew.org; Tue, 27 Nov 2018 01:54:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39363) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXEw-0004b2-Ty for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRXEt-0003gx-Op for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:52:58 -0500 Received: from mail-eopbgr50084.outbound.protection.outlook.com ([40.107.5.84]:40767 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRXEt-0003gU-FJ; Tue, 27 Nov 2018 01:52:55 -0500 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com (20.177.49.14) by VI1PR04MB5821.eurprd04.prod.outlook.com (20.178.204.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Tue, 27 Nov 2018 06:52:51 +0000 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a]) by VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a%2]) with mapi id 15.20.1339.032; Tue, 27 Nov 2018 06:52:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S9V44H/bGcAUI6S2WQjMb3TNYkWgEfFF/2EsoHboebY=; b=gje/jAXrWdsEZCuFMitbxW1vYiXW0XV+oha2p8jNRtWZqHnG+mgchwtfntOkCY7gD4ITo2AgIEFZN+I4BdVCPUuY7tPHciM+Q8uYa/94+IojwMRNDnRM+MtpGMF6g5KDLn41uFeHIFHGm5O9BZDv1KQ+Ur94IsM/dW8qOhZnVlc= From: Bharat Bhushan To: "peter.maydell@linaro.org" , "alex.williamson@redhat.com" , "kevin.tian@intel.com" , "mst@redhat.com" , "tn@semihalf.com" , "drjones@redhat.com" , "linu.cherian@cavium.com" , "linuc.decode@gmail.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" Thread-Topic: [PATCH RFC v5 2/5] virtio-iommu: Add iommu notifier for iommu-map/unmap Thread-Index: AQHUhh3QkoiHxZLGnEaVH2ClspzqDA== Date: Tue, 27 Nov 2018 06:52:50 +0000 Message-ID: <20181127064101.25887-3-Bharat.Bhushan@nxp.com> References: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> In-Reply-To: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BM1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::34) To VI1PR04MB4845.eurprd04.prod.outlook.com (2603:10a6:803:54::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=bharat.bhushan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5821; 6:mSan7mfbc3S6QMzNXjAPf7wqWB0ZjIDSfzLVbtXzaKxOL/a/V6pbaIlkD9ibx4OLk4a7cim0tpIpSTMcviuuoTtiSNBjWU9iChRHxmgESp5K+/yISDSY+1qiEt6IAtJfw0IHwsGD87Aiu134F06bpaxNrZpKy2q9kLAw6Hd3Q8SKEZ1K9YouGwXLfVgKs7VbdM0/KAAeQ2ce14vNc57rTmgl7FRAyqtxzdSPQuIgqRjaxAyqjkJ8JQqMKWsXMYplmzQOpka2Pd+U50B3m03sZXVeGG/LDUH1WOBzeM0LTTXb7/bTCeXEfV1V/p1lxU/vz9cMLhPN5BNjm3R97Xvh9oHFDo58stk9rz+94ugRD/aFuVmmTkB4wGkrs8JnNm6tMT1aY13PTh0mDu9hB/dawV2sLyqFSQqP83TN2FY3YCIiFquufVFnOe8tHQj3G4Be4UsZogZImjqa3vCvI3lBTg==; 5:717QGP+Sj+lSqgvSYfr4/ujdqHlr38DTncMB1VqaHK/Xfls9AbYg+3q9j3/060+yY6z5uAyNZwhfivS78mCMdfLXiMwKuX0z61rXlTJJ72Ru5ehVmoBcxyupgxEoveCZYu/7PXGhIESNiOkZngIVGsGi1LyCl52k1cnCuIhyNdY=; 7:sjeb5wleOxmL5J7isW21iJEgT3cD4+d59bPbsTUyUc1pnP54H4sLeQhR+qM73rVXUbcyNNxj5Ty6aIa3GGFlW4xwkAu7k018EmQcPxn+tzVaoFfLKf8IilAJbdMPE/KQMsyEQoFO9939mwN79/vm1A== x-ms-office365-filtering-correlation-id: 20d7639b-6345-4c02-df91-08d65434f2c5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5821; x-ms-traffictypediagnostic: VI1PR04MB5821: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231443)(944501410)(52105112)(3002001)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5821; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5821; x-forefront-prvs: 086943A159 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(136003)(396003)(189003)(199004)(2201001)(316002)(6512007)(446003)(36756003)(3846002)(6116002)(7736002)(1076002)(8676002)(14454004)(53936002)(110136005)(2906002)(54906003)(6486002)(39060400002)(4326008)(5660300001)(305945005)(66066001)(81166006)(86362001)(6436002)(7416002)(81156014)(78486014)(14444005)(256004)(71200400001)(217873002)(478600001)(71190400001)(25786009)(50226002)(68736007)(8936002)(2501003)(11346002)(486006)(186003)(99286004)(386003)(52116002)(97736004)(76176011)(6506007)(476003)(2616005)(105586002)(106356001)(55236004)(26005)(102836004)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5821; H:VI1PR04MB4845.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: LqyoXs72H/+HSXVf3Ekj6tP21wpb/uR0raYAS59Xr+UORRwZNFaHl0Nb7HTGI13FVJhO4ZPULiOd+gu6zGbz+pNyY16a8nDKhW14VtAT+oYzqMu5PNjk/yPNob9r9hv8vvsz0WBQmYIuhPr9ozwso70U3X7DI5+oSJWZ+EfQJu5KOUNebh7pItdIFTCW0cTB2xxWk+SOXOQbQ3a5IGZ0zzsN+OKLwx3OSQYlf60+sDUZT4DigFWfdaMlEmZrt/2uo7cQFKuSXU+y5VHILAgE/BWYHgOhFeXuvrmcPioRhgLChU1A/CPUOGeyKILh6JS112XdY7npO1nnj9JdUwOBaYZfn1Evw/8/nYqqs563kz4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20d7639b-6345-4c02-df91-08d65434f2c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2018 06:52:51.0246 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5821 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.5.84 Subject: [Qemu-devel] [PATCH RFC v5 2/5] virtio-iommu: Add iommu notifier for iommu-map/unmap X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "bharatb.yadav@gmail.com" , Bharat Bhushan , "peterx@redhat.com" , "eric.auger.pro@gmail.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This patch extends VIRTIO_IOMMU_T_MAP/UNMAP request handling to notify registered iommu-notifier. These iommu-notifier maps the requested region in IOMMU using vfio. Signed-off-by: Bharat Bhushan --- v4->v5: - Rebase to v9 version from Eric - PCIe device hotplug fix hw/virtio/trace-events | 2 + hw/virtio/virtio-iommu.c | 74 ++++++++++++++++++++++++++++++-- include/hw/virtio/virtio-iommu.h | 6 +++ 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 053a07b3fc..420b1e471b 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -72,3 +72,5 @@ virtio_iommu_translate_out(uint64_t virt_addr, uint64_t p= hys_addr, uint32_t sid) virtio_iommu_fill_resv_property(uint32_t devid, uint8_t subtype, uint64_t = start, uint64_t end, uint32_t flags, size_t filled) "dev=3D %d, subtype=3D%= d start=3D0x%"PRIx64" end=3D0x%"PRIx64" flags=3D%d filled=3D0x%lx" virtio_iommu_fill_none_property(uint32_t devid) "devid=3D%d" virtio_iommu_report_fault(uint8_t reason, uint32_t flags, uint32_t endpoin= t, uint64_t addr) "FAULT reason=3D%d flags=3D%d endpoint=3D%d address =3D0x= %"PRIx64 +virtio_iommu_notify_map(const char *name, uint64_t iova, uint64_t paddr, u= int64_t map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"= PRIx64"" +virtio_iommu_notify_unmap(const char *name, uint64_t iova, uint64_t map_si= ze) "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 2ec01f3b9e..613a77521d 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -99,6 +99,38 @@ static gint interval_cmp(gconstpointer a, gconstpointer = b, gpointer user_data) } } =20 +static void virtio_iommu_notify_map(IOMMUMemoryRegion *mr, hwaddr iova, + hwaddr paddr, hwaddr size) +{ + IOMMUTLBEntry entry; + + trace_virtio_iommu_notify_map(mr->parent_obj.name, iova, paddr, size); + + entry.target_as =3D &address_space_memory; + entry.addr_mask =3D size - 1; + entry.iova =3D iova; + entry.perm =3D IOMMU_RW; + entry.translated_addr =3D paddr; + + memory_region_notify_iommu(mr, 0, entry); +} + +static void virtio_iommu_notify_unmap(IOMMUMemoryRegion *mr, hwaddr iova, + hwaddr size) +{ + IOMMUTLBEntry entry; + + trace_virtio_iommu_notify_unmap(mr->parent_obj.name, iova, size); + + entry.target_as =3D &address_space_memory; + entry.addr_mask =3D size - 1; + entry.iova =3D iova; + entry.perm =3D IOMMU_NONE; + entry.translated_addr =3D 0; + + memory_region_notify_iommu(mr, 0, entry); +} + static void virtio_iommu_detach_endpoint_from_domain(viommu_endpoint *ep) { QLIST_REMOVE(ep, next); @@ -301,9 +333,12 @@ static int virtio_iommu_map(VirtIOIOMMU *s, uint64_t virt_start =3D le64_to_cpu(req->virt_start); uint64_t virt_end =3D le64_to_cpu(req->virt_end); uint32_t flags =3D le32_to_cpu(req->flags); + VirtioIOMMUNotifierNode *node; + viommu_endpoint *ep; viommu_domain *domain; viommu_interval *interval; viommu_mapping *mapping; + uint32_t sid; =20 interval =3D g_malloc0(sizeof(*interval)); =20 @@ -331,9 +366,40 @@ static int virtio_iommu_map(VirtIOIOMMU *s, =20 g_tree_insert(domain->mappings, interval, mapping); =20 + /* All devices in an address-space share mapping */ + QLIST_FOREACH(node, &s->notifiers_list, next) { + QLIST_FOREACH(ep, &domain->endpoint_list, next) { + sid =3D virtio_iommu_get_sid(node->iommu_dev); + if (ep->id =3D=3D sid) { + virtio_iommu_notify_map(&node->iommu_dev->iommu_mr, + virt_start, phys_start, mapping->s= ize); + } + } + } + return VIRTIO_IOMMU_S_OK; } =20 +static void virtio_iommu_remove_mapping(VirtIOIOMMU *s, viommu_domain *dom= ain, + viommu_interval *interval) +{ + VirtioIOMMUNotifierNode *node; + viommu_endpoint *ep; + uint32_t sid; + + g_tree_remove(domain->mappings, (gpointer)(interval)); + QLIST_FOREACH(node, &s->notifiers_list, next) { + QLIST_FOREACH(ep, &domain->endpoint_list, next) { + sid =3D virtio_iommu_get_sid(node->iommu_dev); + if (ep->id =3D=3D sid) { + virtio_iommu_notify_unmap(&node->iommu_dev->iommu_mr, + interval->low, + interval->high - interval->low += 1); + } + } + } +} + static int virtio_iommu_unmap(VirtIOIOMMU *s, struct virtio_iommu_req_unmap *req) { @@ -366,18 +432,18 @@ static int virtio_iommu_unmap(VirtIOIOMMU *s, current.high =3D high; =20 if (low =3D=3D interval.low && size >=3D mapping->size) { - g_tree_remove(domain->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, domain, ¤t); interval.low =3D high + 1; trace_virtio_iommu_unmap_left_interval(current.low, current.hi= gh, interval.low, interval.high); } else if (high =3D=3D interval.high && size >=3D mapping->size) { trace_virtio_iommu_unmap_right_interval(current.low, current.h= igh, interval.low, interval.high); - g_tree_remove(domain->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, domain, ¤t); interval.high =3D low - 1; } else if (low > interval.low && high < interval.high) { trace_virtio_iommu_unmap_inc_interval(current.low, current.hig= h); - g_tree_remove(domain->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, domain, ¤t); } else { break; } @@ -907,6 +973,8 @@ static void virtio_iommu_device_realize(DeviceState *de= v, Error **errp) VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIOIOMMU *s =3D VIRTIO_IOMMU(dev); =20 + QLIST_INIT(&s->notifiers_list); + virtio_init(vdev, "virtio-iommu", VIRTIO_ID_IOMMU, sizeof(struct virtio_iommu_config)); =20 diff --git a/include/hw/virtio/virtio-iommu.h b/include/hw/virtio/virtio-io= mmu.h index 56c8b4e57f..65bda6d6fe 100644 --- a/include/hw/virtio/virtio-iommu.h +++ b/include/hw/virtio/virtio-iommu.h @@ -46,6 +46,11 @@ typedef struct IOMMUPciBus { IOMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically allo= c */ } IOMMUPciBus; =20 +typedef struct VirtioIOMMUNotifierNode { + IOMMUDevice *iommu_dev; + QLIST_ENTRY(VirtioIOMMUNotifierNode) next; +} VirtioIOMMUNotifierNode; + typedef struct VirtIOIOMMU { VirtIODevice parent_obj; VirtQueue *req_vq; @@ -60,6 +65,7 @@ typedef struct VirtIOIOMMU { QemuMutex mutex; GTree *endpoints; bool msi_bypass; + QLIST_HEAD(, VirtioIOMMUNotifierNode) notifiers_list; } VirtIOIOMMU; =20 #endif --=20 2.19.1 From nobody Sun May 5 11:37:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=nxp.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1543301844435184.58118495519454; Mon, 26 Nov 2018 22:57:24 -0800 (PST) Received: from localhost ([::1]:40329 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXJ8-0000OI-EM for importer@patchew.org; Tue, 27 Nov 2018 01:57:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39369) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXEy-0004cR-Ir for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRXEv-0003hE-E9 for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:00 -0500 Received: from mail-eopbgr50076.outbound.protection.outlook.com ([40.107.5.76]:2112 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRXEv-0003h3-7Q; Tue, 27 Nov 2018 01:52:57 -0500 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com (20.177.49.14) by VI1PR04MB5821.eurprd04.prod.outlook.com (20.178.204.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Tue, 27 Nov 2018 06:52:54 +0000 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a]) by VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a%2]) with mapi id 15.20.1339.032; Tue, 27 Nov 2018 06:52:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nw2wupyVr7c9Hm433pWuxV0Wlba22Bv8H4lGVMlZxGc=; b=YJzRQmVeXHEbUh9bYprEDaRqlBSHsBM+fMNJxmdcbrNOcMyJg+0xpfhHdGoKYjNRQqj0XUrlUGTx1Qhv9vppirtFP5Tgj6D9gcxB6UpFBllYwU9F7tkdLp6YeXOTWHC3zBh5Dv1rRZ9v/WtUv07xpTNItResquA5RSn5KbdMdCc= From: Bharat Bhushan To: "peter.maydell@linaro.org" , "alex.williamson@redhat.com" , "kevin.tian@intel.com" , "mst@redhat.com" , "tn@semihalf.com" , "drjones@redhat.com" , "linu.cherian@cavium.com" , "linuc.decode@gmail.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" Thread-Topic: [PATCH RFC v5 3/5] virtio-iommu: Call iommu notifier on attach/detach Thread-Index: AQHUhh3SEy3AAQlL+UmUyGIwomsEGQ== Date: Tue, 27 Nov 2018 06:52:54 +0000 Message-ID: <20181127064101.25887-4-Bharat.Bhushan@nxp.com> References: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> In-Reply-To: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BM1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::34) To VI1PR04MB4845.eurprd04.prod.outlook.com (2603:10a6:803:54::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=bharat.bhushan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5821; 6:bou7cLq9y1nX6xPUl2bl2nHlREbWBm4/dAFeMVqaugmLXlPumyurZttnbhatd8CpHsiycBs3mJBfyF8gdeGHII3Xa8Jx/UyHB6Y55d35aK8TVGk90i75qnBgxv9m6qiDsteDGVhWnzMIlYKUNsAnkDFhbtQNDm9burrbYA1Wie3YSWlNzCyTWSWDZ+Em3t0NVKYhGGPfjv99eHHY39fSOZZ/N9ZCUrst77R/LyV9ARiiV946ZbtJp4ZKpqvbHUSXxLOXjE4gv/GL1xpMu8eZLoZlJv+rIqevi3/sqEejzLCFkoyWZ+0ud1RwVDoxATcnyAazz9j3cfwJDn+ev7k+LkEbHQFomk2knVDarilnM0eN4de1RggEY+KKXKIaRFdQaL/UZt2uvjFqJBgyjoUqm0dUGgeZNPjiUwGzcNv5QS3yz9tpCweViYqFBdNxpBD73k4mugGsls93m7mzGs3wpw==; 5:pNeBJuFRpfk34ZN4xLPu8H7JIEHGUoVsif2PhhwynZhoa/BTPXR+xRPr4z0vy+jOYKi6Vu1tJgwUdL4I42oNB0OW4HgtMrDNLv4gl+mi+rw3qzfJujL7w4fNorlHBwJmTI4sXCxpcMMQ4w91WdGl0gW2ACFWY4ZRKJqitG+hc/A=; 7:Vi4dq9j9Tkifl/+6U8G2rz0IJVl9NXxi47CICGl+C6bOjH1l8N99rLnWZwJjlcONsn6pA3c78Gfw6CkId4rYewtD9FRIHUsmogByVUBr+PH20wXdy+r6HSu5+ZbidUFkQgsPm2z+uUy3f/WEQQQPCQ== x-ms-office365-filtering-correlation-id: eae2d644-fabc-4b9c-7898-08d65434f4c6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5821; x-ms-traffictypediagnostic: VI1PR04MB5821: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231443)(944501410)(52105112)(3002001)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5821; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5821; x-forefront-prvs: 086943A159 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(136003)(396003)(189003)(199004)(2201001)(316002)(6512007)(446003)(36756003)(3846002)(6116002)(7736002)(1076002)(8676002)(14454004)(53936002)(110136005)(2906002)(54906003)(6486002)(39060400002)(4326008)(5660300001)(305945005)(66066001)(81166006)(86362001)(6436002)(7416002)(81156014)(78486014)(256004)(5024004)(71200400001)(217873002)(478600001)(71190400001)(25786009)(50226002)(68736007)(8936002)(2501003)(11346002)(486006)(186003)(99286004)(386003)(52116002)(97736004)(76176011)(6506007)(476003)(2616005)(105586002)(106356001)(55236004)(26005)(102836004)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5821; H:VI1PR04MB4845.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: /BB7rHW3EHkXFbvOe9fqkhqh8huyTxNMXrjujlGqYjei/whQ4C4+xYXI0CnTZtPJC0CoL0BDLJXtSC4fYGGBFdV4WiccS1lW2mSjKrelyKq4J35P/bJwolgEvm+/qX7/Z91DHpvYivSK4UQsCsZuGj5uWoAvMdfNYbBu8Y8CxpOVAfRl6Mp1TP7ccvUVzuL+OqfDQW4eTFIn6iIP5auwKwxxvxayNB96Tekn2DG8pSPcmHH5w0u8zynOXzn5cRthPJe3p3hRi92gl2rZLcpChwJE9bef3bZwMmk9K+XTdthDE0GIrtK8mIVXkVc0pHC2IOWoI43M+W/P1ScUQqkkR1FXPiILr4NxFr/EfLJS6aA= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: eae2d644-fabc-4b9c-7898-08d65434f4c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2018 06:52:54.4309 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5821 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.5.76 Subject: [Qemu-devel] [PATCH RFC v5 3/5] virtio-iommu: Call iommu notifier on attach/detach X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eric Auger , "bharatb.yadav@gmail.com" , Bharat Bhushan , "peterx@redhat.com" , "eric.auger.pro@gmail.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This patch extend the ATTACH/DETACH command handling to call iommu-notifier to map/unmap the memory region in IOMMU using vfio. This replay existing address space mappings on attach command and remove existing address space mappings on detach command. Signed-off-by: Bharat Bhushan Signed-off-by: Eric Auger --- v4->v5: - Rebase to v9 version from Eric - PCIe device hotplug fix hw/virtio/virtio-iommu.c | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 613a77521d..7e8149e719 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -131,8 +131,44 @@ static void virtio_iommu_notify_unmap(IOMMUMemoryRegio= n *mr, hwaddr iova, memory_region_notify_iommu(mr, 0, entry); } =20 +static gboolean virtio_iommu_mapping_unmap(gpointer key, gpointer value, + gpointer data) +{ + viommu_mapping *mapping =3D (viommu_mapping *) value; + IOMMUMemoryRegion *mr =3D (IOMMUMemoryRegion *) data; + + virtio_iommu_notify_unmap(mr, mapping->virt_addr, mapping->size); + + return false; +} + +static gboolean virtio_iommu_mapping_map(gpointer key, gpointer value, + gpointer data) +{ + viommu_mapping *mapping =3D (viommu_mapping *) value; + IOMMUMemoryRegion *mr =3D (IOMMUMemoryRegion *) data; + + virtio_iommu_notify_map(mr, mapping->virt_addr, mapping->phys_addr, + mapping->size); + + return false; +} + static void virtio_iommu_detach_endpoint_from_domain(viommu_endpoint *ep) { + VirtioIOMMUNotifierNode *node; + VirtIOIOMMU *s =3D ep->viommu; + viommu_domain *domain =3D ep->domain; + uint32_t sid; + + QLIST_FOREACH(node, &s->notifiers_list, next) { + sid =3D virtio_iommu_get_sid(node->iommu_dev); + if (ep->id =3D=3D sid) { + g_tree_foreach(domain->mappings, virtio_iommu_mapping_unmap, + &node->iommu_dev->iommu_mr); + } + } + QLIST_REMOVE(ep, next); ep->domain =3D NULL; } @@ -280,8 +316,10 @@ static int virtio_iommu_attach(VirtIOIOMMU *s, { uint32_t domain_id =3D le32_to_cpu(req->domain); uint32_t ep_id =3D le32_to_cpu(req->endpoint); + VirtioIOMMUNotifierNode *node; viommu_domain *domain; viommu_endpoint *ep; + uint32_t sid; =20 trace_virtio_iommu_attach(domain_id, ep_id); =20 @@ -300,6 +338,15 @@ static int virtio_iommu_attach(VirtIOIOMMU *s, ep->domain =3D domain; g_tree_ref(domain->mappings); =20 + /* replay existing address space mappings on the associated mr */ + QLIST_FOREACH(node, &s->notifiers_list, next) { + sid =3D virtio_iommu_get_sid(node->iommu_dev); + if (ep->id =3D=3D sid) { + g_tree_foreach(domain->mappings, virtio_iommu_mapping_map, + &node->iommu_dev->iommu_mr); + } + } + return VIRTIO_IOMMU_S_OK; } =20 --=20 2.19.1 From nobody Sun May 5 11:37:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=nxp.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1543301954437366.3528704894443; Mon, 26 Nov 2018 22:59:14 -0800 (PST) Received: from localhost ([::1]:40344 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXKz-0002w7-BD for importer@patchew.org; Tue, 27 Nov 2018 01:59:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXEz-0004dH-IV for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRXEy-0003hl-NN for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:01 -0500 Received: from mail-ve1eur03on061e.outbound.protection.outlook.com ([2a01:111:f400:fe09::61e]:3008 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRXEy-0003hT-Gi; Tue, 27 Nov 2018 01:53:00 -0500 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com (20.177.49.14) by VI1PR04MB5821.eurprd04.prod.outlook.com (20.178.204.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Tue, 27 Nov 2018 06:52:57 +0000 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a]) by VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a%2]) with mapi id 15.20.1339.032; Tue, 27 Nov 2018 06:52:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TMnlirXBK+1JZblFaHxwZti9oASZx5A3ihRyYbk5XFo=; b=LjFOWBbKRb87s2Q0qJq1Z6qmBPtEsrBfs58/wRY/CLeg+NIIcLqbZ7Lnc8j0YcKK9bTC3Tp1+PKdWxHYF7GJridIsRb2FA1uELoCEPqtrx7af5pr5Obc6LSMshwlQKRl6EBLYadU2YiVh6qXWAswhQU7ZOBJp+AeRA8q4LGq8VA= From: Bharat Bhushan To: "peter.maydell@linaro.org" , "alex.williamson@redhat.com" , "kevin.tian@intel.com" , "mst@redhat.com" , "tn@semihalf.com" , "drjones@redhat.com" , "linu.cherian@cavium.com" , "linuc.decode@gmail.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" Thread-Topic: [PATCH RFC v5 4/5] virtio-iommu: add virtio-iommu replay Thread-Index: AQHUhh3UUx6fk/xsSkScsznMQxljJg== Date: Tue, 27 Nov 2018 06:52:57 +0000 Message-ID: <20181127064101.25887-5-Bharat.Bhushan@nxp.com> References: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> In-Reply-To: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BM1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::34) To VI1PR04MB4845.eurprd04.prod.outlook.com (2603:10a6:803:54::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=bharat.bhushan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5821; 6:MT+Mb49eDirkHG33sU9DUjRCtWgiiiHdAq/4k7Ob9qO8HemWxwBmvUetOpTZQgvODeK0tEv8GLglJD8PIvo8WPPejn6yow5pIHbAnlyB2Yin+/LaSQ6ql4EL3fZyZBYZzGs1sz+b6IpgV6DU49KuN1y5ZQteax7mMS+IQmMyd++DC2JDViCl/byiMMqDEnJ7EAuwmf4ReHXVHRTaxWuAUb/5EvAEIHExB/gxxJEqbMsa4bNk7zbEGzHvITI0p1IFuuTz546kqMgC36FDLqObyACDye97Pfm7NlDTnwCDZrmX/NRAxanXFXxqRne/eeNK5Iz+iUYKeGkBdAwXIQaDgb60xQQ7yeJI4H5fnffDq76bQRe5XZyWGUO7r+72MDAgDZr1Aggc0xdq6Kf0UQvH2zNqaRp4Xuw3Xsgv1ZFEOm03S8rsJhtVHJXatY9EclViodZ/xalmEF9R5K5wd3J3hA==; 5:e5wS3HDhTx0bGFqYCIONTnxFFS5NByWpm+/xO8Xk6GGmO0rCSYgp0GXO/+xRnVyyV4G8ld3miaFp4VHdVJZwAv2r5LLZaGVuk3dhWSzF54S2ySwKXj8lMX1KeRBYU/0Y+tiZgxzVhboHL84lulTSthJvQDNQ3kq9EDxvp5MEAzk=; 7:jBQA4usDjS8XIx9ueOXGO7zd+br+HG51ZjySiC1XErShEiMe54aCb2QccYjrC+0j6OmPMmfv40YBU5wnGBgqw/77i9RA/PEs2I1S2mZYDyAbvsK3LfKFIlxyyX0U4SAV8a4n+TlGsMSvaPLl2JrFPQ== x-ms-office365-filtering-correlation-id: 0537b8c4-a897-44a3-7572-08d65434f6aa x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5821; x-ms-traffictypediagnostic: VI1PR04MB5821: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231443)(944501410)(52105112)(3002001)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5821; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5821; x-forefront-prvs: 086943A159 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(136003)(396003)(189003)(199004)(2201001)(316002)(6512007)(446003)(36756003)(3846002)(6116002)(7736002)(1076002)(8676002)(14454004)(53936002)(110136005)(2906002)(54906003)(6486002)(39060400002)(4326008)(5660300001)(305945005)(66066001)(81166006)(86362001)(6436002)(7416002)(81156014)(78486014)(14444005)(256004)(5024004)(71200400001)(217873002)(478600001)(71190400001)(25786009)(50226002)(68736007)(8936002)(2501003)(11346002)(486006)(186003)(99286004)(386003)(52116002)(97736004)(76176011)(6506007)(476003)(2616005)(105586002)(106356001)(55236004)(26005)(102836004)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5821; H:VI1PR04MB4845.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: uX5BVLPSyfrTDKG4SYaahys5aHIbYJeKUM7r3yxb2Bs2leunP+Hkp3l1GRT7vgkfDCXIZRsmRjQB5mEC5OonhutHKhseACaOWF6YP8Qsoxcgo7jpd2HftbL5xEb6UGuhPWKx0IfwI312ujuzSeXMZ2lgRGJXv2qdpvjtYGjZVIZkVpBomEH5fW2s/3cIa1hrGZWM94ZqGB/RxMPdHJtpEX34IfAN0sh8TxKIqRZzAq9y/KNBohrVonvUh2Y/CYq5P4tbuw/QwjCh+hgWabhKuz1VwC+8BZfmZsvrmY2nudUc4Bu1CrqHRsf8bn6N60ZZFmYH/Yi5MzZ3TE8CqZD7zwg2LNVGrY0IR9wHjt+Vwhc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0537b8c4-a897-44a3-7572-08d65434f6aa X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2018 06:52:57.7121 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5821 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe09::61e Subject: [Qemu-devel] [PATCH RFC v5 4/5] virtio-iommu: add virtio-iommu replay X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "bharatb.yadav@gmail.com" , Bharat Bhushan , "peterx@redhat.com" , "eric.auger.pro@gmail.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" For virtio-iommu, on replay first unmap any previous iommu-mapping and then map in iommu as per guest iommu mappings. Also if virtual iommu do have it own replay then memory_region_iommu_replay() calls "imrc->translate()", While virtio-iommu translate() expects device to be registered before it is called. So having replay of virtio-iommu helps to take no action if device not yet probed/attached. Signed-off-by: Bharat Bhushan --- v4->v5: - Rebase to v9 version from Eric (no change) hw/virtio/trace-events | 1 + hw/virtio/virtio-iommu.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 420b1e471b..f29a027258 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -74,3 +74,4 @@ virtio_iommu_fill_none_property(uint32_t devid) "devid=3D= %d" virtio_iommu_report_fault(uint8_t reason, uint32_t flags, uint32_t endpoin= t, uint64_t addr) "FAULT reason=3D%d flags=3D%d endpoint=3D%d address =3D0x= %"PRIx64 virtio_iommu_notify_map(const char *name, uint64_t iova, uint64_t paddr, u= int64_t map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"= PRIx64"" virtio_iommu_notify_unmap(const char *name, uint64_t iova, uint64_t map_si= ze) "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" +virtio_iommu_remap(uint64_t iova, uint64_t pa, uint64_t size) "iova=3D0x%"= PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64"" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 7e8149e719..c9d8b3aa4c 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -1015,6 +1015,43 @@ static gint int_cmp(gconstpointer a, gconstpointer b= , gpointer user_data) return (ua > ub) - (ua < ub); } =20 +static gboolean virtio_iommu_remap(gpointer key, gpointer value, gpointer = data) +{ + viommu_mapping *mapping =3D (viommu_mapping *) value; + IOMMUMemoryRegion *mr =3D (IOMMUMemoryRegion *) data; + + trace_virtio_iommu_remap(mapping->virt_addr, mapping->phys_addr, + mapping->size); + /* unmap previous entry and map again */ + virtio_iommu_notify_unmap(mr, mapping->virt_addr, mapping->size); + + virtio_iommu_notify_map(mr, mapping->virt_addr, mapping->phys_addr, + mapping->size); + return false; +} + +static void virtio_iommu_replay(IOMMUMemoryRegion *mr, IOMMUNotifier *n) +{ + IOMMUDevice *sdev =3D container_of(mr, IOMMUDevice, iommu_mr); + VirtIOIOMMU *s =3D sdev->viommu; + uint32_t sid; + viommu_endpoint *ep; + + sid =3D virtio_iommu_get_sid(sdev); + + qemu_mutex_lock(&s->mutex); + + ep =3D g_tree_lookup(s->endpoints, GUINT_TO_POINTER(sid)); + if (!ep || !ep->domain) { + goto unlock; + } + + g_tree_foreach(ep->domain->mappings, virtio_iommu_remap, mr); + +unlock: + qemu_mutex_unlock(&s->mutex); +} + static void virtio_iommu_device_realize(DeviceState *dev, Error **errp) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); @@ -1129,6 +1166,7 @@ static void virtio_iommu_memory_region_class_init(Obj= ectClass *klass, IOMMUMemoryRegionClass *imrc =3D IOMMU_MEMORY_REGION_CLASS(klass); =20 imrc->translate =3D virtio_iommu_translate; + imrc->replay =3D virtio_iommu_replay; } =20 static const TypeInfo virtio_iommu_info =3D { --=20 2.19.1 From nobody Sun May 5 11:37:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=nxp.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1543301955361114.60065760711632; Mon, 26 Nov 2018 22:59:15 -0800 (PST) Received: from localhost ([::1]:40345 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXL0-0002wQ-4A for importer@patchew.org; Tue, 27 Nov 2018 01:59:14 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39424) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRXF2-0004fu-If for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRXF1-0003ik-Q7 for qemu-devel@nongnu.org; Tue, 27 Nov 2018 01:53:04 -0500 Received: from mail-ve1eur03on061b.outbound.protection.outlook.com ([2a01:111:f400:fe09::61b]:50844 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRXF1-0003iY-K7; Tue, 27 Nov 2018 01:53:03 -0500 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com (20.177.49.14) by VI1PR04MB5821.eurprd04.prod.outlook.com (20.178.204.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Tue, 27 Nov 2018 06:53:00 +0000 Received: from VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a]) by VI1PR04MB4845.eurprd04.prod.outlook.com ([fe80::21f7:a45b:3d8f:d16a%2]) with mapi id 15.20.1339.032; Tue, 27 Nov 2018 06:53:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z3cIZzqpYGBJhRRAT//4KF+mQdeT7fdAsByZcmDi/O8=; b=u+MtGN60YF/oAoRhR5uVLW85NqPqa/McFWRb0NvjVYlgMfXzXNG6Gjwf4ox35W3B41+epi5OmZtztrhSg1rPmcanV8kx78Ffy2lHeoHb4qm7yn+M0rHjkCxgShjy66BaJC6L5Qt/YAOtrmKmMTRXforpY3HQgPSRmKONleUe4vw= From: Bharat Bhushan To: "peter.maydell@linaro.org" , "alex.williamson@redhat.com" , "kevin.tian@intel.com" , "mst@redhat.com" , "tn@semihalf.com" , "drjones@redhat.com" , "linu.cherian@cavium.com" , "linuc.decode@gmail.com" , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" Thread-Topic: [PATCH RFC v5 5/5] virtio-iommu: handle IOMMU Notifier flag changes Thread-Index: AQHUhh3WMjRWq9sCtUmi/j9xQecc5w== Date: Tue, 27 Nov 2018 06:53:00 +0000 Message-ID: <20181127064101.25887-6-Bharat.Bhushan@nxp.com> References: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> In-Reply-To: <20181127064101.25887-1-Bharat.Bhushan@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BM1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::34) To VI1PR04MB4845.eurprd04.prod.outlook.com (2603:10a6:803:54::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=bharat.bhushan@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5821; 6:H5AiNYvrSc/5h3bUa4hx1qMtwbGOM7p+LD+2IBAUCirpW9SlePDrgHBxo6zGPNxovHyXebehA8De/f11wtsuEPrwVwqQdn4TjHooOV9w3lzVygFIjj4ZM7xLYsl7VGkcQu+QXME3rC5LuT3OKUayKfsgGonrTNL1bZb+cOlbxOf0DAzaCshHliGOIXzv9sge8f6xElk7UV/Cvycmd4mvTrr9V784i2Sh1hyp3j1i8MVSBccmnTAxMMnBtaVcCdraibQlOJ5KEpHBGrcuZpimT7RlvNxihPnkORTZEGH0MvOyRNSbVnLcH8wmuCBrfauv2D2Y7b0RGGwJFgC1OtpOmEEr7vjcrIhBw0fPAZk6Q6CcYN6hnvTM1jr7ZYqdcgmIJK0rLGEYCvJo66M/ksKKvr4z4aL6c6SwN8rXLN+z2FSOrvSqHyV5/85JA4r5YGpMHXFai5H3ApsP0ZbGqNpFTw==; 5:V3E1e1nK4zqizKK+XTDU2b0ZrryLLWImDPGxmUPbmosHiYi3368hBBphWkOkst8wcpLkKwDl6Hpc0WjNG9ze62Zwha07CnJksCC8Izq5ILDWPs9swIVixPzuVGlKMjtTuQt464oXSjfE9YgYhqMsntXxzHwMLKN3z7n8cezu8ns=; 7:1ggNNTiL+FEF6aDcN+em8QCOJqui+08oCShkgOTonTY5dV/Oyt3ZXPe58RME73eY3EaBVp2uNP7aM1x+Dxp4imOWD8Y20tmJ9LDwQrO/Zr34pkZSSHL/VgD0hkCO78kY5zRrXgtXViPVzy29MvVJ9g== x-ms-office365-filtering-correlation-id: b58a29c0-25c3-4009-22aa-08d65434f89f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5821; x-ms-traffictypediagnostic: VI1PR04MB5821: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231443)(944501410)(52105112)(3002001)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5821; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5821; x-forefront-prvs: 086943A159 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39860400002)(136003)(396003)(189003)(199004)(2201001)(316002)(6512007)(446003)(36756003)(3846002)(6116002)(7736002)(1076002)(8676002)(14454004)(53936002)(110136005)(2906002)(54906003)(6486002)(39060400002)(4326008)(5660300001)(305945005)(66066001)(81166006)(86362001)(6436002)(575784001)(7416002)(81156014)(78486014)(14444005)(256004)(71200400001)(217873002)(478600001)(71190400001)(25786009)(50226002)(68736007)(8936002)(2501003)(11346002)(486006)(186003)(99286004)(386003)(52116002)(97736004)(76176011)(6506007)(476003)(2616005)(105586002)(106356001)(55236004)(26005)(102836004)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5821; H:VI1PR04MB4845.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: J4A1G07SOkAHjz8A48Zt62YPFlCft/k5alUGvPykGHPU/MFqftFWB6f+Ivr0As0b/kdZmpE/mLZJxm0Uwal6VTVVNwVcgYr08MRvpsfyJps+f7PxWHtY9Pe/PDfDPITE+Fm/VQsq00apW/1ShGBlxXp094zk4Pnt3SB32eE3rNeEdtNeDyoDpL2rJEPlqXNdx+y2bVXTKLz2ODiVRZtwiDEwrGkGrhf0zZHnhCsDaUAPSMDJa6tK2HnTKcxWJXOdrjKJPgrYXSVVGF6IqoeQLNtHL41qrfc18RCxcIl6wI51jhZatqz3P4kdswqzNegb+xi+1s1BOcidjS7vk/5zs7+IvDTWoWEr/yJH0nmczko= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b58a29c0-25c3-4009-22aa-08d65434f89f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2018 06:53:00.8371 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5821 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe09::61b Subject: [Qemu-devel] [PATCH RFC v5 5/5] virtio-iommu: handle IOMMU Notifier flag changes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "bharatb.yadav@gmail.com" , Bharat Bhushan , "peterx@redhat.com" , "eric.auger.pro@gmail.com" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Finally handle the IOMMU Notifier flag changes for the iommu-memory region. Signed-off-by: Bharat Bhushan --- v4->v5: - Rebase to v9 version from Eric (no change) hw/virtio/trace-events | 2 ++ hw/virtio/virtio-iommu.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index f29a027258..8c1d77b0c2 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -75,3 +75,5 @@ virtio_iommu_report_fault(uint8_t reason, uint32_t flags,= uint32_t endpoint, uin virtio_iommu_notify_map(const char *name, uint64_t iova, uint64_t paddr, u= int64_t map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"= PRIx64"" virtio_iommu_notify_unmap(const char *name, uint64_t iova, uint64_t map_si= ze) "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" virtio_iommu_remap(uint64_t iova, uint64_t pa, uint64_t size) "iova=3D0x%"= PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64"" +virtio_iommu_notify_flag_add(const char *iommu) "Add virtio-iommu notifier= node for memory region %s" +virtio_iommu_notify_flag_del(const char *iommu) "Del virtio-iommu notifier= node for memory region %s" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index c9d8b3aa4c..adc37ddf1b 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -1052,6 +1052,36 @@ unlock: qemu_mutex_unlock(&s->mutex); } =20 +static void virtio_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu_mr, + IOMMUNotifierFlag old, + IOMMUNotifierFlag new) +{ + IOMMUDevice *sdev =3D container_of(iommu_mr, IOMMUDevice, iommu_mr); + VirtIOIOMMU *s =3D sdev->viommu; + VirtioIOMMUNotifierNode *node =3D NULL; + VirtioIOMMUNotifierNode *next_node =3D NULL; + + if (old =3D=3D IOMMU_NOTIFIER_NONE) { + trace_virtio_iommu_notify_flag_add(iommu_mr->parent_obj.name); + node =3D g_malloc0(sizeof(*node)); + node->iommu_dev =3D sdev; + QLIST_INSERT_HEAD(&s->notifiers_list, node, next); + return; + } + + /* update notifier node with new flags */ + QLIST_FOREACH_SAFE(node, &s->notifiers_list, next, next_node) { + if (node->iommu_dev =3D=3D sdev) { + if (new =3D=3D IOMMU_NOTIFIER_NONE) { + trace_virtio_iommu_notify_flag_del(iommu_mr->parent_obj.na= me); + QLIST_REMOVE(node, next); + g_free(node); + } + return; + } + } +} + static void virtio_iommu_device_realize(DeviceState *dev, Error **errp) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); @@ -1167,6 +1197,7 @@ static void virtio_iommu_memory_region_class_init(Obj= ectClass *klass, =20 imrc->translate =3D virtio_iommu_translate; imrc->replay =3D virtio_iommu_replay; + imrc->notify_flag_changed =3D virtio_iommu_notify_flag_changed; } =20 static const TypeInfo virtio_iommu_info =3D { --=20 2.19.1