From nobody Tue May 21 15:43:48 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=quarantine dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1635756036; cv=pass; d=zohomail.com; s=zohoarc; b=ZQgUX6S4RCbCc3KgCyywrdey6KZnF7uzNq6WPJVoO1ONemPNn7P6/J6iNB5jszSb6h33G/M5+iK3prWckY5vkwmzS1igdkwAClNEdhJDxKVmChJq7p5b1WWFjouU/ECbl7qeL8pD4QlSuF0d9HWdcSVdUpCgrLgfqQjPDS3EZ5M= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635756036; 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=FNkLnYBkVvlF7UWFy+0mGwrvrvJgBcg1EdgHk3awa30=; b=kFk7XC/pd1CIyRDLexJvQZfi6hHuRpXM6cHKWKo13UuoqlVr8GwaJ9iZsokjObHIvYgj8DUKBlt9VdRzJ6zmF9mTZEWEQJpaA9JTSY5FlyNlB/VgSTc3ALu57bbNqQf2rcYHv2FEK9e36AcHMbVJeS2dPKQe69if76R17ccp0qg= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635756036532172.63232739383318; Mon, 1 Nov 2021 01:40:36 -0700 (PDT) Received: from localhost ([::1]:55970 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mhSrr-0002nR-BJ for importer@patchew.org; Mon, 01 Nov 2021 04:40:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38476) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhSqb-0001CQ-AC; Mon, 01 Nov 2021 04:39:17 -0400 Received: from mail-bn8nam11on2079.outbound.protection.outlook.com ([40.107.236.79]:1248 helo=NAM11-BN8-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhSqJ-0002CD-Tn; Mon, 01 Nov 2021 04:39:16 -0400 Received: from MW4P220CA0009.NAMP220.PROD.OUTLOOK.COM (2603:10b6:303:115::14) by DM6PR12MB3867.namprd12.prod.outlook.com (2603:10b6:5:1cf::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Mon, 1 Nov 2021 08:38:50 +0000 Received: from CO1NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:303:115:cafe::68) by MW4P220CA0009.outlook.office365.com (2603:10b6:303:115::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15 via Frontend Transport; Mon, 1 Nov 2021 08:38:50 +0000 Received: from mail.nvidia.com (216.228.112.34) by CO1NAM11FT055.mail.protection.outlook.com (10.13.175.129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4649.14 via Frontend Transport; Mon, 1 Nov 2021 08:38:49 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 1 Nov 2021 08:38:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V87HZ4d7th9E2Df7pe+0JEHxSi/o7yoboKBzyMbrUHhpfi52UCxP8AYkskb0hfSC3qYh7ckGmwWAYUxcxQyCXkhsVYNQLB7WAHLMTsTp/mKNRTRO8wf+WwymzO363J/Y6PCINxhjGPohs5H3+DzaJd9saRS4hv52GgByGoMy1NWCIwXneRuHPoRVfPVpkBeZUVfc97OBEYtMYOaWxkXKWm29xs/dD1TQiWEKw0i9ZpyFvEXej34rd2JgvidLyYkINPJ/a0RPn6P+lUvCyNXo95RD1soIK7RpT9lFkZQndvoXQH7OrKxHsn/jinKht3QbC2PNdgVHhaQUjC6E4MbnTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FNkLnYBkVvlF7UWFy+0mGwrvrvJgBcg1EdgHk3awa30=; b=bIkh9iRwlQ7MQ+HMNBovFdfKA98yYkO7xSZ4ny1r1F9jn4NGSabhvF0FpBqWOnVeLk65S5FwwR8CUl931BtIufYrHlnZFwaFgkBrB7IvV13iLaTVgolZ623ncZY3F95Rt1IjMIoHyCg40qsIWnraLYrZkR4Mlx6l3vECepb1oZu9te6bI1SoC6RsSJyPm3PT300ef3Fd6Xz+gTLaExdCbVhc+zuPqQTxVn5P2L8cwArziVoJFWlcC7WYli0XVBpwqkHfKsQmrznMyVI+cQxOKBE4qH+XC2hCnPtD3Us8QbIxwfeFMQEgr62nHFhCL7UotAw+PaI5lFVJQK8l7swwag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=bytedance.com smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FNkLnYBkVvlF7UWFy+0mGwrvrvJgBcg1EdgHk3awa30=; b=T9C1zmZuLyipWHcRW+fB5SmjSyoUXt9Yl7imrN6d29TUZFmi9fen1JcVLWjKP+N2wSxOSy74Y3Ar7IMPGcenNbNJIGTJr0Vz8IalBk2z/7g9vpfWPxsBLXQPvRZklNjPo4O9NoAkLN0Ya3Hr+dsEzKFq2o1m4BtOgLL0UdVdA3jyJUek8EeXT8Shfe2UmZBSrgVj9NHaZmBQcqO9jqw+r5BLSF9OBQ+JoC9bZJgOTkV+wYIF7qXtVbgx6rBZnGsX+olJ9IBAyoalhVhbqtBHSu817hq/8rvM6kBAY1xlDHDI+mkif5E4yTIcJjXvgnYgH9WJo38bdOZMaMF21HpH6g== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; bytedance.com; dkim=none (message not signed) header.d=none;bytedance.com; dmarc=pass action=none header.from=nvidia.com; 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 (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; From: Xueming Li To: CC: , , Yuwei Zhang , "Michael S. Tsirkin" Subject: [PATCH v6 1/2] vhost-user: remove VirtQ notifier restore Date: Mon, 1 Nov 2021 16:38:12 +0800 Message-ID: <20211101083813.1224522-2-xuemingl@nvidia.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211101083813.1224522-1-xuemingl@nvidia.com> References: <20211101083813.1224522-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31a19a55-b8bc-4f4b-9d87-08d99d1306f4 X-MS-TrafficTypeDiagnostic: DM6PR12MB3867: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:117; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eKLSjluK+KR7w3D2ru1XAg1GAxwB0jD710xV5QnmHAxFkwGFZqj/LRWrbbyNHdDPDTDGuz8dbXw9rWU3qmcStF/psw+znpL4nNqKqiMbiuKqefDL+09m3lH0EHKTfYVQOjx2mvFE91MhTdclaMkTYXE5AK5Y9GKpQFYsCP5/I1f1V5/bjT3sT9l2zWVDSEMMD5ATiltsWPjm9Icsc71JDOBK44FAaukDkS7DEyxmmOB3AgYZoq1NJK4UohlYVxPMKZoIyUh6NWHy0HF9Pn0F41UDUbtC5cfkCkvcW3w7zPfvoRBcY26inOdlsaUrg73mcpNy7W76uRaWdPQ1MUo3TdRk+ov6azReFJ8LSddx1GHdyc8nML1jxZ1qn0UYwM6Q2dd6e/TmMcBzfFj4cQ/19kd5S2lXqnYWklsrKiLlilWfOKRYG+1/1/vI+dHVktTGslBXBh2ZF34SuG0S4JJ4inXzMX9RNuO8Xw+93Lbn2tAcEMCAha96M+CC00tRLG6rr23ECy3LtrbjO3M5wmPbLt6fTGzpa6aNFOwT2llIAe+6+xjyY3Tjcdwwl9pABH5RCzd3EGG5SpG9jm2XOZoMO/oEy4zzayqGGaYCW1sxA2LrhDvLiQzeEHSp1LEqO2hMPc8/1vxgLVz6hpGC0LYuJdQTJkC0GYmSRE1z94+BYf3S4TuNZv8V1TobZkfx/iEPV0kpueC6XJBV7LsBQryl/g== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(36756003)(6286002)(4326008)(6916009)(47076005)(86362001)(2906002)(54906003)(83380400001)(316002)(7636003)(508600001)(55016002)(6666004)(356005)(5660300002)(8676002)(336012)(426003)(2616005)(70206006)(70586007)(1076003)(36860700001)(186003)(26005)(82310400003)(7696005)(16526019)(8936002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2021 08:38:49.5170 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31a19a55-b8bc-4f4b-9d87-08d99d1306f4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3867 Received-SPF: softfail client-ip=40.107.236.79; envelope-from=xuemingl@nvidia.com; helo=NAM11-BN8-obe.outbound.protection.outlook.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) DKIMWL_WL_HIGH=-0.736, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-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" X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1635756039357100003 Content-Type: text/plain; charset="utf-8" When vhost-user vdpa client suspend, backend may close all resources, VQ notifier mmap address become invalid, restore MR which contains the invalid address is wrong. vdpa client will set VQ notifier after reconnect. This patch removes VQ notifier restore and related flags to avoid reusing invalid address. Fixes: 44866521bd6e ("vhost-user: support registering external host notifie= rs") Cc: qemu-stable@nongnu.org Cc: Yuwei Zhang Signed-off-by: Xueming Li --- hw/virtio/vhost-user.c | 19 +------------------ include/hw/virtio/vhost-user.h | 1 - 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index bf6e50223c..c671719e9b 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1143,19 +1143,6 @@ static int vhost_user_set_vring_num(struct vhost_dev= *dev, return vhost_set_vring(dev, VHOST_USER_SET_VRING_NUM, ring); } =20 -static void vhost_user_host_notifier_restore(struct vhost_dev *dev, - int queue_idx) -{ - struct vhost_user *u =3D dev->opaque; - VhostUserHostNotifier *n =3D &u->user->notifier[queue_idx]; - VirtIODevice *vdev =3D dev->vdev; - - if (n->addr && !n->set) { - virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, true); - n->set =3D true; - } -} - static void vhost_user_host_notifier_remove(struct vhost_dev *dev, int queue_idx) { @@ -1163,17 +1150,14 @@ static void vhost_user_host_notifier_remove(struct = vhost_dev *dev, VhostUserHostNotifier *n =3D &u->user->notifier[queue_idx]; VirtIODevice *vdev =3D dev->vdev; =20 - if (n->addr && n->set) { + if (n->addr) { virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, false); - n->set =3D false; } } =20 static int vhost_user_set_vring_base(struct vhost_dev *dev, struct vhost_vring_state *ring) { - vhost_user_host_notifier_restore(dev, ring->index); - return vhost_set_vring(dev, VHOST_USER_SET_VRING_BASE, ring); } =20 @@ -1538,7 +1522,6 @@ static int vhost_user_slave_handle_vring_host_notifie= r(struct vhost_dev *dev, } =20 n->addr =3D addr; - n->set =3D true; =20 return 0; } diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index a9abca3288..f6012b2078 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -14,7 +14,6 @@ typedef struct VhostUserHostNotifier { MemoryRegion mr; void *addr; - bool set; } VhostUserHostNotifier; =20 typedef struct VhostUserState { --=20 2.33.0 From nobody Tue May 21 15:43:48 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=quarantine dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1635756130; cv=pass; d=zohomail.com; s=zohoarc; b=DazRPOJ+/LWQ1paSWC1KG5I8wl8cqvjy1jdYxnTc4Ve90FLNQjGYbziwOynNsVFI9322U7F8mC8vfYBo20hHi/w92P+MtxrQF26gvUbbiiK2yyGmYhCuzmfS6RSWEiQZfRbZQmAgw9h7Rq6MosiDrJOBCnhp0jIwSn84nM0e+jY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1635756130; 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=MsyFKZo4zUCM5OqxMJi9JIdPvY9mgO1KrWUbzMeFkmA=; b=Et6QSw5/WXL1KDYW10ZxfvIfogD10I4xD7UnSEDrawMmhJizqRj/qiG6YlTxjT2sgWMEi7UO0euc3m6RCOsCBi3/pR0NTGGeLVyTtq7MVlho1VvhA0DfNQQ6cTPiwaGc/XcImX+CZpYvdeHcRUj09ZNEz1YqknPBjCBYdMgYBmw= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1635756130616187.4441109752355; Mon, 1 Nov 2021 01:42:10 -0700 (PDT) Received: from localhost ([::1]:59848 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mhStN-0005Sf-Jr for importer@patchew.org; Mon, 01 Nov 2021 04:42:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38472) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhSqb-0001Bi-BH; Mon, 01 Nov 2021 04:39:17 -0400 Received: from mail-bn7nam10on2071.outbound.protection.outlook.com ([40.107.92.71]:64993 helo=NAM10-BN7-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhSqJ-0002CL-Tj; Mon, 01 Nov 2021 04:39:14 -0400 Received: from MW4PR03CA0324.namprd03.prod.outlook.com (2603:10b6:303:dd::29) by CH2PR12MB5004.namprd12.prod.outlook.com (2603:10b6:610:62::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Mon, 1 Nov 2021 08:38:51 +0000 Received: from CO1NAM11FT029.eop-nam11.prod.protection.outlook.com (2603:10b6:303:dd:cafe::5f) by MW4PR03CA0324.outlook.office365.com (2603:10b6:303:dd::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Mon, 1 Nov 2021 08:38:51 +0000 Received: from mail.nvidia.com (216.228.112.34) by CO1NAM11FT029.mail.protection.outlook.com (10.13.174.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4649.14 via Frontend Transport; Mon, 1 Nov 2021 08:38:51 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 1 Nov 2021 08:38:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F21LEoAzpQ5PInOQQQFd2DxFhVbtzlaRH+CepRZy6SRZscQgGJd/f0d5NshTqplbHDssOrkGO8/Y8ullI73RhCRghLpvl9s2DIB1lA5+KAAo4xtZCkiWqVPcKJmHLzuA8rGlZZLkxl/vijBkWyrvAHpOMj41g7SV/hM73JxI9t0lO2XH016lBovbpvpIt6AGwT6NTVniR7vnvfnvIcYiEpGLDDfFIDY0cHuSyUNQqugOkjRDcd5uxrPN+WOUmNKDFRBZD7za4ejabYTRrtNgc3H+LmGJKcUGECVvgWx3JNSrVO6Dkr2a/614hksMoQfeXaNAuTtF/4VPIEFSTllRKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MsyFKZo4zUCM5OqxMJi9JIdPvY9mgO1KrWUbzMeFkmA=; b=PXjlN3zygHJ7kDqeWuzE09w5ibknWtoz7ydpTrlPhmobGerVFGFNNzwSlkdVixOlfPzb97eEx2bGX4I0cCgrND9RdpP3MF0v7xihDMG3oks1qdsYfAO11+0OW46tA9ATR5xGBGvl5KzpZc/k7tLhliWzXZkggHAdSlJOBf2gZ0Oc5p9E7QHkb5BKt6v445qNaTowsHieDnAHlLCzenlbuEfERrfoi64qXrLTNCMonihX3Fh0OfRhZuV6wPmabGai6Z4jjnykGJhTM9521UHMWyJwkc3RrxKeX7TR5UgqY5u9Ab8UNhEuhX8H+GgFcd9Ecok77i35TWMHvzYLuofnwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=bytedance.com smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MsyFKZo4zUCM5OqxMJi9JIdPvY9mgO1KrWUbzMeFkmA=; b=iNzU60smnFOz2XVElAoPtPPEuSb3wOet0x5hJmAO3agK4s14E0JY6q/OFBEHmanDKFOYUBSkT0GOj80bd8rNczSYLcRlPpGL1nYjuhP53V/l/CYQdMUsKQtrKAgtxo+n4PCjs0oOUCgUlIwCxwBTBXbBE9f5yCC0SugsyPkW+lnmXwkzxiITewhYi4C9qvsW6q9R9iHHcJglEvvqzQ7Ae9EHXCzLD4TUUu6lm7l6plyj+yk8fad12Hr7B/PkskQjAy7ZA52LWHV+C/mbYDL+MhgbHp7pA4aZMsUCBcAV0AFquX68F2aS2+hSLqY20DGpuwyUexAvOpjBvp6D6fL28w== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; bytedance.com; dkim=none (message not signed) header.d=none;bytedance.com; dmarc=pass action=none header.from=nvidia.com; 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 (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; From: Xueming Li To: CC: , , Yuwei Zhang , "Michael S. Tsirkin" Subject: [PATCH v6 2/2] vhost-user: fix VirtQ notifier cleanup Date: Mon, 1 Nov 2021 16:38:13 +0800 Message-ID: <20211101083813.1224522-3-xuemingl@nvidia.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211101083813.1224522-1-xuemingl@nvidia.com> References: <20211101083813.1224522-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 595fc0ef-94cf-4e28-0f40-08d99d13081c X-MS-TrafficTypeDiagnostic: CH2PR12MB5004: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:39; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cd4PlXOwH30d5U54qdZnlVIrG8+SAcSVSKA2I5S0gtirS0+eCm2MAtL9LXDJgnPB5Q1okYls2jGm1QOZnVnaH6DJqhdFpFsBJ13C4XjIa4uZ8J27osQpKFCL4RlYElaPnf2Y45C14m8BEsq8oEgihRHUnwnLHPTb6WxDEFp78KdyJkij2+cSn64f2WNCda+wwbjF1N6g3GvDaorujIUdpUjHb9o6RrBPT/JtzErypBDbhJXm0RQjzUPincJLt0zmYBlhkeCAGJ6ZJiHTMHCXBJEm/C4Yb2OEroWpPMpyxkBSfRsG/qrRWWj5bV7z9DtuO8khnhux9eqtcxJOJUerASnG87RrMBMZ4TqFIJvK9OCwosiSwc9ot975YFjbmEHvqV0E3OcKaFgSSS6Fgtfy6euytSJLtASQF+r9CwOYNxtN3vPRLmY/jFjRMgMZvAND17zldrIkAWcn5SgurjGBMhfXteSGGmsXWfoVj7t6E9A9/6hw9Gvu0C9e1vdSTmAuqps+PQ61WVlKb7gFNPfGlhUKHTM/DmONW5fBeCVtBIT3TDefHn/QP3XtdtMh3TcWRGBCRE5WFbBRy/G+9HtdpTtgWcglpL5Zum2F1j3GXKzXGaKaL8Za/AkgIcfLwbadmG3ThXeTMmxKhEIjj6mvvcXUQ8k18bIEUwvIYewJ/VKslrK8QuF9Wc+jWZ7foj+NEQuXZdB/nsIjcBDq5HIAUw== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(5660300002)(83380400001)(8676002)(6666004)(186003)(36860700001)(336012)(82310400003)(86362001)(1076003)(70206006)(55016002)(2906002)(7636003)(36756003)(26005)(508600001)(16526019)(6916009)(36906005)(2616005)(7696005)(426003)(6286002)(70586007)(8936002)(54906003)(316002)(356005)(4326008)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2021 08:38:51.4472 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 595fc0ef-94cf-4e28-0f40-08d99d13081c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT029.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB5004 Received-SPF: softfail client-ip=40.107.92.71; envelope-from=xuemingl@nvidia.com; helo=NAM10-BN7-obe.outbound.protection.outlook.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.736, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1.598, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1635756132122100001 Content-Type: text/plain; charset="utf-8" When vhost-user device cleanup is executed and un-mmaps notifier address, VM cpu thread writing the notifier fails by accessing invalid address error. To avoid this concurrent issue, call RCU and wait for a memory flatview update, then un-mmap notifiers in callback. Fixes: 44866521bd6e ("vhost-user: support registering external host notifie= rs") Cc: qemu-stable@nongnu.org Cc: Yuwei Zhang Signed-off-by: Xueming Li --- hw/virtio/vhost-user.c | 50 +++++++++++++++++++++------------- include/hw/virtio/vhost-user.h | 2 ++ 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index c671719e9b..5adad4d029 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -25,6 +25,7 @@ #include "migration/migration.h" #include "migration/postcopy-ram.h" #include "trace.h" +#include "exec/ramblock.h" =20 #include #include @@ -1143,15 +1144,27 @@ static int vhost_user_set_vring_num(struct vhost_de= v *dev, return vhost_set_vring(dev, VHOST_USER_SET_VRING_NUM, ring); } =20 -static void vhost_user_host_notifier_remove(struct vhost_dev *dev, - int queue_idx) +static void vhost_user_host_notifier_free(VhostUserHostNotifier *n) { - struct vhost_user *u =3D dev->opaque; - VhostUserHostNotifier *n =3D &u->user->notifier[queue_idx]; - VirtIODevice *vdev =3D dev->vdev; + assert(n && n->old_addr); + munmap(n->old_addr, qemu_real_host_page_size); + n->old_addr =3D NULL; +} + +static void vhost_user_host_notifier_remove(VhostUserState *user, + VirtIODevice *vdev, int queue_= idx) +{ + VhostUserHostNotifier *n =3D &user->notifier[queue_idx]; =20 if (n->addr) { - virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, false); + if (vdev) { + virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, fal= se); + } + assert(n->addr); + assert(!n->old_addr); + n->old_addr =3D n->addr; + n->addr =3D NULL; + call_rcu(n, vhost_user_host_notifier_free, rcu); } } =20 @@ -1190,8 +1203,9 @@ static int vhost_user_get_vring_base(struct vhost_dev= *dev, .payload.state =3D *ring, .hdr.size =3D sizeof(msg.payload.state), }; + struct vhost_user *u =3D dev->opaque; =20 - vhost_user_host_notifier_remove(dev, ring->index); + vhost_user_host_notifier_remove(u->user, dev->vdev, ring->index); =20 if (vhost_user_write(dev, &msg, NULL, 0) < 0) { return -1; @@ -1486,12 +1500,7 @@ static int vhost_user_slave_handle_vring_host_notifi= er(struct vhost_dev *dev, =20 n =3D &user->notifier[queue_idx]; =20 - if (n->addr) { - virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, false); - object_unparent(OBJECT(&n->mr)); - munmap(n->addr, page_size); - n->addr =3D NULL; - } + vhost_user_host_notifier_remove(user, vdev, queue_idx); =20 if (area->u64 & VHOST_USER_VRING_NOFD_MASK) { return 0; @@ -1510,9 +1519,12 @@ static int vhost_user_slave_handle_vring_host_notifi= er(struct vhost_dev *dev, =20 name =3D g_strdup_printf("vhost-user/host-notifier@%p mmaps[%d]", user, queue_idx); - if (!n->mr.ram) /* Don't init again after suspend. */ + if (!n->mr.ram) { /* Don't init again after suspend. */ memory_region_init_ram_device_ptr(&n->mr, OBJECT(vdev), name, page_size, addr); + } else { + n->mr.ram_block->host =3D addr; + } g_free(name); =20 if (virtio_queue_set_host_notifier_mr(vdev, queue_idx, &n->mr, true)) { @@ -2460,17 +2472,17 @@ bool vhost_user_init(VhostUserState *user, CharBack= end *chr, Error **errp) void vhost_user_cleanup(VhostUserState *user) { int i; + VhostUserHostNotifier *n; =20 if (!user->chr) { return; } memory_region_transaction_begin(); for (i =3D 0; i < VIRTIO_QUEUE_MAX; i++) { - if (user->notifier[i].addr) { - object_unparent(OBJECT(&user->notifier[i].mr)); - munmap(user->notifier[i].addr, qemu_real_host_page_size); - user->notifier[i].addr =3D NULL; - } + n =3D &user->notifier[i]; + assert(!n->addr); + vhost_user_host_notifier_remove(user, NULL, i); + object_unparent(OBJECT(&n->mr)); } memory_region_transaction_commit(); user->chr =3D NULL; diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index f6012b2078..03aa22d450 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -12,8 +12,10 @@ #include "hw/virtio/virtio.h" =20 typedef struct VhostUserHostNotifier { + struct rcu_head rcu; MemoryRegion mr; void *addr; + void *old_addr; } VhostUserHostNotifier; =20 typedef struct VhostUserState { --=20 2.33.0