Re: [dpdk-dev] [PATCH v2 3/5] vhost: handle memory hotplug with vDPA devices
From: Xia, Chenbo <hidden>
Date: 2020-06-28 03:18:42
quoted hunk ↗ jump to hunk
-----Original Message----- From: dev <redacted> On Behalf Of Matan Azrad Sent: Thursday, June 25, 2020 9:38 PM To: Maxime Coquelin <redacted> Cc: dev@dpdk.org; Wang, Xiao W <redacted> Subject: [dpdk-dev] [PATCH v2 3/5] vhost: handle memory hotplug with vDPA devices Some vDPA drivers' basic configurations should be updated when the guest memory is hotplugged. Close vDPA device before hotplug operation and recreate it after the hotplug operation is done. Signed-off-by: Matan Azrad <redacted> --- lib/librte_vhost/vhost_user.c | 9 +++++++++ 1 file changed, 9 insertions(+)diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c indexb90fc78..f690fdb 100644--- a/lib/librte_vhost/vhost_user.c +++ b/lib/librte_vhost/vhost_user.c@@ -1073,6 +1073,15 @@ } if (dev->mem) { + if (dev->flags & VIRTIO_DEV_VDPA_CONFIGURED) { + int did = dev->vdpa_dev_id; + struct rte_vdpa_device *vdpa_dev = + rte_vdpa_get_device(did); + + if (vdpa_dev && vdpa_dev->ops->dev_close) + vdpa_dev->ops->dev_close(dev->vid); + dev->flags &= ~VIRTIO_DEV_VDPA_CONFIGURED; + }
For now, this solution is general for all vendors. Later we may improve this by calling vendor's callback as they may behave differently. For now this looks good to me :) (sorry that the reply is late for memory hotplug discussion because of holiday). Thanks!
free_mem_region(dev); rte_free(dev->mem); dev->mem = NULL; -- 1.8.3.1
Reviewed-by: Chenbo Xia <redacted>