From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6344BC0032E for ; Sat, 21 Oct 2023 09:28:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id A4A1E4F0CA; Sat, 21 Oct 2023 09:28:31 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org A4A1E4F0CA Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-03-30 header.b=i2dc6FI5 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zY1NKkhmxp4D; Sat, 21 Oct 2023 09:28:27 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 06F044F0D2; Sat, 21 Oct 2023 09:28:27 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 06F044F0D2 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 174B8C0DD7; Sat, 21 Oct 2023 09:28:26 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 14486C0DD5 for ; Sat, 21 Oct 2023 09:28:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id D3BDD61478 for ; Sat, 21 Oct 2023 09:28:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org D3BDD61478 Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-03-30 header.b=i2dc6FI5 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qkP5VwRJoUYt for ; Sat, 21 Oct 2023 09:28:23 +0000 (UTC) Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by smtp3.osuosl.org (Postfix) with ESMTPS id EA77961288 for ; Sat, 21 Oct 2023 09:28:22 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org EA77961288 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39L5xAlM017524; Sat, 21 Oct 2023 09:28:22 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=9k2d/53CGD70zPcIiDbCkVndsu3gKKkDw/PStLhE0u4=; b=i2dc6FI57+dY0rmhyAKqtVLjzrSqTeE1x7w1h4zzMdHFEFvuL3VPofdox1zF0F5SgLRL qx7jlUfD4HBwgA0V9UjzLzBpqx15uC15Ni5MQog0zAtVYN6ToOFmbEBny4cX4h+rHG9J 4cDt2ikXWzrbu4XYup6zfhT48z2tmMsgltuxxM/+Ephv08rUQEMVkVzD7cuKStWzE8mV 9ZlJOqe/zHaMMNvvvNnaGIIqoAYww8yIvfy3yMkfX06oJlGvMloYExE2qDZnGK5Ej7So MukBTWFjvv04HRXPrXI1Q2Helzobd3tAlAhMcRj5MSZ07gcedDvUeLkNLzLny+rVyteA Hw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3tv76u0ce9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 21 Oct 2023 09:28:21 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 39L6FU6F019120; Sat, 21 Oct 2023 09:28:20 GMT Received: from ban25x6uut24.us.oracle.com (ban25x6uut24.us.oracle.com [10.153.73.24]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 3tv532gf44-4; Sat, 21 Oct 2023 09:28:20 +0000 From: Si-Wei Liu To: jasowang@redhat.com, mst@redhat.com, eperezma@redhat.com, sgarzare@redhat.com, dtatulea@nvidia.com Subject: [PATCH v4 3/7] vhost-vdpa: introduce IOTLB_PERSIST backend feature bit Date: Sat, 21 Oct 2023 02:25:15 -0700 Message-Id: <1697880319-4937-4-git-send-email-si-wei.liu@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1697880319-4937-1-git-send-email-si-wei.liu@oracle.com> References: <1697880319-4937-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-20_10,2023-10-19_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 bulkscore=0 mlxscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2310170001 definitions=main-2310210086 X-Proofpoint-GUID: l2G47ZhkMO855DXzzu_-8ZUWp845ufay X-Proofpoint-ORIG-GUID: l2G47ZhkMO855DXzzu_-8ZUWp845ufay Cc: linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" VXNlcnNwYWNlIG5lZWRzIHRoaXMgZmVhdHVyZSBmbGFnIHRvIGRpc3Rpbmd1aXNoIGlmIHZob3N0 LXZkcGEgaW90bGIgaW4KdGhlIGtlcm5lbCBjYW4gYmUgdHJ1c3RlZCB0byBwZXJzaXN0IElPVExC IG1hcHBpbmcgYWNyb3NzIHZEUEEgcmVzZXQuCldpdGhvdXQgaXQsIHVzZXJzcGFjZSBoYXMgbm8g d2F5IHRvIHRlbGwgYXBhcnQgaWYgaXQncyBydW5uaW5nIG9uIGFuCm9sZGVyIGtlcm5lbCwgd2hp Y2ggY291bGQgc2lsZW50bHkgZHJvcCBhbGwgaW90bGIgbWFwcGluZyBhY3Jvc3MgdkRQQQpyZXNl dCwgZXNwZWNpYWxseSB3aXRoIGJyb2tlbiBwYXJlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZv ciB0aGUKLnJlc2V0IGRyaXZlciBvcC4gVGhlIGJyb2tlbiBkcml2ZXIgbWF5IGluY29ycmVjdGx5 IGRyb3AgYWxsIG1hcHBpbmdzIG9mCml0cyBvd24gYXMgcGFydCBvZiAucmVzZXQsIHdoaWNoIGlu YWR2ZXJ0ZW50bHkgZW5kcyB1cCB3aXRoIGNvcnJ1cHRlZAptYXBwaW5nIHN0YXRlIGJldHdlZW4g dmhvc3QtdmRwYSB1c2Vyc3BhY2UgYW5kIHRoZSBrZXJuZWwuIEFzIGEKd29ya2Fyb3VuZCwgdG8g bWFrZSB0aGUgbWFwcGluZyBiZWhhdmlvdXIgcHJlZGljdGFibGUgYWNyb3NzIHJlc2V0LAp1c2Vy c3BhY2UgaGFzIHRvIHByby1hY3RpdmVseSByZW1vdmUgYWxsIG1hcHBpbmdzIGJlZm9yZSB2RFBB IHJlc2V0LCBhbmQKdGhlbiByZXN0b3JlIGFsbCB0aGUgbWFwcGluZ3MgYWZ0ZXJ3YXJkcy4gVGhp cyB3b3JrYXJvdW5kIGlzIGRvbmUKdW5jb25kaXRpb25hbGx5IG9uIHRvcCBvZiBhbGwgcGFyZW50 IGRyaXZlcnMgdG9kYXksIGR1ZSB0byB0aGUgcGFyZW50CmRyaXZlciBpbXBsZW1lbnRhdGlvbiBp c3N1ZSBhbmQgbm8gbWVhbnMgdG8gZGlmZmVyZW50aWF0ZS4gIFRoaXMKd29ya2Fyb3VuZCBoYWQg YmVlbiB1dGlsaXplZCBpbiBRRU1VIHNpbmNlIGRheSBvbmUgd2hlbiB0aGUKY29ycmVzcG9uZGlu ZyB2aG9zdC12ZHBhIHVzZXJzcGFjZSBiYWNrZW5kIGNhbWUgdG8gdGhlIHdvcmxkLgoKVGhlcmUg YXJlIDMgY2FzZXMgdGhhdCBiYWNrZW5kIG1heSBjbGFpbSB0aGlzIGZlYXR1cmUgYml0IG9uIGZv cjoKCi0gcGFyZW50IGRldmljZSB0aGF0IGhhcyB0byB3b3JrIHdpdGggcGxhdGZvcm0gSU9NTVUK LSBwYXJlbnQgZGV2aWNlIHdpdGggb24tY2hpcCBJT01NVSB0aGF0IGhhcyB0aGUgZXhwZWN0ZWQK ICAucmVzZXRfbWFwIHN1cHBvcnQgaW4gZHJpdmVyCi0gcGFyZW50IGRldmljZSB3aXRoIHZlbmRv ciBzcGVjaWZpYyBJT01NVSBpbXBsZW1lbnRhdGlvbiB3aXRoCiAgcGVyc2lzdGVudCBJT1RMQiBt YXBwaW5nIGFscmVhZHkgdGhhdCBoYXMgdG8gc3BlY2lmaWNhbGx5CiAgZGVjbGFyZSB0aGlzIGJh Y2tlbmQgZmVhdHVyZQoKVGhlIHJlYXNvbiB3aHkgLnJlc2V0X21hcCBpcyBiZWluZyBvbmUgb2Yg dGhlIHByZS1jb25kaXRpb24gZm9yCnBlcnNpc3RlbnQgaW90bGIgaXMgYmVjYXVzZSB3aXRob3V0 IGl0LCB2aG9zdC12ZHBhIGNhbid0IHN3aXRjaCBiYWNrCmlvdGxiIHRvIHRoZSBpbml0aWFsIHN0 YXRlIGxhdGVyIG9uLCBlc3BlY2lhbGx5IGZvciB0aGUgb24tY2hpcCBJT01NVQpjYXNlIHdoaWNo IHN0YXJ0cyB3aXRoIGlkZW50aXR5IG1hcHBpbmcgYXQgZGV2aWNlIGNyZWF0aW9uLiB2aXJ0aW8t dmRwYQpyZXF1aXJlcyBvbi1jaGlwIElPTU1VIHRvIHBlcmZvcm0gMToxIHBhc3N0aHJvdWdoIHRy YW5zbGF0aW9uIGZyb20gUEEgdG8KSU9WQSBhcy1pcyB0byBiZWdpbiB3aXRoLCBhbmQgLnJlc2V0 X21hcCBpcyB0aGUgb25seSBtZWFucyB0byB0dXJuIGJhY2sKaW90bGIgdG8gdGhlIGlkZW50aXR5 IG1hcHBpbmcgbW9kZSBhZnRlciB2aG9zdC12ZHBhIGlzIGdvbmUuCgpUaGUgZGlmZmVyZW5jZSBp biBiZWhhdmlvciBkaWQgbm90IG1hdHRlciBhcyBRRU1VIHVubWFwcyBhbGwgdGhlIG1lbW9yeQp1 bnJlZ2lzdGVyaW5nIHRoZSBtZW1vcnkgbGlzdGVuZXIgYXQgdmhvc3RfdmRwYV9kZXZfc3RhcnQo IHN0YXJ0ZWQgPQpmYWxzZSksIGJ1dCB0aGUgYmFja2VuZCBhY2tub3dsZWRnaW5nIHRoaXMgZmVh dHVyZSBmbGFnIGFsbG93cyBRRU1VIHRvCm1ha2Ugc3VyZSBpdCBpcyBzYWZlIHRvIHNraXAgdGhp cyB1bm1hcCAmIG1hcCBpbiB0aGUgY2FzZSBvZiB2aG9zdCBzdG9wCiYgc3RhcnQgY3ljbGUuCgpJ biB0aGF0IHNlbnNlLCB0aGlzIGZlYXR1cmUgZmxhZyBpcyBhY3R1YWxseSBhIHNpZ25hbCBmb3Ig dXNlcnNwYWNlIHRvCmtub3cgdGhhdCB0aGUgZHJpdmVyIGJ1ZyBoYXMgYmVlbiBzb2x2ZWQuIE5v dCBvZmZlcmluZyBpdCBpbmRpY2F0ZXMgdGhhdAp1c2Vyc3BhY2UgY2Fubm90IHRydXN0IHRoZSBr ZXJuZWwgd2lsbCByZXRhaW4gdGhlIG1hcHMuCgpTaWduZWQtb2ZmLWJ5OiBTaS1XZWkgTGl1IDxz aS13ZWkubGl1QG9yYWNsZS5jb20+CkFja2VkLWJ5OiBFdWdlbmlvIFDDqXJleiA8ZXBlcmV6bWFA cmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL3Zob3N0L3ZkcGEuYyAgICAgICAgICAgICB8IDE1ICsr KysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L3Zob3N0X3R5cGVzLmggfCAgMiArKwog MiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92 aG9zdC92ZHBhLmMgYi9kcml2ZXJzL3Zob3N0L3ZkcGEuYwppbmRleCBjNmJmZTliZGRlNDIuLmFj YzdjNzRiYTdkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aG9zdC92ZHBhLmMKKysrIGIvZHJpdmVy cy92aG9zdC92ZHBhLmMKQEAgLTQzOSw2ICs0MzksMTUgQEAgc3RhdGljIHU2NCB2aG9zdF92ZHBh X2dldF9iYWNrZW5kX2ZlYXR1cmVzKGNvbnN0IHN0cnVjdCB2aG9zdF92ZHBhICp2KQogCQlyZXR1 cm4gb3BzLT5nZXRfYmFja2VuZF9mZWF0dXJlcyh2ZHBhKTsKIH0KIAorc3RhdGljIGJvb2wgdmhv c3RfdmRwYV9oYXNfcGVyc2lzdGVudF9tYXAoY29uc3Qgc3RydWN0IHZob3N0X3ZkcGEgKnYpCit7 CisJc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhID0gdi0+dmRwYTsKKwljb25zdCBzdHJ1Y3QgdmRw YV9jb25maWdfb3BzICpvcHMgPSB2ZHBhLT5jb25maWc7CisKKwlyZXR1cm4gKCFvcHMtPnNldF9t YXAgJiYgIW9wcy0+ZG1hX21hcCkgfHwgb3BzLT5yZXNldF9tYXAgfHwKKwkgICAgICAgdmhvc3Rf dmRwYV9nZXRfYmFja2VuZF9mZWF0dXJlcyh2KSAmIEJJVF9VTEwoVkhPU1RfQkFDS0VORF9GX0lP VExCX1BFUlNJU1QpOworfQorCiBzdGF0aWMgbG9uZyB2aG9zdF92ZHBhX3NldF9mZWF0dXJlcyhz dHJ1Y3Qgdmhvc3RfdmRwYSAqdiwgdTY0IF9fdXNlciAqZmVhdHVyZXApCiB7CiAJc3RydWN0IHZk cGFfZGV2aWNlICp2ZHBhID0gdi0+dmRwYTsKQEAgLTcyNiw2ICs3MzUsNyBAQCBzdGF0aWMgbG9u ZyB2aG9zdF92ZHBhX3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlcCwKIAkJCXJldHVy biAtRUZBVUxUOwogCQlpZiAoZmVhdHVyZXMgJiB+KFZIT1NUX1ZEUEFfQkFDS0VORF9GRUFUVVJF UyB8CiAJCQkJIEJJVF9VTEwoVkhPU1RfQkFDS0VORF9GX0RFU0NfQVNJRCkgfAorCQkJCSBCSVRf VUxMKFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9QRVJTSVNUKSB8CiAJCQkJIEJJVF9VTEwoVkhPU1Rf QkFDS0VORF9GX1NVU1BFTkQpIHwKIAkJCQkgQklUX1VMTChWSE9TVF9CQUNLRU5EX0ZfUkVTVU1F KSB8CiAJCQkJIEJJVF9VTEwoVkhPU1RfQkFDS0VORF9GX0VOQUJMRV9BRlRFUl9EUklWRVJfT0sp KSkKQEAgLTc0Miw2ICs3NTIsOSBAQCBzdGF0aWMgbG9uZyB2aG9zdF92ZHBhX3VubG9ja2VkX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxlcCwKIAkJaWYgKChmZWF0dXJlcyAmIEJJVF9VTEwoVkhPU1Rf QkFDS0VORF9GX0RFU0NfQVNJRCkpICYmCiAJCSAgICAgIXZob3N0X3ZkcGFfaGFzX2Rlc2NfZ3Jv dXAodikpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJCWlmICgoZmVhdHVyZXMgJiBCSVRfVUxM KFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9QRVJTSVNUKSkgJiYKKwkJICAgICAhdmhvc3RfdmRwYV9o YXNfcGVyc2lzdGVudF9tYXAodikpCisJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJCXZob3N0X3Nl dF9iYWNrZW5kX2ZlYXR1cmVzKCZ2LT52ZGV2LCBmZWF0dXJlcyk7CiAJCXJldHVybiAwOwogCX0K QEAgLTc5Nyw2ICs4MTAsOCBAQCBzdGF0aWMgbG9uZyB2aG9zdF92ZHBhX3VubG9ja2VkX2lvY3Rs KHN0cnVjdCBmaWxlICpmaWxlcCwKIAkJCWZlYXR1cmVzIHw9IEJJVF9VTEwoVkhPU1RfQkFDS0VO RF9GX1JFU1VNRSk7CiAJCWlmICh2aG9zdF92ZHBhX2hhc19kZXNjX2dyb3VwKHYpKQogCQkJZmVh dHVyZXMgfD0gQklUX1VMTChWSE9TVF9CQUNLRU5EX0ZfREVTQ19BU0lEKTsKKwkJaWYgKHZob3N0 X3ZkcGFfaGFzX3BlcnNpc3RlbnRfbWFwKHYpKQorCQkJZmVhdHVyZXMgfD0gQklUX1VMTChWSE9T VF9CQUNLRU5EX0ZfSU9UTEJfUEVSU0lTVCk7CiAJCWZlYXR1cmVzIHw9IHZob3N0X3ZkcGFfZ2V0 X2JhY2tlbmRfZmVhdHVyZXModik7CiAJCWlmIChjb3B5X3RvX3VzZXIoZmVhdHVyZXAsICZmZWF0 dXJlcywgc2l6ZW9mKGZlYXR1cmVzKSkpCiAJCQlyID0gLUVGQVVMVDsKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9saW51eC92aG9zdF90eXBlcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3Zob3N0 X3R5cGVzLmgKaW5kZXggMThhZDZhZTdhYjVjLi5kNzY1NjkwOGY3MzAgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvdWFwaS9saW51eC92aG9zdF90eXBlcy5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92 aG9zdF90eXBlcy5oCkBAIC0xOTAsNSArMTkwLDcgQEAgc3RydWN0IHZob3N0X3ZkcGFfaW92YV9y YW5nZSB7CiAgKiBidWZmZXJzIG1heSByZXNpZGUuIFJlcXVpcmVzIFZIT1NUX0JBQ0tFTkRfRl9J T1RMQl9BU0lELgogICovCiAjZGVmaW5lIFZIT1NUX0JBQ0tFTkRfRl9ERVNDX0FTSUQgICAgMHg3 CisvKiBJT1RMQiBkb24ndCBmbHVzaCBtZW1vcnkgbWFwcGluZyBhY3Jvc3MgZGV2aWNlIHJlc2V0 ICovCisjZGVmaW5lIFZIT1NUX0JBQ0tFTkRfRl9JT1RMQl9QRVJTSVNUICAweDgKIAogI2VuZGlm Ci0tIAoyLjM5LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51 eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1h bi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B60F7C004C0 for ; Sat, 21 Oct 2023 09:28:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229641AbjJUJ2f (ORCPT ); Sat, 21 Oct 2023 05:28:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230143AbjJUJ22 (ORCPT ); Sat, 21 Oct 2023 05:28:28 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6984BE for ; Sat, 21 Oct 2023 02:28:26 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39L5xAlM017524; Sat, 21 Oct 2023 09:28:22 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=9k2d/53CGD70zPcIiDbCkVndsu3gKKkDw/PStLhE0u4=; b=i2dc6FI57+dY0rmhyAKqtVLjzrSqTeE1x7w1h4zzMdHFEFvuL3VPofdox1zF0F5SgLRL qx7jlUfD4HBwgA0V9UjzLzBpqx15uC15Ni5MQog0zAtVYN6ToOFmbEBny4cX4h+rHG9J 4cDt2ikXWzrbu4XYup6zfhT48z2tmMsgltuxxM/+Ephv08rUQEMVkVzD7cuKStWzE8mV 9ZlJOqe/zHaMMNvvvNnaGIIqoAYww8yIvfy3yMkfX06oJlGvMloYExE2qDZnGK5Ej7So MukBTWFjvv04HRXPrXI1Q2Helzobd3tAlAhMcRj5MSZ07gcedDvUeLkNLzLny+rVyteA Hw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3tv76u0ce9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 21 Oct 2023 09:28:21 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 39L6FU6F019120; Sat, 21 Oct 2023 09:28:20 GMT Received: from ban25x6uut24.us.oracle.com (ban25x6uut24.us.oracle.com [10.153.73.24]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 3tv532gf44-4; Sat, 21 Oct 2023 09:28:20 +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 v4 3/7] vhost-vdpa: introduce IOTLB_PERSIST backend feature bit Date: Sat, 21 Oct 2023 02:25:15 -0700 Message-Id: <1697880319-4937-4-git-send-email-si-wei.liu@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1697880319-4937-1-git-send-email-si-wei.liu@oracle.com> References: <1697880319-4937-1-git-send-email-si-wei.liu@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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-20_10,2023-10-19_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 bulkscore=0 mlxscore=0 suspectscore=0 phishscore=0 adultscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2310170001 definitions=main-2310210086 X-Proofpoint-GUID: l2G47ZhkMO855DXzzu_-8ZUWp845ufay X-Proofpoint-ORIG-GUID: l2G47ZhkMO855DXzzu_-8ZUWp845ufay Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Userspace needs this feature flag to distinguish if vhost-vdpa iotlb in the kernel can be trusted to persist IOTLB mapping across vDPA reset. Without it, userspace has no way to tell apart if it's running on an older kernel, which could silently drop all iotlb mapping across vDPA reset, especially with broken parent driver implementation for the .reset driver op. The broken driver may incorrectly drop all mappings of its own as part of .reset, which inadvertently ends up with corrupted mapping state between vhost-vdpa userspace and the kernel. As a workaround, to make the mapping behaviour predictable across reset, userspace has to pro-actively remove all mappings before vDPA reset, and then restore all the mappings afterwards. This workaround is done unconditionally on top of all parent drivers today, due to the parent driver implementation issue and no means to differentiate. This workaround had been utilized in QEMU since day one when the corresponding vhost-vdpa userspace backend came to the world. There are 3 cases that backend may claim this feature bit on for: - parent device that has to work with platform IOMMU - parent device with on-chip IOMMU that has the expected .reset_map support in driver - parent device with vendor specific IOMMU implementation with persistent IOTLB mapping already that has to specifically declare this backend feature The reason why .reset_map is being one of the pre-condition for persistent iotlb is because without it, vhost-vdpa can't switch back iotlb to the initial state later on, especially for the on-chip IOMMU case which starts with identity mapping at device creation. virtio-vdpa requires on-chip IOMMU to perform 1:1 passthrough translation from PA to IOVA as-is to begin with, and .reset_map is the only means to turn back iotlb to the identity mapping mode after vhost-vdpa is gone. The difference in behavior did not matter as QEMU unmaps all the memory unregistering the memory listener at vhost_vdpa_dev_start( started = false), but the backend acknowledging this feature flag allows QEMU to make sure it is safe to skip this unmap & map in the case of vhost stop & start cycle. In that sense, this feature flag is actually a signal for userspace to know that the driver bug has been solved. Not offering it indicates that userspace cannot trust the kernel will retain the maps. Signed-off-by: Si-Wei Liu Acked-by: Eugenio Pérez --- drivers/vhost/vdpa.c | 15 +++++++++++++++ include/uapi/linux/vhost_types.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index c6bfe9bdde42..acc7c74ba7d6 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -439,6 +439,15 @@ static u64 vhost_vdpa_get_backend_features(const struct vhost_vdpa *v) return ops->get_backend_features(vdpa); } +static bool vhost_vdpa_has_persistent_map(const struct vhost_vdpa *v) +{ + struct vdpa_device *vdpa = v->vdpa; + const struct vdpa_config_ops *ops = vdpa->config; + + return (!ops->set_map && !ops->dma_map) || ops->reset_map || + vhost_vdpa_get_backend_features(v) & BIT_ULL(VHOST_BACKEND_F_IOTLB_PERSIST); +} + static long vhost_vdpa_set_features(struct vhost_vdpa *v, u64 __user *featurep) { struct vdpa_device *vdpa = v->vdpa; @@ -726,6 +735,7 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, return -EFAULT; if (features & ~(VHOST_VDPA_BACKEND_FEATURES | BIT_ULL(VHOST_BACKEND_F_DESC_ASID) | + BIT_ULL(VHOST_BACKEND_F_IOTLB_PERSIST) | BIT_ULL(VHOST_BACKEND_F_SUSPEND) | BIT_ULL(VHOST_BACKEND_F_RESUME) | BIT_ULL(VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK))) @@ -742,6 +752,9 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, if ((features & BIT_ULL(VHOST_BACKEND_F_DESC_ASID)) && !vhost_vdpa_has_desc_group(v)) return -EOPNOTSUPP; + if ((features & BIT_ULL(VHOST_BACKEND_F_IOTLB_PERSIST)) && + !vhost_vdpa_has_persistent_map(v)) + return -EOPNOTSUPP; vhost_set_backend_features(&v->vdev, features); return 0; } @@ -797,6 +810,8 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, features |= BIT_ULL(VHOST_BACKEND_F_RESUME); if (vhost_vdpa_has_desc_group(v)) features |= BIT_ULL(VHOST_BACKEND_F_DESC_ASID); + if (vhost_vdpa_has_persistent_map(v)) + features |= BIT_ULL(VHOST_BACKEND_F_IOTLB_PERSIST); features |= vhost_vdpa_get_backend_features(v); if (copy_to_user(featurep, &features, sizeof(features))) r = -EFAULT; diff --git a/include/uapi/linux/vhost_types.h b/include/uapi/linux/vhost_types.h index 18ad6ae7ab5c..d7656908f730 100644 --- a/include/uapi/linux/vhost_types.h +++ b/include/uapi/linux/vhost_types.h @@ -190,5 +190,7 @@ struct vhost_vdpa_iova_range { * buffers may reside. Requires VHOST_BACKEND_F_IOTLB_ASID. */ #define VHOST_BACKEND_F_DESC_ASID 0x7 +/* IOTLB don't flush memory mapping across device reset */ +#define VHOST_BACKEND_F_IOTLB_PERSIST 0x8 #endif -- 2.39.3