* [PATCH] maintainers: claim to be reviewer of virtio/vhost component @ 2015-11-12 4:10 Yuanhan Liu 2015-11-12 4:10 ` [PATCH] vhost: reset device properly Yuanhan Liu 2015-11-12 11:34 ` [PATCH] maintainers: claim to be reviewer of virtio/vhost component Thomas Monjalon 0 siblings, 2 replies; 5+ messages in thread From: Yuanhan Liu @ 2015-11-12 4:10 UTC (permalink / raw) To: dev Firstly, Chuangchun's email address's been invalid for a while. Secondly, I'd like to take the responsibility to review patches of virtio/vhost component. Cc: Huawei Xie <huawei.xie@intel.com> Cc: Thomas Monjalon <thomas.monjalon@6wind.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index c8be5d2..b05724a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -262,7 +262,7 @@ F: doc/guides/nics/mlx5.rst RedHat virtio M: Huawei Xie <huawei.xie@intel.com> -M: Changchun Ouyang <changchun.ouyang@intel.com> +M: Yuanhan Liu <yuanhan.liu@linux.intel.com> F: drivers/net/virtio/ F: doc/guides/nics/virtio.rst F: lib/librte_vhost/ -- 1.9.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] vhost: reset device properly 2015-11-12 4:10 [PATCH] maintainers: claim to be reviewer of virtio/vhost component Yuanhan Liu @ 2015-11-12 4:10 ` Yuanhan Liu 2015-11-12 8:31 ` Rich Lane 2015-11-12 11:34 ` [PATCH] maintainers: claim to be reviewer of virtio/vhost component Thomas Monjalon 1 sibling, 1 reply; 5+ messages in thread From: Yuanhan Liu @ 2015-11-12 4:10 UTC (permalink / raw) To: dev Currently, we reset all fields of a device to zero when reset happens, which is wrong, since for some fields like device_fh, ifname, and virt_qp_nb, they should be same and be kept after reset until the device is removed. And this is what's the new helper function reset_device() for. And use rte_zmalloc() instead of rte_malloc, so that we could avoid init_device(), which basically dose zero reset only so far. Hence, init_device() is dropped in this patch. This patch also removes a hack of using the offset a specific field (which is virtqueue now) inside of `virtio_net' structure to do reset, which could be broken easily if someone changed the field order without caution. Cc: Tetsuya Mukawa <mukawa@igel.co.jp> Cc: Xie Huawei <huawei.xie@intel.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> --- This patch is based on: http://dpdk.org/dev/patchwork/patch/8818/ --- lib/librte_vhost/virtio-net.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c index 39a6a5e..cc917da 100644 --- a/lib/librte_vhost/virtio-net.c +++ b/lib/librte_vhost/virtio-net.c @@ -204,6 +204,7 @@ cleanup_device(struct virtio_net *dev) munmap((void *)(uintptr_t)dev->mem->mapped_address, (size_t)dev->mem->mapped_size); free(dev->mem); + dev->mem = NULL; } for (i = 0; i < dev->virt_qp_nb; i++) { @@ -306,20 +307,18 @@ alloc_vring_queue_pair(struct virtio_net *dev, uint32_t qp_idx) } /* - * Initialise all variables in device structure. + * Reset some variables in device structure, while keeping few + * others untouched, such as device_fh, ifname, virt_qp_nb: they + * should be same unless the device is removed. */ static void -init_device(struct virtio_net *dev) +reset_device(struct virtio_net *dev) { - int vq_offset; uint32_t i; - /* - * Virtqueues have already been malloced so - * we don't want to set them to NULL. - */ - vq_offset = offsetof(struct virtio_net, virtqueue); - memset(dev, 0, vq_offset); + dev->features = 0; + dev->protocol_features = 0; + dev->flags = 0; for (i = 0; i < dev->virt_qp_nb; i++) init_vring_queue_pair(dev, i); @@ -336,7 +335,7 @@ new_device(struct vhost_device_ctx ctx) struct virtio_net_config_ll *new_ll_dev; /* Setup device and virtqueues. */ - new_ll_dev = rte_malloc(NULL, sizeof(struct virtio_net_config_ll), 0); + new_ll_dev = rte_zmalloc(NULL, sizeof(struct virtio_net_config_ll), 0); if (new_ll_dev == NULL) { RTE_LOG(ERR, VHOST_CONFIG, "(%"PRIu64") Failed to allocate memory for dev.\n", @@ -344,9 +343,6 @@ new_device(struct vhost_device_ctx ctx) return -1; } - /* Initialise device and virtqueues. */ - init_device(&new_ll_dev->dev); - new_ll_dev->next = NULL; /* Add entry to device configuration linked list. */ @@ -430,7 +426,6 @@ static int reset_owner(struct vhost_device_ctx ctx) { struct virtio_net *dev; - uint64_t device_fh; dev = get_device(ctx); if (dev == NULL) @@ -439,10 +434,8 @@ reset_owner(struct vhost_device_ctx ctx) if (dev->flags & VIRTIO_DEV_RUNNING) notify_ops->destroy_device(dev); - device_fh = dev->device_fh; cleanup_device(dev); - init_device(dev); - dev->device_fh = device_fh; + reset_device(dev); return 0; } -- 1.9.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] vhost: reset device properly 2015-11-12 4:10 ` [PATCH] vhost: reset device properly Yuanhan Liu @ 2015-11-12 8:31 ` Rich Lane 2015-11-12 11:31 ` Thomas Monjalon 0 siblings, 1 reply; 5+ messages in thread From: Rich Lane @ 2015-11-12 8:31 UTC (permalink / raw) To: Yuanhan Liu; +Cc: dev On Wed, Nov 11, 2015 at 8:10 PM, Yuanhan Liu <yuanhan.liu@linux.intel.com> wrote: > Currently, we reset all fields of a device to zero when reset > happens, which is wrong, since for some fields like device_fh, > ifname, and virt_qp_nb, they should be same and be kept after > reset until the device is removed. And this is what's the new > helper function reset_device() for. > > And use rte_zmalloc() instead of rte_malloc, so that we could > avoid init_device(), which basically dose zero reset only so far. > Hence, init_device() is dropped in this patch. > > This patch also removes a hack of using the offset a specific > field (which is virtqueue now) inside of `virtio_net' structure > to do reset, which could be broken easily if someone changed the > field order without caution. > > Cc: Tetsuya Mukawa <mukawa@igel.co.jp> > Cc: Xie Huawei <huawei.xie@intel.com> > Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> > I had a patch that just saved the ifname but this is much better. Acked-by: Rich Lane <rlane@bigswitch.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] vhost: reset device properly 2015-11-12 8:31 ` Rich Lane @ 2015-11-12 11:31 ` Thomas Monjalon 0 siblings, 0 replies; 5+ messages in thread From: Thomas Monjalon @ 2015-11-12 11:31 UTC (permalink / raw) To: Yuanhan Liu; +Cc: dev > > Currently, we reset all fields of a device to zero when reset > > happens, which is wrong, since for some fields like device_fh, > > ifname, and virt_qp_nb, they should be same and be kept after > > reset until the device is removed. And this is what's the new > > helper function reset_device() for. > > > > And use rte_zmalloc() instead of rte_malloc, so that we could > > avoid init_device(), which basically dose zero reset only so far. > > Hence, init_device() is dropped in this patch. > > > > This patch also removes a hack of using the offset a specific > > field (which is virtqueue now) inside of `virtio_net' structure > > to do reset, which could be broken easily if someone changed the > > field order without caution. > > > > Cc: Tetsuya Mukawa <mukawa@igel.co.jp> > > Cc: Xie Huawei <huawei.xie@intel.com> > > Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> > > > > I had a patch that just saved the ifname but this is much better. > > Acked-by: Rich Lane <rlane@bigswitch.com> Applied, thanks ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] maintainers: claim to be reviewer of virtio/vhost component 2015-11-12 4:10 [PATCH] maintainers: claim to be reviewer of virtio/vhost component Yuanhan Liu 2015-11-12 4:10 ` [PATCH] vhost: reset device properly Yuanhan Liu @ 2015-11-12 11:34 ` Thomas Monjalon 1 sibling, 0 replies; 5+ messages in thread From: Thomas Monjalon @ 2015-11-12 11:34 UTC (permalink / raw) To: Yuanhan Liu; +Cc: dev 2015-11-12 12:10, Yuanhan Liu: > Firstly, Chuangchun's email address's been invalid for a while. > > Secondly, I'd like to take the responsibility to review patches > of virtio/vhost component. [...] > RedHat virtio > M: Huawei Xie <huawei.xie@intel.com> > -M: Changchun Ouyang <changchun.ouyang@intel.com> > +M: Yuanhan Liu <yuanhan.liu@linux.intel.com> > F: drivers/net/virtio/ > F: doc/guides/nics/virtio.rst > F: lib/librte_vhost/ Again, thanks Yuanhan for the excellent contributions and welcome new maintainer! Changchun, you are still welcome with a new email address if you have some time. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-11-12 11:35 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-12 4:10 [PATCH] maintainers: claim to be reviewer of virtio/vhost component Yuanhan Liu 2015-11-12 4:10 ` [PATCH] vhost: reset device properly Yuanhan Liu 2015-11-12 8:31 ` Rich Lane 2015-11-12 11:31 ` Thomas Monjalon 2015-11-12 11:34 ` [PATCH] maintainers: claim to be reviewer of virtio/vhost component Thomas Monjalon
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.