From nobody Thu May 16 08:40:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1677135664; cv=none; d=zohomail.com; s=zohoarc; b=PSiJZ9s6y7DFC9Eflw9EQkYoDu+UG4M5MvKR9hPyoxcOUHxHLSlCQh872VeJlMd9GrXIydXEaVUQlkOvUA1GXutRFEBDoLKHL2RRwG9F6QgL5aVCpYlNrKqsx5wttLQA7MiAg/XMlBd6O6TpIU+868vDMDsnv7Pppmp6YCZlxhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677135664; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=eu+G64ZS5tJYA2R5AHXZj78YiII72yeTMqB/oKF4b2E=; b=VvqIU6sNL/yddh1pOTNwatmx55uTlUGT1hQpcd44Jlk7AYRadb7jUw4aLzsm2dH6uASTlsXmP1fxiDwk9D1aDOaAuwpEXcwSHjjIo6HNLK++adwUyVhXMJbYNucLOPBP64NvphR98Z0L5vyvBdZT5KIMJnc2vWj/mez6yJ1fOrI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677135664358103.86539844004983; Wed, 22 Feb 2023 23:01:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV5Zu-0007IO-HW; Thu, 23 Feb 2023 01:59:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5Zr-0007BR-JI for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:39 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5Zq-0007xL-3a for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:39 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-63-qZ5UjzG0NmOM-1sb1mkSjA-1; Thu, 23 Feb 2023 01:59:33 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 698841869B6F; Thu, 23 Feb 2023 06:59:33 +0000 (UTC) Received: from localhost.localdomain (ovpn-13-177.pek2.redhat.com [10.72.13.177]) by smtp.corp.redhat.com (Postfix) with ESMTP id 833D7492C14; Thu, 23 Feb 2023 06:59:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677135577; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eu+G64ZS5tJYA2R5AHXZj78YiII72yeTMqB/oKF4b2E=; b=eED6P2m5hEhmnGTlMLGDEHZrdUJ/3XphrkELaoHaHAF+aHrGRyJR6fjafIl+JOyVd+HQnP saR6l/4Q13gfFF4rD2yLI3q9PK1TytNorS07r2kzRymPXYTfmC+oh69LhzBmSTJR3fsLiv zXYEYtcy6q7t+g5YI498Dx2g6F4xePw= X-MC-Unique: qZ5UjzG0NmOM-1sb1mkSjA-1 From: Jason Wang To: mst@redhat.com, peterx@redhat.com Cc: qemu-devel@nongnu.org, eric.auger@redhat.com, viktor@daynix.com, lvivier@redhat.com, Jason Wang Subject: [PATCH V2 1/5] intel-iommu: fail MAP notifier without caching mode Date: Thu, 23 Feb 2023 14:59:20 +0800 Message-Id: <20230223065924.42503-2-jasowang@redhat.com> In-Reply-To: <20230223065924.42503-1-jasowang@redhat.com> References: <20230223065924.42503-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1677135665696100001 Content-Type: text/plain; charset="utf-8" Without caching mode, MAP notifier won't work correctly since guest won't send IOTLB update event when it establishes new mappings in the I/O page tables. Let's fail the IOMMU notifiers early instead of misbehaving silently. Reviewed-by: Eric Auger Tested-by: Viktor Prutyanov Signed-off-by: Jason Wang Reviewed-by: Peter Xu --- hw/i386/intel_iommu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 98a5c304a7..0de3e31577 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3186,6 +3186,13 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemory= Region *iommu, "Snoop Control with vhost or VFIO is not supporte= d"); return -ENOTSUP; } + if (!s->caching_mode && (new & IOMMU_NOTIFIER_MAP)) { + error_setg_errno(errp, ENOTSUP, + "device %02x.%02x.%x requires caching mode", + pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn), + PCI_FUNC(vtd_as->devfn)); + return -ENOTSUP; + } =20 /* Update per-address-space notifier flags */ vtd_as->notifier_flags =3D new; --=20 2.25.1 From nobody Thu May 16 08:40:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1677135609; cv=none; d=zohomail.com; s=zohoarc; b=FHNdDXs1bg2Lw4rRxkQ6RWOjumFeKl9YAgIAm/ZCwM0zM3jSFDV0undgEERJnAASTWGBy+0yXDQnXLRpUS1Lr6UtsL/Dx95ZYupzSnSYcjHZxOiJi+HzAIypW7k/onEHuXNHUEzCzKpExhlhGjDVs6T28JruNlBzFc+lff1usdI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677135609; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=IqH5blnrQbgPbs8AVMt2lNSKBQgqB5uiGkqdFUOgQb8=; b=gAXL0uk65WftasuO+cXEM4f4JP85nxwXoH38dQvRrFA3G8B2f3lyuHsYBA2mVQp95iPGOQklVcFSN3WjeX6d0B97BgPS2Ax3QL3dUN+Qf4lfeVbFxketoehA54Ii896HiypInkQLu4pkzp2h4/rsisM+x7yb67B9Nesxi2hZ1K4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677135609897519.6855553621245; Wed, 22 Feb 2023 23:00:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV5Zw-0007MQ-ID; Thu, 23 Feb 2023 01:59:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5Zu-0007Iy-MS for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5Zt-0007xw-3F for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:42 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-267-W_jPolQLO4Sd3wWY3g9eLQ-1; Thu, 23 Feb 2023 01:59:37 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F221B85A588; Thu, 23 Feb 2023 06:59:36 +0000 (UTC) Received: from localhost.localdomain (ovpn-13-177.pek2.redhat.com [10.72.13.177]) by smtp.corp.redhat.com (Postfix) with ESMTP id 142FE492C14; Thu, 23 Feb 2023 06:59:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677135580; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IqH5blnrQbgPbs8AVMt2lNSKBQgqB5uiGkqdFUOgQb8=; b=h2cYm5I5eEOBeSy7wTIs8UsFoLBDr1/7dwTIACA6FS3eg5L0olJaKPRmiIbytTNPxqb50D WlSEHMY13muA+J8B4FJpLz3RbFObsiRxWmQud4ISLx3cl8Uh+6bqHTukeDZON1kh5SIzGj tVZK+e6jY7soaYZ3RbZjz5nd+ZdwMIw= X-MC-Unique: W_jPolQLO4Sd3wWY3g9eLQ-1 From: Jason Wang To: mst@redhat.com, peterx@redhat.com Cc: qemu-devel@nongnu.org, eric.auger@redhat.com, viktor@daynix.com, lvivier@redhat.com, Jason Wang Subject: [PATCH V2 2/5] intel-iommu: fail DEVIOTLB_UNMAP without dt mode Date: Thu, 23 Feb 2023 14:59:21 +0800 Message-Id: <20230223065924.42503-3-jasowang@redhat.com> In-Reply-To: <20230223065924.42503-1-jasowang@redhat.com> References: <20230223065924.42503-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1677135611351100001 Content-Type: text/plain; charset="utf-8" Without dt mode, device IOTLB notifier won't work since guest won't send device IOTLB invalidation descriptor in this case. Let's fail early instead of misbehaving silently. Reviewed-by: Laurent Vivier Tested-by: Laurent Vivier Tested-by: Viktor Prutyanov Buglink: https://bugzilla.redhat.com/2156876 Signed-off-by: Jason Wang Reviewed-by: Peter Xu --- hw/i386/intel_iommu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 0de3e31577..f006fa6031 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3179,6 +3179,7 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryR= egion *iommu, { VTDAddressSpace *vtd_as =3D container_of(iommu, VTDAddressSpace, iommu= ); IntelIOMMUState *s =3D vtd_as->iommu_state; + X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); =20 /* TODO: add support for VFIO and vhost users */ if (s->snoop_control) { @@ -3193,6 +3194,13 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemory= Region *iommu, PCI_FUNC(vtd_as->devfn)); return -ENOTSUP; } + if (!x86_iommu->dt_supported && (new & IOMMU_NOTIFIER_DEVIOTLB_UNMAP))= { + error_setg_errno(errp, ENOTSUP, + "device %02x.%02x.%x requires device IOTLB mode", + pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn), + PCI_FUNC(vtd_as->devfn)); + return -ENOTSUP; + } =20 /* Update per-address-space notifier flags */ vtd_as->notifier_flags =3D new; --=20 2.25.1 From nobody Thu May 16 08:40:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1677135603; cv=none; d=zohomail.com; s=zohoarc; b=m0yCX9ETlE/4krR5mlfmb70oVCYd4J/nIQr51sICDFhpt6SBSijI33WqaqmVhuaufbd8MAiV8S1C6jzMp1lAi7q+Piiy9EpPosAu89yvJDsxLx0/+QFAx8WcEcYXBHxib6q+2ruiAS50+DzbjV5itktAFGshX198fLRY7l6ez3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677135603; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=xesQp6pZHlpNDrX2aVp+NhWkGjKbdxyW9FP/g1FhVtE=; b=Nypc1JWNstIj98hyckr3u/8QXOuOebBoAVGJTW57NL58B0EpLukqubdWyP0r1P0XKC+p1DSSka4B1ph9CCoSDjNgmuEcTfDrgUvLAf0PYfLPo1IEsVzgrfI+coJX4dAZofBGWQ47yxNKa0AVGvwIR+CL8SoZIccJDBg3gYmGz0Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167713560348352.316782925745656; Wed, 22 Feb 2023 23:00:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV5a4-0007S0-Vy; Thu, 23 Feb 2023 01:59:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5a2-0007QK-S5 for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5Zx-0007yS-SW for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:47 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-441-vAb4Y8bKNymqLFw7GtUYaQ-1; Thu, 23 Feb 2023 01:59:41 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 90675802C18; Thu, 23 Feb 2023 06:59:40 +0000 (UTC) Received: from localhost.localdomain (ovpn-13-177.pek2.redhat.com [10.72.13.177]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9CB22492C14; Thu, 23 Feb 2023 06:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677135585; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xesQp6pZHlpNDrX2aVp+NhWkGjKbdxyW9FP/g1FhVtE=; b=O8i7ZeWyKiBvvW5ehLLTyga2mrCBN3xthHcLeIIY9IkdkKxYNUJMLA1bStQm4s5yyVsX0F BvuvX0/pNbsizx12/R63/mhi6issHoh8VX2q9/Nxc7rdAGL8q6Fpx+c8SPgEfvLju7fLfk vmSgFzxGzAy/HRLgvp1B2F+6g8AdFrk= X-MC-Unique: vAb4Y8bKNymqLFw7GtUYaQ-1 From: Jason Wang To: mst@redhat.com, peterx@redhat.com Cc: qemu-devel@nongnu.org, eric.auger@redhat.com, viktor@daynix.com, lvivier@redhat.com, Jason Wang Subject: [PATCH V2 3/5] memory: introduce memory_region_unmap_iommu_notifier_range() Date: Thu, 23 Feb 2023 14:59:22 +0800 Message-Id: <20230223065924.42503-4-jasowang@redhat.com> In-Reply-To: <20230223065924.42503-1-jasowang@redhat.com> References: <20230223065924.42503-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1677135605392100001 Content-Type: text/plain; charset="utf-8" This patch introduces a new helper to unmap the range of a specific IOMMU notifier. Signed-off-by: Jason Wang Reviewed-by: Peter Xu --- include/exec/memory.h | 10 ++++++++++ softmmu/memory.c | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 2e602a2fad..6fa0b071f0 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -1731,6 +1731,16 @@ void memory_region_notify_iommu(IOMMUMemoryRegion *i= ommu_mr, void memory_region_notify_iommu_one(IOMMUNotifier *notifier, IOMMUTLBEvent *event); =20 +/** + * memory_region_unmap_iommu_notifier_range: notify a unmap for an IOMMU + * translation that covers the + * range of a notifier + * + * @notifier: the notifier to be notified + */ +void memory_region_unmap_iommu_notifier_range(IOMMUNotifier *n); + + /** * memory_region_register_iommu_notifier: register a notifier for changes = to * IOMMU translation entries. diff --git a/softmmu/memory.c b/softmmu/memory.c index 9d64efca26..ba43b4474e 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1996,6 +1996,19 @@ void memory_region_notify_iommu_one(IOMMUNotifier *n= otifier, } } =20 +void memory_region_unmap_iommu_notifier_range(IOMMUNotifier *n) +{ + IOMMUTLBEvent event; + + event.type =3D IOMMU_NOTIFIER_UNMAP; + event.entry.target_as =3D &address_space_memory; + event.entry.iova =3D n->start; + event.entry.perm =3D IOMMU_NONE; + event.entry.addr_mask =3D n->end - n->start; + + memory_region_notify_iommu_one(n, &event); +} + void memory_region_notify_iommu(IOMMUMemoryRegion *iommu_mr, int iommu_idx, IOMMUTLBEvent event) --=20 2.25.1 From nobody Thu May 16 08:40:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1677135617; cv=none; d=zohomail.com; s=zohoarc; b=Hfvbus0aORAMXlQoSpoQhLMjtt8rLFrn/yxzaxytq8CDCseq7PsulumVlaKzQjGPwfEmdErKrcQZrH1SMMWqjh/1JseE5hIcif9VX+WNYdf37a+OtF2sXJNDTf4ROm0puD+Atw+KfUQEa8sd9Fjqzm9TXvUa/DVgy8NUZrNWyPA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677135617; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=3UTsANcpPIyRjgl7LVIOwBXF4w6EWQImdRn6AA4l/RY=; b=UwFJeOyG/LWE1wCWqj8jnpjAHR2kiXpDm9MoUVg4E1R1wWuiXM/+gLhHHtsbPTRiGMSJJJ8E2RuQBrmfFnoowRTaBXRV1CCxMKGAClDxGMwVZW46qfi5mtWtkuyDJx3C9ppxBagtFxTXcSofecfeWjTqoEF1rJI5S1fNreGXx4s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677135617210183.59042018755645; Wed, 22 Feb 2023 23:00:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV5a5-0007UG-SD; Thu, 23 Feb 2023 01:59:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5a3-0007RO-V5 for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5a2-0007yf-HT for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:51 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-591-edcH5h6qOI2f3B_YLIf_Xg-1; Thu, 23 Feb 2023 01:59:44 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4EFA7802C18; Thu, 23 Feb 2023 06:59:44 +0000 (UTC) Received: from localhost.localdomain (ovpn-13-177.pek2.redhat.com [10.72.13.177]) by smtp.corp.redhat.com (Postfix) with ESMTP id 44047492C14; Thu, 23 Feb 2023 06:59:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677135586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3UTsANcpPIyRjgl7LVIOwBXF4w6EWQImdRn6AA4l/RY=; b=gTRE6tL5CbktwfKGyExUU9lEdvEXzubBbBvClKai9g86J+B6uGaw6sa19CtqGfRKwnsl7n JCmvfMp86X++C4y0v0vlhzWwpGF4JKG8JtPpRWyHv2xzIVoMc3w3oSTo9+W08GoQxxvL0k XyTmh6wXw9TFnOrtCP+FGOPLCrKfEEQ= X-MC-Unique: edcH5h6qOI2f3B_YLIf_Xg-1 From: Jason Wang To: mst@redhat.com, peterx@redhat.com Cc: qemu-devel@nongnu.org, eric.auger@redhat.com, viktor@daynix.com, lvivier@redhat.com, Jason Wang Subject: [PATCH V2 4/5] smmu: switch to use memory_region_unmap_iommu_notifier_range() Date: Thu, 23 Feb 2023 14:59:23 +0800 Message-Id: <20230223065924.42503-5-jasowang@redhat.com> In-Reply-To: <20230223065924.42503-1-jasowang@redhat.com> References: <20230223065924.42503-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1677135619363100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jason Wang Reviewed-by: Peter Xu --- hw/arm/smmu-common.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 733c964778..5e2847d511 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -467,20 +467,6 @@ IOMMUMemoryRegion *smmu_iommu_mr(SMMUState *s, uint32_= t sid) return NULL; } =20 -/* Unmap the whole notifier's range */ -static void smmu_unmap_notifier_range(IOMMUNotifier *n) -{ - IOMMUTLBEvent event; - - event.type =3D IOMMU_NOTIFIER_UNMAP; - event.entry.target_as =3D &address_space_memory; - event.entry.iova =3D n->start; - event.entry.perm =3D IOMMU_NONE; - event.entry.addr_mask =3D n->end - n->start; - - memory_region_notify_iommu_one(n, &event); -} - /* Unmap all notifiers attached to @mr */ static void smmu_inv_notifiers_mr(IOMMUMemoryRegion *mr) { @@ -488,7 +474,7 @@ static void smmu_inv_notifiers_mr(IOMMUMemoryRegion *mr) =20 trace_smmu_inv_notifiers_mr(mr->parent_obj.name); IOMMU_NOTIFIER_FOREACH(n, mr) { - smmu_unmap_notifier_range(n); + memory_region_unmap_iommu_notifier_range(n); } } =20 --=20 2.25.1 From nobody Thu May 16 08:40:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1677135636; cv=none; d=zohomail.com; s=zohoarc; b=ZmRuws61i3OihXNtnQBkyTEn8QhzJLzn7hDCb7Twr3pzVfYZOSEjlKP4i5bjkGj3A95Y9gIdfYZTxirwSLXms877WweK0d/3X/wAO/u6LWGeOVcpK9nqFVXNsS1AB3dTmuCy7j/YiXVI2/ra+g11MOGd90WoylTfYMjun5SNB04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677135636; h=Content-Type:Content-Transfer-Encoding:Cc: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; bh=qCuTi4UphobknUO5bPPv7X7Xkm80hrUItoZQ0qd+gdE=; b=XBqTKknqNwxsJEFttNb580Ozyxje4xA6ylHILF66iqVYUQnTQorF92CMABOuGo03nmXap82F4P1rwJb+OIL0ZMLFTfjisWBLgEEuy4YE6VZ3H8h+7vm4YEnOnkvcSm8Dd79CZpIrG/JUZAmExMRr6LGZ/YEq0H1xSrVmD/1Oel8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677135636774232.56039922540515; Wed, 22 Feb 2023 23:00:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV5a6-0007Vc-Ox; Thu, 23 Feb 2023 01:59:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5a5-0007Tw-Gk for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV5a3-0007zT-RE for qemu-devel@nongnu.org; Thu, 23 Feb 2023 01:59:53 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-3-Nvah_j4zPCeqwltrJpxQaw-1; Thu, 23 Feb 2023 01:59:48 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2745D85CCE0; Thu, 23 Feb 2023 06:59:48 +0000 (UTC) Received: from localhost.localdomain (ovpn-13-177.pek2.redhat.com [10.72.13.177]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0A54E492C14; Thu, 23 Feb 2023 06:59:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677135591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qCuTi4UphobknUO5bPPv7X7Xkm80hrUItoZQ0qd+gdE=; b=MFL9pdNKo9W8oMG3dkBDGiVls4gBniU03tqFraLsQgyiLYkF4SRZu4CdJs6bPYUZI//Sfr LWF/oKyquvZQzOqWjHvCoiByPklpxjmSFhqX12ZzQ4Ibkq7PTyqWlHSPOEh1aT04v8an7C 50gp8TZ8Yo72ILd/oIrrYrpjSs9QaUo= X-MC-Unique: Nvah_j4zPCeqwltrJpxQaw-1 From: Jason Wang To: mst@redhat.com, peterx@redhat.com Cc: qemu-devel@nongnu.org, eric.auger@redhat.com, viktor@daynix.com, lvivier@redhat.com, Jason Wang Subject: [PATCH V2 5/5] intel-iommu: send UNMAP notifications for domain or global inv desc Date: Thu, 23 Feb 2023 14:59:24 +0800 Message-Id: <20230223065924.42503-6-jasowang@redhat.com> In-Reply-To: <20230223065924.42503-1-jasowang@redhat.com> References: <20230223065924.42503-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1677135637615100001 Content-Type: text/plain; charset="utf-8" From: Peter Xu We don't send UNMAP notification upon domain or global invalidation which will lead the notifier can't work correctly. One example is to use vhost remote IOTLB without enabling device IOTLB. Fixing this by sending UNMAP notification. Signed-off-by: Peter Xu Signed-off-by: Jason Wang Reviewed-by: Peter Xu --- hw/i386/intel_iommu.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index f006fa6031..a62896759c 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1530,13 +1530,17 @@ static int vtd_sync_shadow_page_table_range(VTDAddr= essSpace *vtd_as, return vtd_page_walk(s, ce, addr, addr + size, &info, vtd_as->pasid); } =20 -static int vtd_sync_shadow_page_table(VTDAddressSpace *vtd_as) +static int vtd_address_space_sync(VTDAddressSpace *vtd_as) { int ret; VTDContextEntry ce; IOMMUNotifier *n; =20 - if (!(vtd_as->iommu.iommu_notify_flags & IOMMU_NOTIFIER_IOTLB_EVENTS))= { + /* If no MAP notifier registered, we simply invalidate all the cache */ + if (!vtd_as_has_map_notifier(vtd_as)) { + IOMMU_NOTIFIER_FOREACH(n, &vtd_as->iommu) { + memory_region_unmap_iommu_notifier_range(n); + } return 0; } =20 @@ -2000,7 +2004,7 @@ static void vtd_iommu_replay_all(IntelIOMMUState *s) VTDAddressSpace *vtd_as; =20 QLIST_FOREACH(vtd_as, &s->vtd_as_with_notifiers, next) { - vtd_sync_shadow_page_table(vtd_as); + vtd_address_space_sync(vtd_as); } } =20 @@ -2082,7 +2086,7 @@ static void vtd_context_device_invalidate(IntelIOMMUS= tate *s, * framework will skip MAP notifications if that * happened. */ - vtd_sync_shadow_page_table(vtd_as); + vtd_address_space_sync(vtd_as); } } } @@ -2140,7 +2144,7 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUSta= te *s, uint16_t domain_id) if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus), vtd_as->devfn, &ce) && domain_id =3D=3D vtd_get_domain_id(s, &ce, vtd_as->pasid)) { - vtd_sync_shadow_page_table(vtd_as); + vtd_address_space_sync(vtd_as); } } } --=20 2.25.1