From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00070.outbound.protection.outlook.com [40.107.0.70]) by dpdk.org (Postfix) with ESMTP id 095C84B4B for ; Mon, 13 Aug 2018 22:42:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qa+Jt13uN/5NQgmg/WqtjUB4OU3JRXGxJhLe1tLXml0=; b=FkiC0h3UwJXWFLAzqTg61eOtPDftr9rQHpxhbMKfVp3qDB8kq2Xud8MfJyDA2UnTK1wkBQRCm3laIzNh5j7aVXMeK+GL5z13c0RtDpPLaqzcG3hoGPJwwFy43luPcTN5+nPhfoJhgdCwPM3aaWFzaIuJUzhmYvfflwmJtcNXNmQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by DB3PR0502MB3980.eurprd05.prod.outlook.com (2603:10a6:8:10::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.18; Mon, 13 Aug 2018 20:42:35 +0000 From: Yongseok Koh To: Maxime Coquelin Cc: Tiwei Bie , Jens Freimann , dpdk stable Date: Mon, 13 Aug 2018 13:42:08 -0700 Message-Id: <20180813204213.25436-5-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180813204213.25436-1-yskoh@mellanox.com> References: <20180813204213.25436-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: MWHPR19CA0084.namprd19.prod.outlook.com (2603:10b6:320:1f::22) To DB3PR0502MB3980.eurprd05.prod.outlook.com (2603:10a6:8:10::27) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 43accb62-b7ac-44f7-0880-08d6015d4dce X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB3PR0502MB3980; X-Microsoft-Exchange-Diagnostics: 1; DB3PR0502MB3980; 3:2hBikvWLYEHSZ2nvFYOCI6eePEMeYu00dGrtOIHR6SCaw6MTPxwW0yytr8kyFhPkusp4E8zLaCXpl/WH1Di1nDxuHeM80bfmsmVsPFwzaYpRsl/nZwc6sexIKPEmid1awAcRHivAOoR/wx1Zr9BnLcaFPkdCiZs/IMpxRY13sbIh2PA9/XBTjZi6mE12i40Aaik/VhEiYp0mM6QuW3+B2IGFN07ee0wq+OsdlaP6jPzMN+KwzObVdLjkR6nuiwvb; 25:BxK9QtqbyI6UaI5Bhy6yOZYrL3yXuM/eChi0DT0pGVz8p9mA8aC2+xy+7n/r1X+hJURoYizM88CJoRTlvWyj0+WxCL9EwM1UrRoPotenoYgtET6wiP5QWF2ti1TeHqQnyuim1HH9B7eD43b6P2ZVvoEvTaTCQaMCzsNdj3cOn5akR5KI8fXvhzcMy88aftwvZlACFiRHYqZsHpDbpLxI0uova2YgcHB56g5/1OkXvvX0ADT7a7MFcai7XWe4rrJNo6KcgzV1d7X0Pu9Jez5chJdPfqf8vfgMVJX99PlNqFl6mKEfB5g58eUXHdKWJ2lsQA2yDbmxCYzO+p9/wV6B4Q==; 31:E3WPaDTATLPw+bEFZ8Z217ofTFMgWZ3evKYN4q6fFG6i5gjM69sDXdGex73eAcvd8K5q1Tpdz5Vrp4btw41yKE/Iiu+EyYmFh2hpc9x7fx/QApN/ug12WqHYvE33E34LcVjxBMZddE5w1D9yRWPiaQRphf754ZSgvQwKuqsVY8K7AinxARcp+hybODWsyEgH1pwbVvMrtUppNGcGOKZ+LZ+MIsx3nui19pjuF5IV8Ec= X-MS-TrafficTypeDiagnostic: DB3PR0502MB3980: X-Microsoft-Exchange-Diagnostics: 1; DB3PR0502MB3980; 20:wN76rUcmypCcaNdhMDo5/WGHoovtHbIZ8R6s3KDA5JQzRMJITIsLM5CC3D3Eh50Vdj1lHyXka+ZF6nzLntI0HgNP00qhbWG2ITvE17C57CPyNUflfYH/fnPMGXDnrgDqaALLIJ4LwSYvN/8mFxpwgGxvlmTg7MaBsYPDN+71Q72/Q8KjeCcdr2kcJTVAD2yE/892fegEpTSMjcw3JKn/rRemj00Q9DifUVnHsNH99eEH9z5wSzSNBNPoDFJHeK5lLN/CYTmSS8GHz9d0nrSbGwFG8WyyyF7HRHZHShuVObik3Bm82TPQ0UESOKMlq+43Nskiv6iMNlZtJG87jLFM1PAbnq6ZaMeAqkK04rRH1MKGP5U6vr7ztbBFzQRP9qsn7UzEfuki2Ux3Fe8b1CBQVADhdBFbfCDBKZq7ALvIU6VflGDy6TQqtNgznRMxQUAOvC4u1laHXYIhyw5aMzUaBXeSe3wbEf1c25K7/aRX0PKtBZo4NbEDR1oR9Nvq4mAq; 4:OQRPjjaSMpnJhUC8k3qBEpFLiVQEyAB0/UZNA55O8IMjTRGxVuZpBRSAVYK36ineR/xF5KGZXzHtKc85Kkzvj8cHMIj0girmMorQiAdZhq4yy98dxx6vop8v/08+IVWWTDIf60k0XYFC8h2CSZvuhP/EyX1ZeT2uVC9lxNT9d8BYKbaz9vatiDENupJxopXUEJRhLw7HLH0kUEkf0SHrpxjoyE34Hkk/6fi2d1fssYr/j/6kVHXrYlbvJQdbi/P2pSKlhSsfGcSsM+Xi+HVBgrkzSmJVrP1FR4Qtod1h5D6m7Vk9h13UPeI3BC/5OQw/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301033)(93006095)(93001095)(3002001)(3231311)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:DB3PR0502MB3980; BCL:0; PCL:0; RULEID:; SRVR:DB3PR0502MB3980; X-Forefront-PRVS: 07630F72AD X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(136003)(366004)(39860400002)(376002)(189003)(199004)(28163001)(69234005)(105586002)(106356001)(97736004)(76176011)(16526019)(26005)(186003)(446003)(11346002)(2616005)(956004)(14444005)(36756003)(50466002)(486006)(69596002)(21086003)(6916009)(476003)(53936002)(53376002)(48376002)(386003)(7736002)(6666003)(1720100001)(66066001)(305945005)(47776003)(478600001)(7696005)(53546011)(51416003)(25786009)(52116002)(4326008)(966005)(55016002)(6306002)(54906003)(16586007)(86362001)(575784001)(5660300001)(3846002)(8676002)(6116002)(8936002)(316002)(81166006)(68736007)(50226002)(1076002)(2906002)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0502MB3980; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB3PR0502MB3980; 23:G06Wq2Uv4cJabXqLPbYLIM/BfIoiY7cUvIChHC0?= =?us-ascii?Q?qbBNcV9bTuxmEj3zo4/Gna9rKPukuYiT9SLr8Mbvjfq8fBCJSdmAcNaMt/BJ?= =?us-ascii?Q?Ob5Z37hmIAxMGNnYOH6sAFMgM/BnUlfkH4AK+1R8nNshvx4y91qAbcPdZQ5a?= =?us-ascii?Q?DBrZ+iC17wmZofsssWq4DK882iemySJ3wocH62Q3qzXunm3aqNvh3YzM+eB5?= =?us-ascii?Q?Uz/GfV5EgP2vejFkPpCygXE2ZoXj2aRCeN4uk0dK6VLUaIgR8ZMQgJtV/Zev?= =?us-ascii?Q?nNZFAS4EBhjzLxWgmPVGmbP2CBKABUPbnWx3/a7daBSfGogqluOgEijOAq9c?= =?us-ascii?Q?pzqFMZLJELIOeaJGXJoA1AQ3Djg2rJfPvgoR5Cl0gr7ZOxs9zQiRCLNeTMXC?= =?us-ascii?Q?5m3asCD+q1LMCmtWfPo6rAeNDRvbqIlSqJt+9HL6t+VDq81aAV+o7VjQ9Zzk?= =?us-ascii?Q?wWwtB2oAVsmafsvoKoCU6SM/ga1H/M9/3NW2b8iAvL/zdOhG0zzx1JRQk4VD?= =?us-ascii?Q?iJq1D2lDjbPxOsATVAN6PZd4KXVmMFkAT59V5jI0HNHJOgBF/1p8riGxCyxn?= =?us-ascii?Q?R9X2Dtm6AqT86GskyvsVVMNuF4Z2R2GuoyXTP44VXePfCrgUwOttvibp3I4m?= =?us-ascii?Q?S7e3WtXOoxfWEMV9ozkW/6r0IavQIBSxIAgWhmKQxd0YJW9CIIyzV4gCm8ne?= =?us-ascii?Q?sb8XULlmEKXV8VAQZIx0qB2CzkrQQhCjjyD/RhXVlM5a09hh7BHcCQxQM9vf?= =?us-ascii?Q?JMJ2dOY+Vesz0wZbwoKDo8zJr6iIgQZXD6bncu2RhJSdkDF4XYfUUYa3P7iC?= =?us-ascii?Q?Y4/7HJD5fLUFuv18t+t7m0gIppo1oTnOAYXACBVEv0saEycppTRU5v7ySoZH?= =?us-ascii?Q?k0WVMwm674M73bZW/UCHFQlD35HSHwIhCiwyzeGj8KK1Q5F/dyWuKl5AGlcl?= =?us-ascii?Q?tqu6qyQQLPUPnB5qDHcVKq+uFn3X1Axs5y4dK3HFRydehCmN/zwtbDC8RrwD?= =?us-ascii?Q?/vXDIo4yCUdm5deJvhj1E/NuiU9IN2d9jsaQdY2UapnGUniOdjZs6JMiYreM?= =?us-ascii?Q?2B+bT4jC8TgSIKzhBR0jHLPWtVltBt78C0InqjjhtiKqoVSCX8c6i5olcgNz?= =?us-ascii?Q?Q/R5mq1nsIqb6HoLsTqC/e6zcpGEp8SEZEww5lL3TCHLbtdR5rFKffTRjJgw?= =?us-ascii?Q?d35RZIukpoKQ0BCn0xuyq7xa6pAs67JXXsRnEuEV5gEcFVBzHHfM6KPC/w8z?= =?us-ascii?Q?UptBOFSXilCf9CIHgFXKholdMQm83vQN5Hgm2pLJ8MRGosfCLKMdUxOnL6uy?= =?us-ascii?Q?6s1gcpQc9mb79ja7gyZmfIpn60yQAEMHNHs/WYcATeBdeFNiBp6GGacNB7aT?= =?us-ascii?Q?NkyE8TQ5tRSXrYBjIruiYkGDQiSsthYBFWiJpciIP+OvzqtiDxk93SQYbum2?= =?us-ascii?Q?JCWaYyvAjbA=3D=3D?= X-Microsoft-Antispam-Message-Info: 6jMDQlrXrHX2baFAdQiV8qfbWoHcRyhm25/BJOOFGutuP+198++UvKpexXxR9XonoXmSoLYwG1fOzhWLOOao/ZzFFqbtXN8X29tXZxHs0lTH12J3E991vZtfy9VdoqhHKOWfIpK73eaPeod8UpbFJ1rrJvfQGunsoSMb+LzSIj9X4DcavuUspP5jagTzzI2T/XDGRYgocvIstX5iSzDwP4nSyUD4ivqTKyQVnSgOZXRGTfXdeysxyxi0x3h+7N55nI8ro70MZASbwGyNqPqxr4g7SkpaNYQZB+sX8qJUyCvkLGjE7bpeqp4/L7dgyjtxSg1ITGQ7bdwDQZ+JV4dq0x+RTmG8tKewe9XMbFlvDfc= X-Microsoft-Exchange-Diagnostics: 1; DB3PR0502MB3980; 6:1katPnxvh0yEWC2sHnCVhxnsTvGUbypX1PX/dAruxubykjymOvNR49OkHxU0xWc/aoCqhVDyBZZqdJ5BUYaquOIpJRChOHqGL4dsfvvGsGndewVS3RCMIWyU/Rv8yqnKPehryEqd+JyKGTBwGzmhVk8BrWMLELtFr0hKv3fnYedWMPsSf7p7NAThmhDOI8kOL4gbU8jENCh7Tby5OnXEwX6pPMf0lShyHmdb62nLFUkwTfaPnnJtWdYc+PdJ8AR53Or59yENj4leFaWMup3GVHVUu24PW2W9wI9A+rqscge2ezwnqpJvlv6TWBxyOQVfXrcj83qRobfjHjzy3k4wUET/d2dSldeGY3Ha1yrYAUgti/cNiWeHuY8bskx5cceh6G9unIDJi+pCENo2WGDhsWqY08eHzqGmTj1mDAqWCa7V7veXHVCTolr5ElF8J6anmi1JqBTYsYtg79MQRYNVbQ==; 5:ZO0T+RLAoPSBhFTpTJxMgAAnxFwRyU/4THDXPxcP76nojHuSFtmcDtRYYcLS7Ww4CHrkkQSWTx5AcldWrKT27fQ+b2LkVBQJ/EFqso2X6mLAFsdzstofZaPrPeQHzpfYp1t1y+2NjlZ7V7rj+BoXpWoVZt/IVg5TccP7SMReMJ8=; 7:mT3PZHw8RxninPWUtc1pPUOhlV5eGLjv8iywlVCORtmV1e2GhWJWc6xNRqPVE/TVM/TxL7glsmlkMX3wJorT0K9Gi5uNCNr9OnQ50GcTIXdMXYPVvSheOVp2d+zPbGo/GnjMlnFHiXkoWnLDwQqU+q3l+VSI0AmY+utdhv2CIY4xZZYn1H5X/LeRbsbqjiIVAD9HfPPyln/s0gKO9/UinqRlv5v2JQeaNIM87fbUvHBf3A8iy/ie6zflL8o/8aqQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Aug 2018 20:42:35.7160 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 43accb62-b7ac-44f7-0880-08d6015d4dce X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0502MB3980 Subject: [dpdk-stable] patch 'vhost: flush IOTLB cache on new mem table handling' has been queued to LTS release 17.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Aug 2018 20:42:38 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/15/18. So please shout if anyone has objections. Thanks. Yongseok --- >>From bae2e496c2701404140ebd9e676d5c43295fabda Mon Sep 17 00:00:00 2001 From: Maxime Coquelin Date: Thu, 2 Aug 2018 19:21:22 +0200 Subject: [PATCH] vhost: flush IOTLB cache on new mem table handling [ upstream commit af53db486792f3d864c9a30dc13ee12402994640 ] IOTLB entries contain the host virtual address of the guest pages. When receiving a new VHOST_USER_SET_MEM_TABLE request, the previous regions get unmapped, so the IOTLB entries, if any, will be invalid. It does cause the vhost-user process to segfault. This patch introduces a new function to flush the IOTLB cache, and call it as soon as the backend handles a VHOST_USER_SET_MEM request. Fixes: 69c90e98f483 ("vhost: enable IOMMU support") Signed-off-by: Maxime Coquelin Reviewed-by: Tiwei Bie Reviewed-by: Jens Freimann --- lib/librte_vhost/iotlb.c | 10 ++++++++-- lib/librte_vhost/iotlb.h | 2 +- lib/librte_vhost/vhost_user.c | 5 +++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/librte_vhost/iotlb.c b/lib/librte_vhost/iotlb.c index c11ebcaac..c6354fef7 100644 --- a/lib/librte_vhost/iotlb.c +++ b/lib/librte_vhost/iotlb.c @@ -303,6 +303,13 @@ out: return vva; } +void +vhost_user_iotlb_flush_all(struct vhost_virtqueue *vq) +{ + vhost_user_iotlb_cache_remove_all(vq); + vhost_user_iotlb_pending_remove_all(vq); +} + int vhost_user_iotlb_init(struct virtio_net *dev, int vq_index) { @@ -315,8 +322,7 @@ vhost_user_iotlb_init(struct virtio_net *dev, int vq_index) * The cache has already been initialized, * just drop all cached and pending entries. */ - vhost_user_iotlb_cache_remove_all(vq); - vhost_user_iotlb_pending_remove_all(vq); + vhost_user_iotlb_flush_all(vq); } #ifdef RTE_LIBRTE_VHOST_NUMA diff --git a/lib/librte_vhost/iotlb.h b/lib/librte_vhost/iotlb.h index e7083e37b..60b9e4c57 100644 --- a/lib/librte_vhost/iotlb.h +++ b/lib/librte_vhost/iotlb.h @@ -73,7 +73,7 @@ void vhost_user_iotlb_pending_insert(struct vhost_virtqueue *vq, uint64_t iova, uint8_t perm); void vhost_user_iotlb_pending_remove(struct vhost_virtqueue *vq, uint64_t iova, uint64_t size, uint8_t perm); - +void vhost_user_iotlb_flush_all(struct vhost_virtqueue *vq); int vhost_user_iotlb_init(struct virtio_net *dev, int vq_index); #endif /* _VHOST_IOTLB_H_ */ diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c index c0efb3109..07c848c7c 100644 --- a/lib/librte_vhost/vhost_user.c +++ b/lib/librte_vhost/vhost_user.c @@ -650,6 +650,11 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg) dev->mem = NULL; } + /* Flush IOTLB cache as previous HVAs are now invalid */ + if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)) + for (i = 0; i < dev->nr_vring; i++) + vhost_user_iotlb_flush_all(dev->virtqueue[i]); + dev->nr_guest_pages = 0; if (!dev->guest_pages) { dev->max_guest_pages = 8; -- 2.11.0