From nobody Fri May 17 01:32:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562826068; cv=none; d=zoho.com; s=zohoarc; b=O3dN3ZoN2LJxIvQAVaVc+uNhyvQknqm1pIy7oei25hxrK6RDWxb7qouCgaT6dpBmoNEuyTaVk0zIV0jrkG5ANqgHRrSo2dt2niiivWpaYrFMbejEqK4ZgobgsBHmxiEu/y4TkPKvzjL4bZDDBnOMaie60sj+NyuPqzX0iXZPgnE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562826068; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7UHD9lY69uSojRgLPxEbyMmPbBmfGY6CrMQdmGctMxI=; b=lEansNSwaKw4BqxSoNokvqZHCdhn3ZECEXcaKv/+uuJhkxpXgQqMZc1PW8Wi7y0n2bXyYC3LiLoD9TXmh1OibEJtIwhsWROAmlTQF0gI+/BivE/oOZeJZj9JaUVgxKhDh0gM5DhMYZRIEWGXe7r/vdi0299XEt3jDyeOua7iZ8g= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562826068643179.49394627605398; Wed, 10 Jul 2019 23:21:08 -0700 (PDT) Received: from localhost ([::1]:38858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSS3-0007zx-MS for importer@patchew.org; Thu, 11 Jul 2019 02:21:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41362) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSQJ-0005XX-20 for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlSQG-0000D9-PB for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33804) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hlSQE-00009i-Ev; Thu, 11 Jul 2019 02:19:14 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BF328307D9D0; Thu, 11 Jul 2019 06:19:13 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-46.ams2.redhat.com [10.36.116.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id C612E60600; Thu, 11 Jul 2019 06:19:11 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org, peterx@redhat.com, pbonzini@redhat.com, alex.williamson@redhat.com Date: Thu, 11 Jul 2019 08:18:53 +0200 Message-Id: <20190711061857.13086-2-eric.auger@redhat.com> In-Reply-To: <20190711061857.13086-1-eric.auger@redhat.com> References: <20190711061857.13086-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 11 Jul 2019 06:19:13 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH-for-4.2 v3 1/5] memory: Remove unused memory_region_iommu_replay_all() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" memory_region_iommu_replay_all is not used. Remove it. Signed-off-by: Eric Auger Reported-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Xu --- include/exec/memory.h | 10 ---------- memory.c | 9 --------- 2 files changed, 19 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 2c5cdffa31..a078cd033f 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -1076,16 +1076,6 @@ void memory_region_register_iommu_notifier(MemoryReg= ion *mr, */ void memory_region_iommu_replay(IOMMUMemoryRegion *iommu_mr, IOMMUNotifier= *n); =20 -/** - * memory_region_iommu_replay_all: replay existing IOMMU translations - * to all the notifiers registered. - * - * Note: this is not related to record-and-replay functionality. - * - * @iommu_mr: the memory region to observe - */ -void memory_region_iommu_replay_all(IOMMUMemoryRegion *iommu_mr); - /** * memory_region_unregister_iommu_notifier: unregister a notifier for * changes to IOMMU translation entries. diff --git a/memory.c b/memory.c index 480f3d989b..90967b579d 100644 --- a/memory.c +++ b/memory.c @@ -1910,15 +1910,6 @@ void memory_region_iommu_replay(IOMMUMemoryRegion *i= ommu_mr, IOMMUNotifier *n) } } =20 -void memory_region_iommu_replay_all(IOMMUMemoryRegion *iommu_mr) -{ - IOMMUNotifier *notifier; - - IOMMU_NOTIFIER_FOREACH(notifier, iommu_mr) { - memory_region_iommu_replay(iommu_mr, notifier); - } -} - void memory_region_unregister_iommu_notifier(MemoryRegion *mr, IOMMUNotifier *n) { --=20 2.20.1 From nobody Fri May 17 01:32:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562826132; cv=none; d=zoho.com; s=zohoarc; b=QP2XAGlcehtLIRFl3p3y9Z3O5kOSiFlOR4iJO1bwdzXeUfdqaHEdcLn7wokIrRxn/IwftPfikNfOo/QriTE5zTBlZpuPYv/KM2NKf1DckLTzH0QMZ1QKd1pTZTtQP0urqtlaVZ4mmAVX6joib0IPsEPhaV+Ylg2xKK+yeGi4V6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562826132; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=d55vLVoHhDsHINsYSLNRyKE2VPFAuBtSUumm+wzt9r0=; b=GPkdbM0U/TSYAGjBMyPZ+89DA5yY8FAcvZUmG6/JpliDmj5C3L6aczkIWP4S5ANOG4xBApx1aluwfKtv6ATafhEem8Ph/eU0Iga+FgjWXWF03Dili1am/BOMH50xzjs4CW9ZQ7DPVyhVcCandKe7tHSZcaimpV9PoMWSCEJXxlQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562826132842954.8896041172756; Wed, 10 Jul 2019 23:22:12 -0700 (PDT) Received: from localhost ([::1]:38878 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlST5-0001iv-OC for importer@patchew.org; Thu, 11 Jul 2019 02:22:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41405) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSQL-0005d4-JQ for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlSQK-0000JY-Ja for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57670) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hlSQG-0000Ci-SS; Thu, 11 Jul 2019 02:19:16 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2252D2E97CD; Thu, 11 Jul 2019 06:19:16 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-46.ams2.redhat.com [10.36.116.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 23C1E60A97; Thu, 11 Jul 2019 06:19:13 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org, peterx@redhat.com, pbonzini@redhat.com, alex.williamson@redhat.com Date: Thu, 11 Jul 2019 08:18:54 +0200 Message-Id: <20190711061857.13086-3-eric.auger@redhat.com> In-Reply-To: <20190711061857.13086-1-eric.auger@redhat.com> References: <20190711061857.13086-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 11 Jul 2019 06:19:16 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH-for-4.2 v3 2/5] memory: Add IOMMU_ATTR_VFIO_NESTED IOMMU memory region attribute X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We introduce a new IOMMU Memory Region attribute, IOMMU_ATTR_VFIO_NESTED that tells whether the virtual IOMMU requires HW nested paging for VFIO integration. Current Intel virtual IOMMU device supports "Caching Mode" and does not require 2 stages at physical level to be integrated with VFIO. However SMMUv3 does not implement such "caching mode" and requires to use HW nested paging. As such SMMUv3 is the first IOMMU device to advertise this attribute. Signed-off-by: Eric Auger --- hw/arm/smmuv3.c | 12 ++++++++++++ include/exec/memory.h | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e96d5beb9a..384c02cb91 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1490,6 +1490,17 @@ static void smmuv3_notify_flag_changed(IOMMUMemoryRe= gion *iommu, } } =20 +static int smmuv3_get_attr(IOMMUMemoryRegion *iommu, + enum IOMMUMemoryRegionAttr attr, + void *data) +{ + if (attr =3D=3D IOMMU_ATTR_VFIO_NESTED) { + *(bool *) data =3D true; + return 0; + } + return -EINVAL; +} + static void smmuv3_iommu_memory_region_class_init(ObjectClass *klass, void *data) { @@ -1497,6 +1508,7 @@ static void smmuv3_iommu_memory_region_class_init(Obj= ectClass *klass, =20 imrc->translate =3D smmuv3_translate; imrc->notify_flag_changed =3D smmuv3_notify_flag_changed; + imrc->get_attr =3D smmuv3_get_attr; } =20 static const TypeInfo smmuv3_type_info =3D { diff --git a/include/exec/memory.h b/include/exec/memory.h index a078cd033f..e477a630a8 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -204,7 +204,8 @@ struct MemoryRegionOps { }; =20 enum IOMMUMemoryRegionAttr { - IOMMU_ATTR_SPAPR_TCE_FD + IOMMU_ATTR_SPAPR_TCE_FD, + IOMMU_ATTR_VFIO_NESTED, }; =20 /** --=20 2.20.1 From nobody Fri May 17 01:32:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562826227; cv=none; d=zoho.com; s=zohoarc; b=N+gHPnxeuYNFYAoB1BisUnDJtuYBn04g7KE7EAiNZOpTdSDAqDb7WtBhMtG5/MBAFN/iMvY0hJIJXceLGohRX/X25t09TcRr+4I06tY104wxwzprLEggZGAlU5M6FUL4gsM94NEMpi7DQKkEvW736KOYbchuY4rz6u6P35oEQkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562826227; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=3RHLSWCVmMxJOL8bGxLrxFoN6xSHaw1M4fO4s2sLPtM=; b=GAvbYfFICr3pnlMV9u8E9SXYfsXCRCGF45UZk0mZ6K7/92JCcr44+mCzdaamlLj/bPwerJcJwgdWRQVuOV1znOMjjtoy+jdguHcWCYlhfEaiQ7VKCiJvRlywc4AfAQRfDbtzAknPBILgJaG+2y9IowHaPhqyF6PM02ryiTMgvbA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562826227783498.44861570643695; Wed, 10 Jul 2019 23:23:47 -0700 (PDT) Received: from localhost ([::1]:38896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSUZ-0004EY-SZ for importer@patchew.org; Thu, 11 Jul 2019 02:23:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41456) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSQT-0005md-OC for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlSQR-0000QW-T5 for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33956) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hlSQK-0000HC-Bj; Thu, 11 Jul 2019 02:19:20 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A8AF975726; Thu, 11 Jul 2019 06:19:19 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-46.ams2.redhat.com [10.36.116.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 78FCD60A97; Thu, 11 Jul 2019 06:19:16 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org, peterx@redhat.com, pbonzini@redhat.com, alex.williamson@redhat.com Date: Thu, 11 Jul 2019 08:18:55 +0200 Message-Id: <20190711061857.13086-4-eric.auger@redhat.com> In-Reply-To: <20190711061857.13086-1-eric.auger@redhat.com> References: <20190711061857.13086-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 11 Jul 2019 06:19:19 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH-for-4.2 v3 3/5] hw/vfio/common: Assert in case of nested mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" As of today, VFIO only works along with vIOMMU supporting caching mode. The SMMUv3 does not support this mode and requires HW nested paging to work properly with VFIO. So any attempt to run a VFIO device protected by such IOMMU would prevent the assigned device from working and at the moment the guest does not even boot as the default memory_region_iommu_replay() implementation attempts to translate the whole address space and completely stalls the execution. So let's assert if we recognize nested mode case. Signed-off-by: Eric Auger --- hw/vfio/common.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/vfio/common.c b/hw/vfio/common.c index a859298fda..d622191fe6 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -604,9 +604,17 @@ static void vfio_listener_region_add(MemoryListener *l= istener, if (memory_region_is_iommu(section->mr)) { VFIOGuestIOMMU *giommu; IOMMUMemoryRegion *iommu_mr =3D IOMMU_MEMORY_REGION(section->mr); + bool nested; int iommu_idx; =20 trace_vfio_listener_region_add_iommu(iova, end); + + if (!memory_region_iommu_get_attr(iommu_mr, IOMMU_ATTR_VFIO_NESTED, + (void *)&nested) && nested) { + error_report("VFIO/vIOMMU integration based on HW nested pagin= g " + "is not yet supported"); + abort(); + } /* * FIXME: For VFIO iommu types which have KVM acceleration to * avoid bouncing all map/unmaps through qemu this way, this --=20 2.20.1 From nobody Fri May 17 01:32:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562826161; cv=none; d=zoho.com; s=zohoarc; b=ewkHBgTUpK3VP8435CEkQtchQHHk3F44GydEkk8HCE18KmAbEIadAWxpgyeDTWDu1UOQxhSGeoTTIRpmGl9bDsYFHCR9xftrQnU+7WMGbrezNcOup68M3I9UftUbt3dcPFW4iZYhB6wUf2OlUAxvCHUhGCpriO8EFkiz5yJKHzk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562826161; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=w59KGEn/normtEg0JU2ao6+n0EO01yDNUY65eA4pjJs=; b=OdRB1fTv0NNoPpvpxcO2+Kh7RGT7MiSNsW+okl5vP2Oi0f7LO/ZzjWaSfHvOR1FyIME70S0YIHEw0k7aFe4e1Re4ysVjgTzgzBDCpv2cKoOAnF+G5+QNKBB0a2yIB1b+ritZDyKSEqjxWOqUFcz7Tkg3n3KZVgazDApdYvofbZk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156282616130741.99693978826656; Wed, 10 Jul 2019 23:22:41 -0700 (PDT) Received: from localhost ([::1]:38882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSTW-0002RS-Ch for importer@patchew.org; Thu, 11 Jul 2019 02:22:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41477) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSQb-0005qv-Bw for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlSQT-0000Sg-OZ for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54242) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hlSQP-0000NZ-S8; Thu, 11 Jul 2019 02:19:25 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4F2F1308A98C; Thu, 11 Jul 2019 06:19:24 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-46.ams2.redhat.com [10.36.116.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0E68D60600; Thu, 11 Jul 2019 06:19:19 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org, peterx@redhat.com, pbonzini@redhat.com, alex.williamson@redhat.com Date: Thu, 11 Jul 2019 08:18:56 +0200 Message-Id: <20190711061857.13086-5-eric.auger@redhat.com> In-Reply-To: <20190711061857.13086-1-eric.auger@redhat.com> References: <20190711061857.13086-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.41]); Thu, 11 Jul 2019 06:19:24 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH-for-4.2 v3 4/5] hw/arm/smmuv3: Log a guest error when decoding an invalid STE X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Log a guest error when encountering an invalid STE. Signed-off-by: Eric Auger Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/smmuv3.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 384c02cb91..2e270a0f07 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -320,6 +320,7 @@ static int decode_ste(SMMUv3State *s, SMMUTransCfg *cfg, uint32_t config; =20 if (!STE_VALID(ste)) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid STE\n"); goto bad_ste; } =20 --=20 2.20.1 From nobody Fri May 17 01:32:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1562826079; cv=none; d=zoho.com; s=zohoarc; b=VVO3djyJkFfPPzniMeruLE//wmzb/i0DwbLcbmwVdreqP1xkJKu8mirTs8EPq/yczw+QAysxKhYmgNVEdvh2r8NPOiz6FVar8PyOzoU1Gk1CvQAukvUp4ahoyV6A+QtL/anz/j5Obp0aLVEP+zN96zrsQUKJ6MAy4xh+W7JVa6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562826079; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=A+7bFOOS+65Wzg26Gg2GEjYXIVMhJIlEl1cvI9iiFZc=; b=dN1qSB86z/QXEcEaW4XNJi87wI5KhcRLpzukMDO64Hi341x5zROc6EQCan1AyxDbYY2McryMfGc87OjEnvS+JxVvkUUHG06dQ7iRS4xdIq/4d3vaW4ROEvtt8Wi9km6g73J17MOKMFQUT1mfPO2cic/EsrsB4vuicA+CZXq3MEg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562826079595959.8141100083934; Wed, 10 Jul 2019 23:21:19 -0700 (PDT) Received: from localhost ([::1]:38860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSSC-0008EY-M1 for importer@patchew.org; Thu, 11 Jul 2019 02:21:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41580) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlSQh-00067Z-0k for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlSQf-0000dI-S7 for qemu-devel@nongnu.org; Thu, 11 Jul 2019 02:19:42 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39926) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hlSQd-0000To-8U; Thu, 11 Jul 2019 02:19:39 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F346E59461; Thu, 11 Jul 2019 06:19:30 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-46.ams2.redhat.com [10.36.116.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id A691C60A97; Thu, 11 Jul 2019 06:19:24 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org, peterx@redhat.com, pbonzini@redhat.com, alex.williamson@redhat.com Date: Thu, 11 Jul 2019 08:18:57 +0200 Message-Id: <20190711061857.13086-6-eric.auger@redhat.com> In-Reply-To: <20190711061857.13086-1-eric.auger@redhat.com> References: <20190711061857.13086-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 11 Jul 2019 06:19:31 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH-for-4.2 v3 5/5] hw/arm/smmuv3: Remove spurious error messages on IOVA invalidations X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" An IOVA/ASID invalidation is notified to all IOMMU Memory Regions through smmuv3_inv_notifiers_iova/smmuv3_notify_iova. When the notification occurs it is possible that some of the PCIe devices associated to the notified regions do not have a valid stream table entry. In that case we output a LOG_GUEST_ERROR message, for example: invalid sid=3D (L1STD span=3D0) "smmuv3_notify_iova error decoding the configuration for iommu mr=3D This is unfortunate as the user gets the impression that there are some translation decoding errors whereas there are not. This patch adds a new field in SMMUEventInfo that tells whether the detection of an invalid STE must lead to an error report. invalid_ste_allowed is set before doing the invalidations and kept unset on actual translation. The other configuration decoding error messages are kept since if the STE is valid then the rest of the config must be correct. Signed-off-by: Eric Auger --- hw/arm/smmuv3-internal.h | 1 + hw/arm/smmuv3.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index b160289cd1..d190181ef1 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -381,6 +381,7 @@ typedef struct SMMUEventInfo { uint32_t sid; bool recorded; bool record_trans_faults; + bool inval_ste_allowed; union { struct { uint32_t ssid; diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 2e270a0f07..517755aed5 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -320,7 +320,9 @@ static int decode_ste(SMMUv3State *s, SMMUTransCfg *cfg, uint32_t config; =20 if (!STE_VALID(ste)) { - qemu_log_mask(LOG_GUEST_ERROR, "invalid STE\n"); + if (!event->inval_ste_allowed) { + qemu_log_mask(LOG_GUEST_ERROR, "invalid STE\n"); + } goto bad_ste; } =20 @@ -405,7 +407,7 @@ static int smmu_find_ste(SMMUv3State *s, uint32_t sid, = STE *ste, =20 span =3D L1STD_SPAN(&l1std); =20 - if (!span) { + if (!span && !event->inval_ste_allowed) { /* l2ptr is not valid */ qemu_log_mask(LOG_GUEST_ERROR, "invalid sid=3D%d (L1STD span=3D0)\n", sid); @@ -603,7 +605,9 @@ static IOMMUTLBEntry smmuv3_translate(IOMMUMemoryRegion= *mr, hwaddr addr, SMMUDevice *sdev =3D container_of(mr, SMMUDevice, iommu); SMMUv3State *s =3D sdev->smmu; uint32_t sid =3D smmu_get_sid(sdev); - SMMUEventInfo event =3D {.type =3D SMMU_EVT_NONE, .sid =3D sid}; + SMMUEventInfo event =3D {.type =3D SMMU_EVT_NONE, + .sid =3D sid, + .inval_ste_allowed =3D false}; SMMUPTWEventInfo ptw_info =3D {}; SMMUTranslationStatus status; SMMUState *bs =3D ARM_SMMU(s); @@ -796,16 +800,13 @@ static void smmuv3_notify_iova(IOMMUMemoryRegion *mr, dma_addr_t iova) { SMMUDevice *sdev =3D container_of(mr, SMMUDevice, iommu); - SMMUEventInfo event =3D {}; + SMMUEventInfo event =3D {.inval_ste_allowed =3D true}; SMMUTransTableInfo *tt; SMMUTransCfg *cfg; IOMMUTLBEntry entry; =20 cfg =3D smmuv3_get_config(sdev, &event); if (!cfg) { - qemu_log_mask(LOG_GUEST_ERROR, - "%s error decoding the configuration for iommu mr=3D= %s\n", - __func__, mr->parent_obj.name); return; } =20 --=20 2.20.1