From patchwork Thu Oct 19 01:10:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Si-Wei Liu X-Patchwork-Id: 155246 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2010:b0:403:3b70:6f57 with SMTP id fe16csp96518vqb; Wed, 18 Oct 2023 18:13:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEPofi1zvnMUrZ95B5PsOWbxMdlgJPAz3cDjtY/sA5I2otCdMYm4V5QIhOLZWI4UrfwCmRS X-Received: by 2002:a17:903:22c6:b0:1c9:cc3a:7bc with SMTP id y6-20020a17090322c600b001c9cc3a07bcmr968624plg.44.1697677994114; Wed, 18 Oct 2023 18:13:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697677994; cv=none; d=google.com; s=arc-20160816; b=hr1y1wubfBTZQA6epWzfGtyh7+uFKCQleN2jyVBqYw18x38A6ipITiyd99lgmozzqw n80coZgRRzAdyp5NA97srGHAJ0GI5/5+kPIA68thCPamGENJZXDT3yAvanXd9DemqFJa cD7SUifFUhpop6XMr+2GRNq28sHrSI7GMJQD/MeM7v9sjUJSRuSpioJ+j4HZK1RpNMrV /+mwbb8cy2MAhZwUMUs9uY/KVyZvc8HVxpPdvT464SxCBccEiCW2ussUSsYcaaYnwm15 0C1HukSmEYrQWTQldTlIoS2tsNHEvOPf8mvcPlqOtniEq45/DmoZ/18Pvkx2Cmu6J2FP nHCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IDcJMsPyKM2GyU6ZB9/xv6m5PTlDgNod8sH4SwkNOK4=; fh=ozy2CkLebIOzbpPF40kmeuF6jbAmH8vZa/HD/EKOE2c=; b=o7SrlY77zCiBH4BU7JH60QpbmrOm/evSoY/Rq9/VRqr2SHHzXTNekSAvBD3ttuDfn8 xDBw3wE0dUKR2AuUAkLl+a6mPRlX3WDnSjQCIOEhaTnjK+VLUTLE1d+5bvkIxfmJUL+/ PABJ7jAahUIwHj75QOJIp4CP2VErkK6dOjZBmm+e4ikuqgJSTwn71M82HvpDLBc5gEcW hjNDwXHD55ODHrlz6zD6wNCaW8YjnEpemz20aCLHDi7qavK0Wk2BwHS8uRiON8XEyVOG 7j/yJyx8HqL4Xt3D2xehGn2I9ojgE7u1ovWn2ErYz0QcWTArWLBs3xPjYl7zQqLpwqWe PbSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=z0MyfC57; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id b5-20020a170902650500b001c4062a0e43si1059845plk.169.2023.10.18.18.13.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 18:13:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=z0MyfC57; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 6C92D81CC85F; Wed, 18 Oct 2023 18:13:13 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232218AbjJSBNJ (ORCPT + 24 others); Wed, 18 Oct 2023 21:13:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232042AbjJSBNI (ORCPT ); Wed, 18 Oct 2023 21:13:08 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A6A512E for ; Wed, 18 Oct 2023 18:13:03 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39IImtCv006120; Thu, 19 Oct 2023 01:12:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2023-03-30; bh=IDcJMsPyKM2GyU6ZB9/xv6m5PTlDgNod8sH4SwkNOK4=; b=z0MyfC57BJET8EO662IqosLoeOfIsbcyafH9SeSUdXPB/2uQ0EN8gkVx5CjtQOEOBaUd BYwMV555SIEovOWW9lTiPMw+7DgYI1WreSdSuKDmDZ+GitDr8iYRvU59ezJ2VdTE7BaT x+C0vQKLx6Z0snijcpMPmi0p5uYW67p56WL6bCk3/QvfZ5PGnApJTKy3p5iP/O8YnJjo nJaFqWTE1+0st3CzEe+uPH4TJpLA7CjsrsW6+d3DswHTWe7AT9g4R3/xW3CBy+uRe8nj F/N12RN0emJAdUJbrIwROm+inIB73u6en5IDHeTf69nBjfb1aFAA3bNIS2e+Qfj1GbIP vA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3tqjynh3n9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 19 Oct 2023 01:12:59 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 39J0UpS1015251; Thu, 19 Oct 2023 01:12:58 GMT Received: from ban25x6uut24.us.oracle.com (ban25x6uut24.us.oracle.com [10.153.73.24]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 3trg1h8w2d-3; Thu, 19 Oct 2023 01:12:58 +0000 From: Si-Wei Liu To: jasowang@redhat.com, mst@redhat.com, eperezma@redhat.com, sgarzare@redhat.com, dtatulea@nvidia.com Cc: virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/5] vhost-vdpa: reset vendor specific mapping to initial state in .release Date: Wed, 18 Oct 2023 18:10:15 -0700 Message-Id: <1697677818-11371-3-git-send-email-si-wei.liu@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1697677818-11371-1-git-send-email-si-wei.liu@oracle.com> References: <1697677818-11371-1-git-send-email-si-wei.liu@oracle.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-19_01,2023-10-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310190007 X-Proofpoint-GUID: RjbT_jVlQfwqzkpHOXDLP1l8Fkz6q7r8 X-Proofpoint-ORIG-GUID: RjbT_jVlQfwqzkpHOXDLP1l8Fkz6q7r8 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 18 Oct 2023 18:13:13 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780144400222931745 X-GMAIL-MSGID: 1780144400222931745 Devices with on-chip IOMMU or vendor specific IOTLB implementation may need to restore iotlb mapping to the initial or default state using the .reset_map op, as it's desirable for some parent devices to solely manipulate mappings by its own, independent of virtio device state. For instance, device reset does not cause mapping go away on such IOTLB model in need of persistent mapping. Before vhost-vdpa is going away, give them a chance to reset iotlb back to the initial state in vhost_vdpa_cleanup(). Signed-off-by: Si-Wei Liu Acked-by: Eugenio PĂ©rez --- drivers/vhost/vdpa.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index 851535f57b95..a3f8160c9807 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -131,6 +131,15 @@ static struct vhost_vdpa_as *vhost_vdpa_find_alloc_as(struct vhost_vdpa *v, return vhost_vdpa_alloc_as(v, asid); } +static void vhost_vdpa_reset_map(struct vhost_vdpa *v, u32 asid) +{ + struct vdpa_device *vdpa = v->vdpa; + const struct vdpa_config_ops *ops = vdpa->config; + + if (ops->reset_map) + ops->reset_map(vdpa, asid); +} + static int vhost_vdpa_remove_as(struct vhost_vdpa *v, u32 asid) { struct vhost_vdpa_as *as = asid_to_as(v, asid); @@ -140,6 +149,13 @@ static int vhost_vdpa_remove_as(struct vhost_vdpa *v, u32 asid) hlist_del(&as->hash_link); vhost_vdpa_iotlb_unmap(v, &as->iotlb, 0ULL, 0ULL - 1, asid); + /* + * Devices with vendor specific IOMMU may need to restore + * iotlb to the initial or default state which is not done + * through device reset, as the IOTLB mapping manipulation + * could be decoupled from the virtio device life cycle. + */ + vhost_vdpa_reset_map(v, asid); kfree(as); return 0;