From nobody Wed May 15 18:12:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506494328062217.7361336702421; Tue, 26 Sep 2017 23:38:48 -0700 (PDT) Received: from localhost ([::1]:52419 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5zV-0002iE-5T for importer@patchew.org; Wed, 27 Sep 2017 02:38:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35501) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5xO-00017A-40 for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dx5xJ-00089l-99 for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:30 -0400 Received: from mail-cys01nam02on0081.outbound.protection.outlook.com ([104.47.37.81]:16177 helo=NAM02-CY1-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 1dx5xD-000870-3Y; Wed, 27 Sep 2017 02:36:19 -0400 Received: from BN6PR03CA0013.namprd03.prod.outlook.com (10.168.230.151) by CY1PR03MB2364.namprd03.prod.outlook.com (10.166.207.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 27 Sep 2017 06:36:17 +0000 Received: from BN1BFFO11FD027.protection.gbl (2a01:111:f400:7c10::1:124) by BN6PR03CA0013.outlook.office365.com (2603:10b6:404:23::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.9 via Frontend Transport; Wed, 27 Sep 2017 06:36:16 +0000 Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD027.mail.protection.outlook.com (10.58.144.90) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:16 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8R6a2N9027330; Tue, 26 Sep 2017 23:36:09 -0700 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; 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: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Wed, 27 Sep 2017 12:03:16 +0530 Message-ID: <1506494000-31982-2-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131509677765095109; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(376002)(39380400002)(39860400002)(346002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(6666003)(2950100002)(110136005)(5003940100001)(8676002)(316002)(36756003)(189998001)(16586007)(97736004)(50226002)(54906003)(104016004)(5660300001)(7416002)(47776003)(105606002)(39060400002)(4326008)(76176999)(50986999)(8936002)(106466001)(53936002)(8656003)(50466002)(72206003)(86362001)(2906002)(81166006)(498600001)(48376002)(2201001)(356003)(77096006)(85426001)(81156014)(305945005)(68736007)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2364; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD027; 1:a5MEUXVA4E7UMkc8oPJYjwxCiSYcdYgzrZ3wSmEnKW1eGFX9rsyyDKS5LnXaxJSsDbzLPoved6QGOyDZQMTvf5Gz7Y+k7JhQJ5h4vfsJSE4WTh7GXobckjYsSIJUqJ3f MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8b2e6cf3-b9b3-40fe-e31d-08d505720e1a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:CY1PR03MB2364; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 3:r7KuGDxmCmqrkPRTqHC8sBvrmSOw3FPyS6g81S89fmf8ipXkjWwN6dX8GIK55HJ5hPKOvd4p978UOlntmqrYtLgBmJoqEPRwvRdVN60MDHkB1tJzN83N1tet3hI09mq4aIqxejBolHM29tXnkoIL9y0K+ESdvdNnf5opG+CKNwkOtrY4KK924wS8VFqaz0Jne/Z9YH91RNs6rhziTG25kue5PwkoTc1R9YRO0Y9XeZ7KSQX/tPbMOlhLXftS9ExuVgFKoLQKRjH2pK0lOWoNID1a9xq+DJWHVQlf2wtF+DdII08GYfmG0qRBeFzwMB8xzBeImqN0C1NoHC93JxNp2bWyH//wHYFiYgYdEvXr+IQ=; 25:rNqHgQ+3IhO+ocSS4d/Uplou05b55wwoXGZMg2JGhghnvvrBkIcfYCFmImREB6Cbu2CGqRGeH1UoiyS/mCi+P5p1zGbk7zcgkrIYWEcfAkGzAmky74nK4DKWyHUECNftpdOMHjkRrlVzjjbolEXF4gc5cII/GI5UnigvnhEhXEIOOFibHJRuLhckGXiEOi2AlvIMq3VgN3kUqbvi8j0OEAcktmEZl1gsvCaMXjEOM5iQBoINWdVt8QCpUEzUP9+tcj1UDByqzXPRAKzpznN3kfcgilpVV1hCgsmoFNpmLymAgMilAE47d5FMr15BQ4TW8BLaXnNz76jGPME4obc5UQ== X-MS-TrafficTypeDiagnostic: CY1PR03MB2364: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 31:7D24fxEVKyOPEdEFhNgnmMPtM5EI3i134WNZrPYYNR0rJq50x+k0zcQ48eEwujlBRkZCf82me/VUIV5XcuFLp/FiZ3B3V05Ilk48YCqjpVivki8HNKMx0/Bq+HaRVwqg9KmQdQmSZFmwrLUJuvkceI4J17LGoTAdGlopPGSYkNdSTDRHzpZBBxiA7wu7k220MEeGSwS1663hrmNZb2VBsyDvINw69Usn2ZX1mbODtg0=; 4:QJiXyf6B0zbMTAzIp6b39J4g070+gZbuaUwbO26oPImw53MHtotaHxQAE/KxzcvTriSPCK99gPWlH7mq18IYS++oUU5dPctg15OELhOoP1VstCK0+ADtvi1orZVy355qknYUnbKWShPgCeKKJQj9gFYzgHZP7lSjIaA6NM+LLDTQTeIQEhRmPxrqFPTcV/XwjS5Ghi9sBKVY9fFyhaUEzwsDjr0w1hj7bQ1L+FaVbkd0Z2gkh/AhezsTodzz4Y0bcAONkSoOL+ntKnkPPemBFUUpDpWDMYZsg9xOLz0b/TM= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123559100)(20161123563025)(20161123556025)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123565025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR03MB2364; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR03MB2364; X-Forefront-PRVS: 04433051BF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2364; 23:PBPxLY/H6AOmreYAJtRW4VmrSHJT4M0SBVF6bLZYh?= =?us-ascii?Q?yliyMKi4/K1VK75E660KKBDXuubu64RUhi7sNRa+2hnwJl2D+GDmdEi3PREv?= =?us-ascii?Q?x3icHu/79XzurLz2iH6DhAu6MEvtDWkFcv1Dk3wwHONI8DaxJYVaNB+5v+wt?= =?us-ascii?Q?85yUdROAh3/vR6hk4x1mwOnhJA7lmtbg6xFRCikRehmo5xX49MtdS0AgeKL6?= =?us-ascii?Q?MJEXWvBslMXvjfcbyDolYvXfiZBKu9s8guiIbsUZS2jtFttda0PBvwByAUy/?= =?us-ascii?Q?iQG0yr6FqEN+t0qQ2LItyNomM7ALXE6OxOHvkwSJSfZpiSm1Ik8IfO5Z/ZEK?= =?us-ascii?Q?szvq8LGkV7uRn8N+1pGfQ6t599QuuCR/KV/aBylYAHe/kjbdz2Ndcm1xPbTS?= =?us-ascii?Q?CT8nmmasyUXvd+jSt9OAvl86EFyI+Kw/rcMOW+BCGzlOyqoGWKLcbmDqnfbl?= =?us-ascii?Q?5mk/zzzQUXCLw8DL/h7xk3ok4qEinmeM6vCkgDJdS+1INM/3dRTBaQLfKft0?= =?us-ascii?Q?0PoW3vOeGgbmB2GhfKa2iPwf1fBoFFTDkwTUIB8EX4fMJiVzl7jTzBIUcxCN?= =?us-ascii?Q?60Z9uSCZAGLFAK9i9IZOpegKRGf2R9SzjY6sEFtHZuxIcKVyNURNWvom2O94?= =?us-ascii?Q?B9bP2QVuB64hIiUf5UyKFAbxkZ5eIxvk0FfLTEpo1puuG3I64WYQo1zYwAvh?= =?us-ascii?Q?b94bDPkgXzOQN3OjFu4Uf9g6Qcl6I57BnvjWbp+k3dMnDmBUlYT+BzLdNooj?= =?us-ascii?Q?c+r+4qDSGjjHin53scxlIqV/pHOFDPp1nr1pkxmqTRgmdILsfDvDor0ShHWv?= =?us-ascii?Q?oaL0olZeVTUmtwQ7aNbbC3U0c1LRlrHBAJpmKpemfsttVTWSfpbbW8ErNcTA?= =?us-ascii?Q?7C51o1MzjjxyRz4o0AkiEYHMoW81r1a1bLhSTF/Ia0b2U1hx4dVPRKoINQDi?= =?us-ascii?Q?tEvQuSMHrhcgkngcdBt4zRTuvtD2RMciWTnwTl9yN02f/HIB9JJfitin//8A?= =?us-ascii?Q?Kk9R/yqo79wlEHuFL9Oyx2X0WHaODfD5B6gU8/pY8KIqWVdXPqZdXcgqPdeP?= =?us-ascii?Q?OkSK6j8Rhg61dWGOxFxtRzd0ei3C/ljngMwy+FSMgH/u5RZT2B3h2JwbIWph?= =?us-ascii?Q?q9CXrtKgOFWI/pXBvYUbWr54aYFnSNP/yEyWE7aKEzdh6W0aw6CFn/jaYzLe?= =?us-ascii?Q?VbTLHXyihR+A6sq9JjnRc2gPa4DWyD332RjMxtfo4AH96VXrnAFenFZlA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 6:Yx99reyICkmyL9uBbW0YP+tF6FXlY8ZnTcI63Jez2GNcslXfP3nZr9mIQ3vh1I6CnQjWRtzumYKHvn8Q+ICXO0ZZFXEQQ/urQpvqLSz0/Cs6+LOieiEAewxYsG9NBlkEdP60qkMZEvQkP9HNgwNIWpzuljBgTQJWZ7gWANgKkx9wRLDtexJdZt+KGu7fd2xCwuWWpXWRi4W5RR06w1D34i3uxLR17AQhL0lEBdNPu95XpgNwxAFWnXOCwzofwsLqenfM7hWovrfmw/wHMNggp3o7FKEw81MjpdS9+OLWtSYZNWCV1eNWyjfyfpChofURYYLuEWDqCBUAzbgE+5MVaA==; 5:jgTjH7Dg4eKV/7e1DKDyrH9jmL3c/0lWHZaooO3IvbxdJLDFbtvEwtkFA7Rcwp2/4Ufv3OmL8e4D7aq/atdvEU6fOGqkDW2ak3FH3N+KRDNAFodlU4Vcim/M/tGt89PzGL/fyS8WiqdO8QFlwMGipw==; 24:rFlAhsaNZ+FrvFFz5VE/+V+jNcVUmgCLby2MhyCiTVTA0j5LUOlU+upA5RpNN6sNpCRFCVmZMbT2CtfzYZRtLRx5LpfiDuwZ3A2739UlOJQ=; 7:i7RPw+8f2jsihGbNWz6WuAqFvhpS0ipCzq/TRkMTXwW3YYajI1HJV60lAxwoHdgqVe0uyS32H9VUyJvi1ZOQBjW1QQqw+N1uKqdgfJwxuaeOEYnqU5qw0g7YylZY7qUQZXUCD5wAnPe3p+8CDZBOsBZS6v+PEtPYXEj73WWMYGg91JbK64IdSTtNDNia3580B+mNfnswsIbXz6mGkvlN+16dq1WlIPizTO7DpN82mGY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 06:36:16.0882 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2364 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.81 Subject: [Qemu-devel] [PATCH v4 1/5] target/arm/kvm: Translate the MSI doorbell in kvm_arch_fixup_msi_route 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org, bharatb.yadav@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Translate msi address if device is behind virtio-iommu. This logic is similar to vSMMUv3/Intel iommu emulation. This RFC patch does not handle the case where both vsmmuv3 and virtio-iommu are available. Signed-off-by: Eric Auger Signed-off-by: Bharat Bhushan --- v3->v4 - No changes target/arm/kvm.c | 27 +++++++++++++++++++++++++++ target/arm/trace-events | 3 +++ 2 files changed, 30 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 211a7bf..895a630 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -21,7 +21,11 @@ #include "kvm_arm.h" #include "cpu.h" #include "internals.h" +#include "trace.h" #include "hw/arm/arm.h" +#include "hw/pci/pci.h" +#include "hw/pci/msi.h" +#include "hw/virtio/virtio-iommu.h" #include "exec/memattrs.h" #include "exec/address-spaces.h" #include "hw/boards.h" @@ -666,6 +670,29 @@ int kvm_arm_vgic_probe(void) int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, uint64_t address, uint32_t data, PCIDevice *d= ev) { + AddressSpace *as =3D pci_device_iommu_address_space(dev); + IOMMUTLBEntry entry; + IOMMUDevice *sdev; + IOMMUMemoryRegionClass *imrc; + + if (as =3D=3D &address_space_memory) { + return 0; + } + + /* MSI doorbell address is translated by an IOMMU */ + sdev =3D container_of(as, IOMMUDevice, as); + + imrc =3D memory_region_get_iommu_class_nocheck(&sdev->iommu_mr); + + entry =3D imrc->translate(&sdev->iommu_mr, address, IOMMU_WO); + + route->u.msi.address_lo =3D entry.translated_addr; + route->u.msi.address_hi =3D entry.translated_addr >> 32; + + trace_kvm_arm_fixup_msi_route(address, sdev->devfn, + sdev->iommu_mr.parent_obj.name, + entry.translated_addr); + return 0; } =20 diff --git a/target/arm/trace-events b/target/arm/trace-events index 9e37131..8b3c220 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -8,3 +8,6 @@ arm_gt_tval_write(int timer, uint64_t value) "gt_tval_write= : timer %d value 0x%" arm_gt_ctl_write(int timer, uint64_t value) "gt_ctl_write: timer %d value = 0x%" PRIx64 arm_gt_imask_toggle(int timer, int irqstate) "gt_ctl_write: timer %d IMASK= toggle, new irqstate %d" arm_gt_cntvoff_write(uint64_t value) "gt_cntvoff_write: value 0x%" PRIx64 + +# target/arm/kvm.c +kvm_arm_fixup_msi_route(uint64_t iova, uint32_t devid, const char *name, u= int64_t gpa) "MSI addr =3D 0x%"PRIx64" is translated for devfn=3D%d through= %s into 0x%"PRIx64 --=20 1.9.3 From nobody Wed May 15 18:12:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506494328408433.50659205079296; Tue, 26 Sep 2017 23:38:48 -0700 (PDT) Received: from localhost ([::1]:52418 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5zI-0002ZU-C2 for importer@patchew.org; Wed, 27 Sep 2017 02:38:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35553) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5xS-00019p-31 for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dx5xQ-0008E2-NV for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:34 -0400 Received: from mail-by2nam03on0052.outbound.protection.outlook.com ([104.47.42.52]:27506 helo=NAM03-BY2-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 1dx5xJ-00089f-UU; Wed, 27 Sep 2017 02:36:26 -0400 Received: from BLUPR0301CA0010.namprd03.prod.outlook.com (2a01:111:e400:5259::20) by DM2PR0301MB0736.namprd03.prod.outlook.com (2a01:111:e400:3c0d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 27 Sep 2017 06:36:23 +0000 Received: from BY2FFO11FD004.protection.gbl (2a01:111:f400:7c0c::117) by BLUPR0301CA0010.outlook.office365.com (2a01:111:e400:5259::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.9 via Frontend Transport; Wed, 27 Sep 2017 06:36:22 +0000 Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD004.mail.protection.outlook.com (10.1.14.158) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:22 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8R6a2NA027330; Tue, 26 Sep 2017 23:36:16 -0700 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; 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: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Wed, 27 Sep 2017 12:03:17 +0530 Message-ID: <1506494000-31982-3-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131509677823754597; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7966004)(336005)(39380400002)(39860400002)(376002)(346002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(498600001)(16586007)(104016004)(72206003)(5660300001)(48376002)(77096006)(50226002)(50466002)(53936002)(2950100002)(54906003)(8656003)(356003)(106466001)(105606002)(5003940100001)(316002)(7416002)(85426001)(189998001)(39060400002)(8936002)(97736004)(86362001)(76176999)(2201001)(47776003)(50986999)(68736007)(110136005)(36756003)(4326008)(81156014)(2906002)(8676002)(81166006)(305945005)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0736; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD004; 1:WVZKUWgoqMpR77v7Rn1qJ2zF0lx1VCVsITVPVXvmcRYuiQ2MF+8D7kwzSlsWNIv4Y+aVHZKV0nkmxdjuqDWhSEwrZ/axiFrrMcm3XwtVRj8+RVDwmBNuMLGKb/21Vb/Z MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 914b48e5-625d-4e4f-0165-08d5057211ad X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:DM2PR0301MB0736; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0736; 3:p+ha9Sdx38o1VbK8EbveudQIdf4Cl9pNeoBtTP6DGWdV8BFcoEEVYyqyElBvRj3FnyHsk3frnxYOXtxdUCOfNxaM5EpObWET3qckkeCdIZkVqqWVQDMesVxDLRBxNU4/3UnMbJWj1aFZNkxzLw+FTlqZ5eZGhOS9q8xB6mFq5m0SDsXM9lmjHapyWyL3EyFUDZgcLmck1YnJMpiOqhjUWDu8PffcukUTLCBD7ED8O5mfZuKydhMr5x4FaqMjz/Ey2oPje5rPBQrv59cv/v+M2hvQKetywy5Gh53enj0ZTU5fhRxxVTJYBi4xKJcsgpM/D6PBtGmfSW3kmkhI7BCgQh5DB5D34ZZ3OEC8VOJgiYM=; 25:3D01FBlqCFwprwE/ab2tYjicXnhepdvCpiRhAEu/vKSWZ3B/w9zVSLDwpMGY5Ljo4wX/QxHLsFK59GNi7OUgrBbAGv7o5vL1QB4YkgYUZ5/J8XJ26MZIknxJUe7pafI33+ygPZ2CPk0pTj3vzp/CkgZr4Ldl4hds/XGzJAWsxWFdLMKKdhCXz9PiG+VRDuX4uS8zoAll2CjUn+5yGatbTQtHDdXfzUn34+6vfqknCU3p5/0ff/9C9yiYFqgPtWNLYjThnRzRX8GTWyODlqygO8Q1Wh/WJewoo4YSBcLliCVSh/xo0KR++94R00hWiICMMET0dEuWEC0JP9rpyC7wog== X-MS-TrafficTypeDiagnostic: DM2PR0301MB0736: X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0736; 31:nIBIf9T2fW667WmS47NxyQDix59mH0pn2MxTq2Sl8+ywPsf7mo2Llwv/quy7BHX92TUAGO3H9Ta4IRWxySzDPy4rYL28nIPgA4gjDlThcja52DoxWX9mrpYRVvCQ69drpt3r7LinjWpHmq6zCoS3OWOCQib6GQVa3mfSG+5cubRcNfW6lFEC/gRit6pdQf4Pur2/IB1RyCf5XNeYAwhk4kRLptlxDDEjXPcVpIcJcog=; 4:WqMZglp3k3Ld80UNlHLditg90cJxQKPI9OwIXQ+j4hmKex46lD8IfgmVIhXLOjW8d0LH8U+tgtkdZksIS43knfrDoSRF2l7ABxJV8zwx7d6kashUGzET24YpmiZeuyUitUJV2Dxpx2TB64dYBm5kl0r36VXIzl9gUmuHJuoQg7sByn84PYUnNqvF0GlVFqeS/RME4aV51NGImwFvxM6BcQJW4Po4Z8tghN5UiPShHnApi5qbL5BR/6iygO+4QiF2KOGnI78WoUpYHyw54P4TJDadQj42H6TOvXlkcYiKAtc= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6096035)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123561025)(20161123559100)(20161123563025)(20161123556025)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR0301MB0736; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR0301MB0736; X-Forefront-PRVS: 04433051BF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0736; 23:2CJBWefJsLsELnHG+MYyQfPZI5X7+Gx+2C0hip1?= =?us-ascii?Q?BpLJRl5CJck9Un4J0YqwJbWW2KmPHlrl016iEqGLquWjhQbzKq48m7sV0MbH?= =?us-ascii?Q?UMTUx/33nyD+Ra369hibtflj4w1gfFbxrQsj1l6reAHD+R8YHaznXhnN8Mhu?= =?us-ascii?Q?2JLnc8y0J66z+4YR4q10a6W1WPlpcZpLohdXaxa8BTqhon7wC+2GFijTRyye?= =?us-ascii?Q?wA+uNoj/rra2W+0pNcK8p8NqwFZKMeZUaC0ogZ9i6LkLs35BRKuyTNfVF/8i?= =?us-ascii?Q?qDSv+ljEkf8LfdUvHxNi8Hx6wlss1rwLb1Ahkbm/mKNp8YKXLjQamY4JNWof?= =?us-ascii?Q?jJsu57AunX0qMcZClJe1bcGNLVqedk2lAOoWJLOgdtLFcYGGJOq+cikB4Ky7?= =?us-ascii?Q?43edYt4CT3cYyqC/9RtjPmqROvLn5GmcqEJIRBe6y3Y9l9pvVLGwNzaL8hiH?= =?us-ascii?Q?t2rqZMSJomMCXhqdLImRdZB8w+GzsYXjIhEPbvwCQfv3EHuKys2B9U0Eso+h?= =?us-ascii?Q?SAecr/G3e2SBokEL707WLmjRFKDZBjo2sbornJcP+AjZysnYh6t4vcrpAg0s?= =?us-ascii?Q?CEKTpzdKJZasuMqkkjg4/mkqydXt+4rx1PCKvF+QYnJXux9xmFE9z3MWW6qA?= =?us-ascii?Q?TCrsUHQknAH4BuA5mBEDAY/TWcw7DrCRQW8RRYeMPfqBBzZSAOIIlsNC015p?= =?us-ascii?Q?rVmBnCEo2Wnh5M8aUXqVYB3mfin0q3rm6x9lBlAtDEw7f03cGBCBkIrTjjZk?= =?us-ascii?Q?1WeiCTaIEf7hiL+IGCxfPMPd/zSkocLqJ9ZEMPWdMppmoooZ2sP7SuYaOnAj?= =?us-ascii?Q?iCPcy/NzTOwMifWvcBfaCQzq+juStowITzdxUb06VX7S/xN604MCKWgbOZ75?= =?us-ascii?Q?++Bh5qQRQ/II9cQV4mP4/ILSTkHoyf45ZLEk9+nAjC/UZVeVCAs8izDgr1B2?= =?us-ascii?Q?+gEPxz75IF8c71wGPrqGOYl3/xfV6+jMEvs4Vwae5X0JgzfrhuKuEtVZ8gcP?= =?us-ascii?Q?ENg2ONxdWS7dlwi9YETUOHk/xvLL9j9HLkGJEH1+N8c0aDwgZ1ynK/E1TLxW?= =?us-ascii?Q?/M2+e91Hf/vgWd/kG7OOUSloIgm9ZMM5DcO7wNViNexyo+4zkSdSJMZKLjVF?= =?us-ascii?Q?Uk+Tp8uZBJ0+67BSokjGFXIy7G6f47WXMiBhcyl/aellAkvOm6T5iO7F4LfX?= =?us-ascii?Q?P4Ws1BHqdckSdXaD2hMp9BDC5FS46YJ423E0YCglwza1E4xgM4WKmZ5FMqw?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0736; 6:hdwib44Xj1wuHZjFuf4sH8WA0zgTsteiapdmkYI5uxNXe/wun9RErDxphRij4Zav/CbweoT7akWgcJbLY7fb6NzmY5tQszZeGLEa5JHQz79fZtpvAO388OyCHPS0PWxD20w8ICpfOGEhTqQImHVJ5k+s6zJsklpZetTBB5mGeQzQs0Xa2kPK5Xoq+RwAxoqgpchnHswPdjXLnvaV5eTwiYR7LNOiCbYYq6THVCSwaYcdlt+GMAFwfqmWheIyg90rNrYretU+amXKY1K3oaQoiaH3qcAabcc/IrH3hzcVIwgAlueNvI61JrN3a2hi1LAtmgAnDcoHAZq2FXG5KFvLYw==; 5:NMBnK8nHJuHCuzqP8UAok9Yv5xHmPHDQgCcrfIYTQbFXLr22cKLiivSR58gwvPncT2ndXjNoTHYMN6hkGLWGmOfo2j7tZbAarkQoji16n9MYRsiizjOnlYSJkgkBNJNBNfpF9s8XIetUYypUVgUdbg==; 24:Fcxc2MqfoUhWfCA1ybM5/pwsmNQla/crerGp43VN7xiUqS+2+Ss0sd9gXttSjJGmSi9JKu6uDHK0SL1AJrEOCErnwiovOChXtwlmY5bDJyM=; 7:VTab3RP/60XB9gIvcKHwIR2CD0Q4TxhdL30V92tGA8J3LiRnCzIUnC4C0uvxAhwtsJjHsFHP9sSKuhiG61jHds9zQVM/9fWC8mW75e72tLUHnzvZVFEyBZsBdGFNjQRL6lXlzi96UGyIQfdw8UVj2I9IbdftPanvpemk+FuzRjv/a3ZDgvXCdyEQMd+E76hVJE8RZzig5TiL11+kmeHxrNlHcGNMbYIXxXOvnHnUTNE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 06:36:22.0790 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0736 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.52 Subject: [Qemu-devel] [PATCH v4 2/5] virtio-iommu: Add iommu notifier for 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org, bharatb.yadav@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch extends VIRTIO_IOMMU_T_MAP/UNMAP request to notify registered iommu-notifier. This is needed for VFIO support, Signed-off-by: Bharat Bhushan Signed-off-by: Eric Auger --- v3->v4: Follwoig fixes by Eric - Calling virtio_iommu_notify_map() for all device in AS - virtio_iommu_notify_unmap() moved to a function, This is needed as per changes in base framework (v4) hw/virtio/trace-events | 2 ++ hw/virtio/virtio-iommu.c | 69 ++++++++++++++++++++++++++++++++++++= ++-- include/hw/virtio/virtio-iommu.h | 6 ++++ 3 files changed, 74 insertions(+), 3 deletions(-) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 2793604..251b595 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -49,3 +49,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 = addr, uint64_t size, uint32_t flags, size_t filled) "dev=3D %d, subtype=3D%= d addr=3D0x%"PRIx64" size=3D0x%"PRIx64" flags=3D%d filled=3D0x%lx" virtio_iommu_fill_none_property(uint32_t devid) "devid=3D%d" virtio_iommu_set_page_size_mask(const char *iommu_mr, uint64_t mask) "mr= =3D%s page_size_mask=3D0x%"PRIx64 +virtio_iommu_notify_map(const char *name, hwaddr iova, hwaddr paddr, hwadd= r map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64= "" +virtio_iommu_notify_unmap(const char *name, hwaddr iova, hwaddr map_size) = "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 1873b9a..085e972 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -95,6 +95,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; + + entry.target_as =3D &address_space_memory; + entry.addr_mask =3D size - 1; + + entry.iova =3D iova; + trace_virtio_iommu_notify_map(mr->parent_obj.name, iova, paddr, size); + entry.perm =3D IOMMU_RW; + entry.translated_addr =3D paddr; + + memory_region_notify_iommu(mr, entry); +} + +static void virtio_iommu_notify_unmap(IOMMUMemoryRegion *mr, hwaddr iova, + hwaddr size) +{ + IOMMUTLBEntry entry; + + entry.target_as =3D &address_space_memory; + entry.addr_mask =3D size - 1; + + entry.iova =3D iova; + trace_virtio_iommu_notify_unmap(mr->parent_obj.name, iova, size); + entry.perm =3D IOMMU_NONE; + entry.translated_addr =3D 0; + + memory_region_notify_iommu(mr, entry); +} + static void virtio_iommu_detach_dev_from_as(viommu_dev *dev) { QLIST_REMOVE(dev, next); @@ -291,6 +323,8 @@ static int virtio_iommu_map(VirtIOIOMMU *s, viommu_as *as; viommu_interval *interval; viommu_mapping *mapping; + VirtioIOMMUNotifierNode *node; + viommu_dev *dev; =20 interval =3D g_malloc0(sizeof(*interval)); =20 @@ -318,9 +352,37 @@ static int virtio_iommu_map(VirtIOIOMMU *s, =20 g_tree_insert(as->mappings, interval, mapping); =20 + /* All devices in an address-space share mapping */ + QLIST_FOREACH(node, &s->notifiers_list, next) { + QLIST_FOREACH(dev, &as->device_list, next) { + if (dev->id =3D=3D node->iommu_dev->devfn) { + virtio_iommu_notify_map(&node->iommu_dev->iommu_mr, + virt_addr, phys_addr, size); + } + } + } + return VIRTIO_IOMMU_S_OK; } =20 +static void virtio_iommu_remove_mapping(VirtIOIOMMU *s, viommu_as *as, + viommu_interval *interval) +{ + VirtioIOMMUNotifierNode *node; + viommu_dev *dev; + + g_tree_remove(as->mappings, (gpointer)(interval)); + QLIST_FOREACH(node, &s->notifiers_list, next) { + QLIST_FOREACH(dev, &as->device_list, next) { + if (dev->id =3D=3D node->iommu_dev->devfn) { + 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) { @@ -352,18 +414,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(as->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, as, ¤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(as->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, as, ¤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(as->mappings, (gpointer)(¤t)); + virtio_iommu_remove_mapping(s, as, ¤t); } else { break; } @@ -806,6 +868,7 @@ 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 f9c988f..7e04184 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 *vq; @@ -56,6 +61,7 @@ typedef struct VirtIOIOMMU { GTree *address_spaces; QemuMutex mutex; GTree *devices; + QLIST_HEAD(, VirtioIOMMUNotifierNode) notifiers_list; } VirtIOIOMMU; =20 #endif --=20 1.9.3 From nobody Wed May 15 18:12:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506494327509199.54675177576735; Tue, 26 Sep 2017 23:38:47 -0700 (PDT) Received: from localhost ([::1]:52420 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5zZ-0002mK-LT for importer@patchew.org; Wed, 27 Sep 2017 02:38:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35699) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5xf-0001Mc-DP for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dx5xa-0008Kl-Ok for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:47 -0400 Received: from mail-co1nam03on0085.outbound.protection.outlook.com ([104.47.40.85]:6976 helo=NAM03-CO1-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 1dx5xP-0008Ca-3J; Wed, 27 Sep 2017 02:36:31 -0400 Received: from CY1PR03CA0032.namprd03.prod.outlook.com (10.174.128.42) by DM5SPR00MB235.namprd03.prod.outlook.com (10.173.215.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 27 Sep 2017 06:36:28 +0000 Received: from BY2FFO11FD007.protection.gbl (2a01:111:f400:7c0c::153) by CY1PR03CA0032.outlook.office365.com (2603:10b6:600::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.35.12 via Frontend Transport; Wed, 27 Sep 2017 06:36:28 +0000 Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD007.mail.protection.outlook.com (10.1.14.128) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:27 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8R6a2NB027330; Tue, 26 Sep 2017 23:36:22 -0700 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: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Wed, 27 Sep 2017 12:03:18 +0530 Message-ID: <1506494000-31982-4-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131509677880055720; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(346002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(39060400002)(2201001)(356003)(305945005)(104016004)(2906002)(81156014)(105606002)(8676002)(106466001)(68736007)(77096006)(53936002)(86362001)(81166006)(8936002)(2950100002)(50226002)(6666003)(189998001)(5003940100001)(50986999)(76176999)(16586007)(36756003)(97736004)(5890100001)(50466002)(48376002)(72206003)(498600001)(7416002)(4326008)(5660300001)(47776003)(54906003)(110136005)(8656003)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5SPR00MB235; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD007; 1:3T+o325eX1e7lfq9VKHtAFlg5++qDqwEObeTWe4XT/rYjTqrHOJk06feIEJxJFEqUeQ2xS2bVVMZ0LpqZEcQ5Q4/IiUTtbwZCAcr+W+Ho1uM2x4YHMR9ftQ1QtFk32b4 MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d8726c41-f005-4548-b646-08d505721505 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:DM5SPR00MB235; X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB235; 3:a/FfWwWuYGWJ9Ir7QgMobZPDkVLuPUFk0erP8rhIu1swhTgHDQ9bdf1PDL6+/VnVwrMCizZykWjbQ6OFX4N/rSdpeF1xZF6q3gMtmiyl4APRN8A5ZDc6+1AecENcLiEWNw/CDfXYLNH18jwmU1ekUKw0lGT3Wrsf+IX0w17j29FBT0kmIQiOQETLTq4mM3uDHkIckIsh9QO3TM506t0RAjBxauzpLr6SKUtyUa5lIpu5gCpJM9sBF5UffZ38u9WTUhY7KQRi8YVWCt7TVSyPuXtv6ZanZVcHhTTRVNtsZKX3q/mkW7sRqyIme44KNC4+yP6C4gUZt/0s2unuzjterFHNo99RDoLJtHVML+HAtlY=; 25:6s1+Mx8SLfY7xexEBcSOconfqEXJkmHNUI6km9k6UwtRDO/s27PgxfiGLx3B//dMLGUhbRSnOdQajTay0e7ZggZ/FWIYHNFNNblQlhkoQwcebho10gfvg+nbIj6bI/ftEE8N+GKxzLDVlJcTJDhpUvRu9TRWu44SOdIRp8EAUk4EyoDNyHowzkXp5brUzzldRwf+lrYWTJYpZvdHar3x4gpdNUU35fbRLjfOwYuDYJD8EeM1GfOjVs6aXwTS8bv73L8G0flGgds1ARCT3U9kHfRQuez5Ivqy715zbu5hSjuTfsarIdsHrz8GAHxaIj1VK7FcAnMT5PN7fYnSgMzRgw== X-MS-TrafficTypeDiagnostic: DM5SPR00MB235: X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB235; 31:hsHXtjXrjWPuRy/ZBp66KgKk3857s3XXrP2TZn6Cwsu2MvBLNu7zK8I/OPP0M3tJU+2hCKJjiwCK1FPRXYdSiMN27pSPrVzXUzwBk8f5ATKZFz9yXAKoVMSomLodX4iSujXM3P2X1ODGX2HdXUfHS73haa8q0JnL2Jrs4kQkVrRJ4f0jjwhRdFBElNE4lA/KFvRb8spFDj8d2fltqfMsXdgXWCPBW90mhkspbgUP3j8=; 4:p9He79lJuLaeV/zg44osjlC7oNgTC+0usZXSDHXCDMSYvwv3UN05qreUWtgphnZ5Qb/76QliNiAPbGU/jdy/EuIvR6l2RRolfyBkQSCBA+9AFo9ke3GA0nwotpBOBpM/0EbGsnDUymTZsqblLyH/fOilz/WuWYOCYo0snllKSifhXvnZBPgzr0TPTeRmY6j2agP8qaX0z4ZKsgl3KP9tPHHzgFFugkN7moWVe2zF3UcjxAZBA+M/qdz8uJfqwizhNfwZDrtiej4jzfomSXW9akSBwdsmcZcvZqRZPyFU478= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6055026)(6096035)(201703131430075)(201703131448075)(201703161259150)(20161123559100)(20161123565025)(20161123561025)(20161123556025)(20161123563025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5SPR00MB235; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5SPR00MB235; X-Forefront-PRVS: 04433051BF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5SPR00MB235; 23:AJ+TUAP7Gdzb/e6NzLGU9Xt9zYB3tpLR6BQG8AFWe?= =?us-ascii?Q?OFsmiNxhslgYfdxBukPTWy31MGC4d9uccGuOm2uwHGvB24oSj/Rbbx/4efFZ?= =?us-ascii?Q?7V+KMEn1BnzaIzPbK3uKuMGzldP4l81p6ew7LtflUhCxBnVSYxWyYShst1NX?= =?us-ascii?Q?YP8FdwHqG8JV6q4C0v7zffwtebAUofx+JfjsSgFs7vYFDORm0zYVvGKEEwhJ?= =?us-ascii?Q?Rodo6vWBOVObuR5FHPTyoLqhNucub14fncOr9DZM4qnTuGvnYlTCCS3KRxUc?= =?us-ascii?Q?MraOkPPbgOA3oOXNlTnbq3IgZjvQ7exLKu5KZfIWpwgkGo23GqQ+OK+kPUzM?= =?us-ascii?Q?hzs72oz3qXzB6LEbMswxteaVahHoe9nHfwiX6KFRQ23tD/Re5Z/SP1VDsusG?= =?us-ascii?Q?t13OFRGtap/myJ0BANixdA7rLUB3BHXc8AsFCCFXk15UJ3FeoNxgxE2u/hsA?= =?us-ascii?Q?H5iHqS6NMz0BFGx0qB+PwDGAVAFq4XmKMGPthrc6W91ieVL0WWc9PYszwZY4?= =?us-ascii?Q?GwaED+8JR8Y1Rs0crDbzOffu/mAThgm1dtN7ATVKx6UFAEb8aV5sf1MbFpSw?= =?us-ascii?Q?UCgrG6d04kNusTatGmLfzhARsP6/sQbjURZcWw9kDKWCIAqhI6m3v1d9hT4j?= =?us-ascii?Q?iIot0gucUIuqwjZc0Q63XjTTqhTjvh+TgtAT6DZuQFOHoul1O/7R6DP8dRIr?= =?us-ascii?Q?ga+j1lccv3d3FnJblXxarRjrzL+yeqofmuUdxJ1H3xn99Vgxchpi+pL39N9W?= =?us-ascii?Q?kSuYlDkkYjyC+yAMtS568IIBbS/NS+pAGoegTKwhGL6JIJU9+VGmZHOiKEw9?= =?us-ascii?Q?EzYiQZrhOoLxL+U9t3k3l9qM2tBna1jE0IXkVpXQbVXctZybtDR69NhWqv5v?= =?us-ascii?Q?NI7VYbRYZ77+E+c5Ihq2vPELGRyLD5uNViJ0AEg268IBcXVHJ5PQ62vZA+E4?= =?us-ascii?Q?OTmsrH027b4kQrcelhoc9hsdEWLb2xzIZdbVaqyil2Yy/P/hK7X4NaYTplaS?= =?us-ascii?Q?Hy841nkaPNq7KarAeIDuiusth8GXCmSsVWTjfyfbPzty5D+ZS9ig+gxyhQcS?= =?us-ascii?Q?a0AR+YBHBNmgquvUwcTkX51g21RjfWUvTEBLJgHK/wi/7l63ebnrdlStvkKp?= =?us-ascii?Q?zWIcagBh+V7F9VVnhZquq5c2I25AUHZ?= X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB235; 6:TTIzAALgRZ5GS1ywPS6BOf0w3DmVmNTPXJbSYPKmS3e0wsaXOLXFTfcgPzi6J3vHiJVWOJaDLDJUW6QY9j8HW8o89QSD7G3KhwyhBP3sJTjtfPy3iFmqhpmqTB92tjX1dapkcSPRYnCkuoLmmVN0/O0c6zDwJNVrtgJKvxUH/NI276FzS6Z1VuzM9/tYOy3ZHKR4DrZxOH51nHuOA9mry14mkNIlYQ7TD/k7/s5nIDfdx9L9fr7AtjGKFp3VXLRa55QA7hBa85JYW97ZyZtMKUKAidOA6w2kyDAJTiee0wIZHbaVthRWiZr/9A5fKelwIphKJ9d0nbyI5Ea7VA8sjg==; 5:AP/TKN9mo1xLKcJHCZaZWCJy5qrU5PlwbJkiAcS43d2IcJ5vj1561Bm3Z/D2XGXnZanjBgy16C1CtqctAR3hMrWA0c1GiXtosw4DOkoGzsBgJNz4waLQv+eGosKqEUJWreTvn0trhsLZuMxGvhv9JA==; 24:9RpAxiqUjTLfqAVq2VoRz8c4XNxT+gjbOy5m87dVdiiBPOiHO++JWbZErxt4z+V1vLIfl1loNqY1OfurGtbRoLROny10vZpaNDCte67tlmo=; 7:SSRpSFYh4UTig7TqbmprVDjCiXs1UgpK1FGdWkUggs25GV4K0WCu/Fhu+hOQLbP2Vm5vVcCgR2RmKM7AWVixLIQ6/dO4b/yYe8INwYhNPxEBCNI+nvtG+q1hQdQ+rs8+FlVUTUI9JtR6LDOdilO72x1a26CGEKxgeojbCCmTQAU49UKKIhn+zYP5j+VcuPkpADAQBqojcKfXPcfsQ1/sWK57vDKEeh7mnQiwZj6VnLE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 06:36:27.7559 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5SPR00MB235 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.85 Subject: [Qemu-devel] [PATCH v4 3/5] virtio-iommu: Call iommu notifier for 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org, bharatb.yadav@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" iommu-notifier are called when a device is attached or detached to as address-space. This is needed for VFIO. Signed-off-by: Bharat Bhushan Signed-off-by: Eric Auger --- v3->v4: Follwoig fixes by Eric - Return "false" from virtio_iommu_mapping_unmap/map() - Calling virtio_iommu_notify_unmap/map() for all device in as hw/virtio/virtio-iommu.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 085e972..ff91bce 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -127,8 +127,42 @@ static void virtio_iommu_notify_unmap(IOMMUMemoryRegio= n *mr, hwaddr iova, memory_region_notify_iommu(mr, 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_dev_from_as(viommu_dev *dev) { + VirtioIOMMUNotifierNode *node; + VirtIOIOMMU *s =3D dev->viommu; + viommu_as *as =3D dev->as; + + QLIST_FOREACH(node, &s->notifiers_list, next) { + if (dev->id =3D=3D node->iommu_dev->devfn) { + g_tree_foreach(as->mappings, virtio_iommu_mapping_unmap, + &node->iommu_dev->iommu_mr); + } + } + QLIST_REMOVE(dev, next); dev->as =3D NULL; } @@ -260,6 +294,7 @@ static int virtio_iommu_attach(VirtIOIOMMU *s, uint32_t asid =3D le32_to_cpu(req->address_space); uint32_t devid =3D le32_to_cpu(req->device); uint32_t reserved =3D le32_to_cpu(req->reserved); + VirtioIOMMUNotifierNode *node; viommu_as *as; viommu_dev *dev; =20 @@ -284,6 +319,14 @@ static int virtio_iommu_attach(VirtIOIOMMU *s, dev->as =3D as; g_tree_ref(as->mappings); =20 + /* replay existing address space mappings on the associated mr */ + QLIST_FOREACH(node, &s->notifiers_list, next) { + if (devid =3D=3D node->iommu_dev->devfn) { + g_tree_foreach(as->mappings, virtio_iommu_mapping_map, + &node->iommu_dev->iommu_mr); + } + } + return VIRTIO_IOMMU_S_OK; } =20 --=20 1.9.3 From nobody Wed May 15 18:12:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506494495466438.87723971216735; Tue, 26 Sep 2017 23:41:35 -0700 (PDT) Received: from localhost ([::1]:52439 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx62F-0005AQ-6L for importer@patchew.org; Wed, 27 Sep 2017 02:41:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35669) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5xb-0001Fc-N1 for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dx5xa-0008Ks-QH for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:43 -0400 Received: from mail-by2nam01on0056.outbound.protection.outlook.com ([104.47.34.56]:30835 helo=NAM01-BY2-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 1dx5xU-0008GH-CF; Wed, 27 Sep 2017 02:36:36 -0400 Received: from BN6PR03CA0009.namprd03.prod.outlook.com (10.168.230.147) by MWHPR03MB2703.namprd03.prod.outlook.com (10.168.207.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 27 Sep 2017 06:36:34 +0000 Received: from BY2FFO11FD036.protection.gbl (2a01:111:f400:7c0c::151) by BN6PR03CA0009.outlook.office365.com (2603:10b6:404:23::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.9 via Frontend Transport; Wed, 27 Sep 2017 06:36:34 +0000 Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD036.mail.protection.outlook.com (10.1.14.221) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:33 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8R6a2NC027330; Tue, 26 Sep 2017 23:36:27 -0700 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; 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: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Wed, 27 Sep 2017 12:03:19 +0530 Message-ID: <1506494000-31982-5-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131509677940022535; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39860400002)(346002)(39380400002)(376002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(77096006)(6666003)(81166006)(68736007)(5660300001)(104016004)(85426001)(4326008)(2906002)(81156014)(189998001)(2201001)(8936002)(86362001)(8656003)(39060400002)(305945005)(97736004)(50986999)(50466002)(5003940100001)(106466001)(76176999)(47776003)(105606002)(316002)(53936002)(50226002)(8676002)(36756003)(110136005)(16586007)(498600001)(2950100002)(48376002)(54906003)(72206003)(356003)(7416002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2703; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD036; 1:QG8jFoOZ6J6LRM7hoxgC217e8iI2gDsJFIKMvIDfnpLQ9ltwYH3LSb3AQuNPhJBgWQa3NAnHbVLIXTyo6TLg4EceQgqPIKJhlKUq6d1DguIbRtCE4MZC2829ZGeectCZ MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8dc7eddf-bd1e-4841-120f-08d505721888 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:MWHPR03MB2703; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 3:vDAsXj/tWpTZg/jl+B0HqcTyRsN8VB2gkd8DLXScZzUjVslklyVMAMyZXLwbt/X49MFO27rfoDaof/fQwi8jWV3LkRgk0a7I8gmgIl1fG/9vWNMFXFqN/4CCuE943u9LYovpDX2r0W6t9UCUC0KCTNVZ5cZ0CAPAEFxiW2CmkQdmsIdVN5YweExnTXnKirpSjFF1kUIUMeLcqRQQ1kgou0ebWSaz910wfVVo2HLLKFfkfDnfxtF0y2xabAqP1g2dnEuL0l5Pp31DLCNY9M+8NdVLave+Lr8GnafPcHGX/Ahb51/MLIc1mZQF37AG05mWpN6RsOsV2+yiiZuyaDXfoJslLJ2myDwDwTnOeFF8HJI=; 25:jT5R2uqylQuUKqL+GBI8965EgH8xXPbpsUFH4As8i9dz24rV/WhyRHu4kUhfI70K4x4HzO1esIXSgvvU9DPPZYs3fS2L0QoKD3WowC4HVO50ElE6WnHkQeWcgvxBIVItbUbFH7y2h1Fq8Fafr4MgQkcd5O10c5R9vxe3Vm3EK5mPXyiNT9xZyJCk5p74R1d2My21fR2DBZt8qtw2oXKYmYqnbyT7OatNKKD6m67nygWnB2mj25pRiigCnGnVYtntNM+SaQM+PnK0jZtUox/SoHW8C/aZSWjhPN0ZGsNcScqFk1bDfKvQODd1uuReLzbgj2h9GOzQufzgF9R9u2X6jQ== X-MS-TrafficTypeDiagnostic: MWHPR03MB2703: X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 31:XQvDtbXpNB6ByzDXrWyQ8gjjP0HN4kCNQWs4Y3+ymaa15OoD20o87VVbhGsHab8vF941pJSkD2NuADRZr53pUv2a8/0rGRBhTFSSiJOF5KTXOIy4WwbGGJBJcby4KBNyIXbWT3pmDcZvpkGVnscjijPb8Xxeea27+SWQaNyEfq8NcyITXBWQ7HZaDA9pbDJFnFy86ICuOljeyqXio+M+1gCiXDB+nz9I1uz597bxlkc=; 4:50foa+R1vi5XW2xwv1qLIjkoNLEYrTOyzf2zfTIA1A8n9P9beniCR04l6d33POf/7mnaKCd2hS5Ih5uPACfEn7fAp/U61QFcv9wVxQB8ZrjFdnvbhVpWYfuzxhqZKekQW17GPJN47OiwaNTQMK6kTgF9VtjRBD9/HZzGPfwHX/oVKSCYvuAKdpf2UC84YGa2funi2YffJiOYkURVlN9OuSEvJphcMUcskSmYmezwRaEkIxrzCLaC/dCgmdtMWPdHdKefvI4q0OfALPstuxwdC6xMDnM/GfRyKVAkAw+T7tQ= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(6055026)(6096035)(20161123561025)(20161123559100)(20161123556025)(20161123565025)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123563025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR03MB2703; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR03MB2703; X-Forefront-PRVS: 04433051BF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2703; 23:M1VGQxEKcy4ndODc3FTDyeh2bsCIXGwVintJhMUbv?= =?us-ascii?Q?MkeH4/J3A+xc8i4xML7rxj9tUz9UUnVzYop+71Do74WT9ODoxDt1NvRPRfgW?= =?us-ascii?Q?NJ8AFwMqiCjgd2gLs6XK89vsOhIN9Xs81oSVS0idt1x4a37Jeuxemt4jxmXH?= =?us-ascii?Q?O40nNQTJgKcjwQuxY9522RtDuDGo/GdtStJ6/GPsFbhGrXRmP2RNlapPEJVE?= =?us-ascii?Q?/wDld67ttGwqYzJjKWH2w11TAqCSh75X8+XGuNyPytWlLOg8GShNGJeVWjmj?= =?us-ascii?Q?HHGYYsNqZNAyvymxSu4Ynn7tDoYNNOivWF2gU+sArVwiKMzFrU2G5j7Yql2U?= =?us-ascii?Q?9Ck/Yuvq2e3r1sd9dKLPlZ3Mtk2hb/VfAilKk6U+62BwqbVB7Whcfx3aEcBW?= =?us-ascii?Q?Jun70MJewVIeeO68eiH0lGgQSy5LVm4+wLPHOeZTV+mwOb46pk2hxRBqccav?= =?us-ascii?Q?1eCc48noHBUP83oXbq7qBpvYwe+InD52D630NnMxkO92blC6VaPcdskctmpd?= =?us-ascii?Q?YchtX9PxJCGzewrckq5ALUpmpXwGj77yC8k2CpGqpc3GmB3WX0tieJ47tIBG?= =?us-ascii?Q?zJLUuCxI83TjKD/uxJeABreGCqHeBXaFJ7kp6el+k2KUditJUgRA+hp5Lp45?= =?us-ascii?Q?J6Qjk/bG0s+DZa59vBg5OsM4Bk2Ads8EvqVkRiXsJPE2fNnKChqSXzTqGNIR?= =?us-ascii?Q?kvBiofczRHdlzWtueXo+8mUiqT6k/Q+UBk4q6FcGIM6lQZZ4Th+ZWQya0/nH?= =?us-ascii?Q?Q4nwvqQsIij/HgS42qN0WuUlSR/tCmpXLow9KBBiGCPl4VWdvrJS6jGBnG7D?= =?us-ascii?Q?FjLme/ZJ9n5/qfgPUWOAEQm7p/wCHX1LuMHxvhiWfKmK/+IFHp0QU9E6aRfP?= =?us-ascii?Q?sWh8ziMMndhTfcnNQZ3C3w/5BSmRF1sRZrIFrKvCI49V1GTqGxqDWEg/tkwV?= =?us-ascii?Q?0ZXNTg8UalVinWXWQ6Ol79VfSQePI9+lIS2hmEZMavS9eE+2pUnGEpfgDFaE?= =?us-ascii?Q?jt7o3w2xD7IBLjcIuFrYhnh6VTOVKgEff50MPSWaMIPzfjGBCdYvr3K61W6U?= =?us-ascii?Q?L/TNvij+XLzqFGNW0/7jrisaFu1GNC/Ba3AEY5y4pbEkQxNW38uy2DPosBiN?= =?us-ascii?Q?icL1y2ewhFy6FzIH24gGoZwomuxeq+GaVRf/JsSHv1+/+w294puu8aqsdc6y?= =?us-ascii?Q?/lbOpO7nW1PhSl10wLorfYOUfhez1rDOSM+HFj8JTFn/5DZ0WLwiSc6kw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 6:IpPEfz6xv1G63aThzOH2R9dN0k9TN3HuNGN1wr6rUJm08bOpfuMcxAKJPziZPs3wLernljfD9Wm8iUW170oX1KaWdCf5/446xHMm83F73NNg04isRajvJ4RjqRRoJW4ke307LobKiZ9S5DgKKEGdxp/2xp/aeIba+NC0tUZ/5GzFjr1MRLuL43nILvrEhRJrKJu2NBcblpCR4zh4N7Q+rxmRB7EHx1qq1r54Ef5bww9+eI6KDyrdHHMNm6cSOlllvdPiLmAFB/PMA6RKuIGxTJud8ZDBGhUAJo5UQcmMjuXT8jtxMG1tG/VF7BlWWRxbLlyMPzgrkR06eBz2IHRCsA==; 5:oScIHEfvhwY8CGy7m8SUwoJZGeXgDBCh7zbTfBPdt1WzlPfSRys4ED05zAq9m6Twyc4rc/0m6V1eQbFojoqhSMtfJnicrUxP/BLK1ZdtvzNkdfLAxo3O68QfvtFKNlJoQVRLXDQ8bAeSlozD94MwcA==; 24:SmwLCiw28LM8fJik0QK7uMJyiDMnvzl8NWr05qe02/sit3HNsNFMmfYJW7f9khr+nnrZkGhMotHV0J6O+Q3gdrZvHA01FFrW1BxQCP4Hl7U=; 7:Bo7Eh+FetdVeT2Tgp1UuIUEtocoUwSIslVRAZk6yFjkp/Sg5j16BdGoYzuEU9iU5Sl6RrwLJ9l0FPJMqDUhQgsxx7x4Z1A1hztpvwWSy6Cky/No3w8RL097fT0xvmpL0B9Cq2ri2y+7VdUCv7pWgJpu8mcPg4FcKiVeao6RHgLuBOSh9GEy/0an6k3OteC5D/Wjvz4elx4xWh8pQp2P2cYJ/UDp+Z7RRfIMFTFwbMg8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 06:36:33.6902 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2703 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.56 Subject: [Qemu-devel] [PATCH v4 4/5] virtio-iommu: add 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org, bharatb.yadav@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Default replay does not work with virtio-iommu, so this patch provide virtio-iommu replay functionality. Signed-off-by: Bharat Bhushan --- v3->v4: - Replay functionality moved in separate patch - No other changes 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 251b595..840d54f 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -51,3 +51,4 @@ virtio_iommu_fill_none_property(uint32_t devid) "devid=3D= %d" virtio_iommu_set_page_size_mask(const char *iommu_mr, uint64_t mask) "mr= =3D%s page_size_mask=3D0x%"PRIx64 virtio_iommu_notify_map(const char *name, hwaddr iova, hwaddr paddr, hwadd= r map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64= "" virtio_iommu_notify_unmap(const char *name, hwaddr iova, hwaddr map_size) = "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" +virtio_iommu_remap(hwaddr iova, hwaddr pa, hwaddr 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 ff91bce..d4d34cf 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -906,6 +906,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_dev *dev; + + sid =3D virtio_iommu_get_sid(sdev); + + qemu_mutex_lock(&s->mutex); + + dev =3D g_tree_lookup(s->devices, GUINT_TO_POINTER(sid)); + if (!dev || !dev->as) { + goto unlock; + } + + g_tree_foreach(dev->as->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); @@ -1003,6 +1040,7 @@ static void virtio_iommu_memory_region_class_init(Obj= ectClass *klass, =20 imrc->translate =3D virtio_iommu_translate; imrc->set_page_size_mask =3D virtio_iommu_set_page_size_mask; + imrc->replay =3D virtio_iommu_replay; } =20 static const TypeInfo virtio_iommu_info =3D { --=20 1.9.3 From nobody Wed May 15 18:12:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506494483426140.20756769830496; Tue, 26 Sep 2017 23:41:23 -0700 (PDT) Received: from localhost ([::1]:52438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx626-000532-Jo for importer@patchew.org; Wed, 27 Sep 2017 02:41:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dx5xl-0001Z3-DE for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dx5xk-0008Pg-DI for qemu-devel@nongnu.org; Wed, 27 Sep 2017 02:36:53 -0400 Received: from mail-by2nam03on0044.outbound.protection.outlook.com ([104.47.42.44]:51376 helo=NAM03-BY2-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 1dx5xa-0008Jy-Ep; Wed, 27 Sep 2017 02:36:42 -0400 Received: from BN6PR03CA0070.namprd03.prod.outlook.com (10.173.137.32) by CY1PR03MB2362.namprd03.prod.outlook.com (10.166.207.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 27 Sep 2017 06:36:40 +0000 Received: from BL2FFO11FD010.protection.gbl (2a01:111:f400:7c09::125) by BN6PR03CA0070.outlook.office365.com (2603:10b6:404:4c::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:40 +0000 Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD010.mail.protection.outlook.com (10.173.161.16) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Wed, 27 Sep 2017 06:36:39 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8R6a2ND027330; Tue, 26 Sep 2017 23:36:33 -0700 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; 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: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Wed, 27 Sep 2017 12:03:20 +0530 Message-ID: <1506494000-31982-6-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1506494000-31982-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131509677999839920; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7966004)(336005)(39380400002)(346002)(376002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(105606002)(2201001)(50986999)(76176999)(86362001)(575784001)(72206003)(498600001)(2950100002)(47776003)(50226002)(2906002)(106466001)(305945005)(356003)(97736004)(6666003)(110136005)(8656003)(16586007)(316002)(104016004)(7416002)(77096006)(68736007)(5660300001)(189998001)(4326008)(39060400002)(8936002)(81166006)(54906003)(81156014)(8676002)(53936002)(50466002)(48376002)(5003940100001)(85426001)(36756003)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2362; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD010; 1:iAfABr82hTryie36oaES9KSvX272QGmbEBrmRs0q3F+pdvx2bS6ua663zlMAt9SrT9bSJ0S6+LIFpjbKyxVolySm4gtZ2ya1mHpwUMZ3r23OPvmdGY75L6gyd41CjZ+A MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: df9555e1-0495-4373-6e59-08d505721c16 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:CY1PR03MB2362; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 3:Xf1fEwgmUhHo7K9gQehFhk7/WWFUpkvv0TfHIOQmIsBNITWmokf858sQrgTKhKfthzFNy11ooVsd49kCShPlW9Ww6BqacNNIHkmxUCAXSFtaWY19FFe1BQ1kYBDRth8jDm0AuYdE4S1ihxSOLkAB5qGTpmtnqukyGQUl+as4Jrt1mvXNsQ+w4uj7biPFZEcJ+uPVe/EvxCYoW7e8+ZafIPID3nJrn/lp1THjd5gvZpztgQLeyxVq6tu9oQPeHXt86gETGd9acRIsZho04YnoeiRI7k/SGGWTiOyeP7LYuWuDTsr21Fm/VzdDEStNMjShve52ed46h1VUBtFCExJ71s3/Fy0oG+CxfkZ6qisFbzM=; 25:Yrc1ngPwMAJY5cYdFumcQ21/vK+UbVaejHsHiKkgAu4t2CoQNbeojm9sqGnqr0aMALVVH1AeZZeY7vWytFQrZD3zglGPiLHvsn4lkZshzQA4cOTxVFVwhh/bKcoj52aEi1OTQc5zgHlXq0slwv5RbQ8YaWHOtpSuTKbdRpxOPXjJVztEdh6pjxiLESOPltG4i53MYj2SuCP/6bDQzoJxD9qOC1ywIG3uu5Ns5nB4XNljet+E0ixbyZkohvixAxwsAFAt83U3zdSJ3LUzxuQlHZKeM/f+qC7AGa/yP0MdHyBOlSermWqI8+ugXmTTHAwbq51h9awbP3gnEtWPAcEYJQ== X-MS-TrafficTypeDiagnostic: CY1PR03MB2362: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 31:bQ+jx4jeneBEFwmQJDExI209TD2xHe4qOupDwjEQF3HjsdmOgwXtmuPRMvCzUcKzJPoem2COWq05iurVc5q5RIGFf44HP9Y6dei1CgUOgnv1vxDTxQeUmwQbMtRZpHrjWR49Z+2GQEvVwoPWd/v31yj9cWsGKftOW1JkVht9PSXUQW7++paA0oIqOmQHTC/ffGdKD/srbAsxGmqojKTqDq6X5s6KwCg/PzbkCF87xlQ=; 4:Y6KbMwVPUqg1yk4jZyaWXTducYqjXtp8qpqKqBLfjvcONCeE7UCXlVGgwKSLKD0mC9Jv6/txOX/Fvfvsje+pDoBs9qwX2atzvdB3wXoHK9+Vkzr95fBslHpHxsBaWoKaFY7yoJmYhebWK7UfKHA42sdgB7X4JDAqNEkPHu9InB4tpWp0Jk6JeGOtayUNhAQLp2XPdPrdr7i5fz/40vxKL/Kx3cedRnlTtfff9iVQJJtDktfr1yex7dWnYK8LrYq3xgiOczVYQEdOFX/3SAedPUi8xH4kTI2+9Xph01EKxIg= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123556025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123559100)(20161123563025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR03MB2362; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR03MB2362; X-Forefront-PRVS: 04433051BF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2362; 23:c8k1+vie97eXUGHGiqhq5bv10wGbrvIuWlXLWw7oO?= =?us-ascii?Q?4JNGpTwSvb5fdEL4PDhh1ho9wcZFopLBS/ngJgXphcyN4xz/wDpy8JbJfOYS?= =?us-ascii?Q?fxKHXAFUKXSKXtH3q/XmqXNo5omYDFrI180y5pnxdKoCeH/4V2omnnpCkalm?= =?us-ascii?Q?xrMRRfKuSsqdSi/4K4p0QIC/aS0bxVgnKW4iLz58EoZmEtxgKyJWAtKUUzC1?= =?us-ascii?Q?IVkb85J40F7C1erWSPQhohf48NIsoCkKc3tBTqUBXakUJ46yLVCHofWsj94J?= =?us-ascii?Q?TB4pY2vZ446mq2030ZqGaL2Gcmj/GlQ6AqCZcQMwmMOREOfuY9nE08bpt8uR?= =?us-ascii?Q?YXg8Eic+HfFMnMEdw8C6QnizEqlb33VgmLJqHvQaOW1vC+zNWvqx6FTM9g3U?= =?us-ascii?Q?KbwExzT75t2mCmBNvXu6+gkZMsj55twMidNImS+DLETE8XDcrWa1XkXDaN4W?= =?us-ascii?Q?FOpIzFuOXNyoLUugaWug9wCde96Y6Z6xP0z50vzJHxkNnbz4LKARMizwAYiL?= =?us-ascii?Q?FN1M7rwErd1E5XLXO6ppy8UTcHkniKp7gh78XKKBNyVuzAM481LZlle3WC6Q?= =?us-ascii?Q?79kCtgJ6eLBgNqKBSMVIUTyDQ5zNl9ij3GYtTKgv8VUIrlWCwGi31tYEHG8u?= =?us-ascii?Q?EeUiAshAiXC1mSYJ3Anx2GTmNG1+pqIAg+hyGqGExK8xp2aLU6fwu65KNZdl?= =?us-ascii?Q?moxt1dcDXr8pW1J7v9hnAV60tUM8Sids+vGa0uL8Jr38Qor/ZDj6V32Q7XmT?= =?us-ascii?Q?a/vy5ndgSsH2WoWXTXyVU3DGAlEjTE/CwnmrD6Pvah4kb/O/VWRy/73Q4YX3?= =?us-ascii?Q?vsYucEZgqk5PfKLehPogjI1sOaHfefthKAvM6TBaU5X2wQnMGnJQW1qzNzl3?= =?us-ascii?Q?Z6vB03EmcJK3QfvKQlJRVSUtZaK348mDr0sAXaFVc4gP7m0LvataOHE/OSFv?= =?us-ascii?Q?wEyN+zd5lGtoDeHvxDtiV3u3DBj9YSfy/pkAh1zAxTX4xOQ5rJl9n7mq/Mwy?= =?us-ascii?Q?jYD9R+12GpkHHL6mTH6SQj9kixUrordRpzkSsb32z5nX6ULCnEpRWeazXHHf?= =?us-ascii?Q?ONuTgRhkt/ToVJ6qwGQTkqs5KH5S76pSMboA31KVrSkrQZKJYt1IH6fAEc1p?= =?us-ascii?Q?0Fm041QhlYHDxc+vHjeb/fcKvM4hmCc2ksGcWupfnipZxPGly4K7YWKhRu4I?= =?us-ascii?Q?aT/NW/54rBweSQVVewKZMSBjrXft4+9xlQJf65ZqTklN6Ee3M77y8nZwf9X9?= =?us-ascii?Q?ZSXbrXEL9kf3SGI0RWFDF26q73S7M747ZXd9dSw?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2362; 6:QT8aLDfODLXZTjF7aSdBz8w4yf9a44gDxN+zPSOjFM5D77gjYBejTpUYI8fQz21fYcemePx7mq4y6wTfAtXLN1pW72H7+uxmiHjUTW+Bekw4EniswZzr8wYuBrpT7ZmHOxa3SmALAUYg3oIKDcrVJFrnrR/9vmxYJL7tjm7u75RAvO7P1NsOMtU852W4DrSTONwhBFhS+USSVmGOgtXRLJXZksjGhRFMYpPmWb0B66ZozABNyEzmx1aaEXs0dINMuUqLTbNggibGLi6Ia/SA+Gl2BPhGoUr+F8JYPfeet1bPVW7TZ8OCiIdnhV1tfwRT1ABsiV+K8Sib4WEIR/8tTw==; 5:ThGUrKh1RJKBwr6CLxyFkmHe40N4PyOlf1YrlqfZNv3UNmROOs2QEIDAX0991jne4Hp1DXhsiyOLDPA1crhzxq+mHnRCVDP3B0Zo0X6P0D4+c6x4WSNQMxpEmUDJqeq2isjMlnbFNIkyYWBoFneSlg==; 24:AWAEOF2o27I4wbJSj3Is7L22BICbkqHJ5ITEZs60ZvP6S+dgm7182PI+1y1EjOiW4E48S/qhZiT95scu5zUB/5abSU/mL33kS6YCYHw2mpw=; 7:e8ldqSvbBFCsS7pQdtrR+3ThuYcm3lZOqgQG1jiz4+PR7B5IcVaD2GelTzo2MinEdSpAUAvJr5VuUHPHNlrOu3bsJhNVVOblAcw8gCvbLoR3Ho5Wpj3Jq86Zj6eSxiG6OmfOAkvFu5d54zbo6Q0eT4zjCFYl95vLOm1wkI9iJhiMrYPLO4t8qlpACLldzeIeiAPtkNAsw+z4qSM6h5UVStPw2QKWaHTPEfPoynKd3/w= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2017 06:36:39.6407 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2362 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.44 Subject: [Qemu-devel] [PATCH v4 5/5] virtio-iommu: add iommu notifier memory-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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org, bharatb.yadav@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Finally add notify_flag_changed() to for memory-region access flag iommu flag change notifier Finally add the memory notifier Signed-off-by: Bharat Bhushan --- v3->v4: - notify_flag_changed functionality moved in separate patch - No other changes 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 840d54f..a9de0d4 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -52,3 +52,5 @@ virtio_iommu_set_page_size_mask(const char *iommu_mr, uin= t64_t mask) "mr=3D%s page virtio_iommu_notify_map(const char *name, hwaddr iova, hwaddr paddr, hwadd= r map_size) "mr=3D%s iova=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64= "" virtio_iommu_notify_unmap(const char *name, hwaddr iova, hwaddr map_size) = "mr=3D%s iova=3D0x%"PRIx64" size=3D0x%"PRIx64"" virtio_iommu_remap(hwaddr iova, hwaddr pa, hwaddr 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 d4d34cf..a9b0d72 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -764,6 +764,36 @@ push: } } =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 IOMMUTLBEntry virtio_iommu_translate(IOMMUMemoryRegion *mr, hwaddr = addr, IOMMUAccessFlags flag) { @@ -1041,6 +1071,7 @@ static void virtio_iommu_memory_region_class_init(Obj= ectClass *klass, imrc->translate =3D virtio_iommu_translate; imrc->set_page_size_mask =3D virtio_iommu_set_page_size_mask; 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 1.9.3