vhost: use dynamic log type
Checks
Commit Message
Rather than overloading USER1 and USER2 logtypes,
use a DPDK dynamic log type.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
lib/librte_vhost/vhost.c | 12 ++++++++++++
lib/librte_vhost/vhost.h | 5 +++--
2 files changed, 15 insertions(+), 2 deletions(-)
Comments
Hi Stephen,
On 11/12/19 10:47 PM, Stephen Hemminger wrote:
> Rather than overloading USER1 and USER2 logtypes,
> use a DPDK dynamic log type.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> lib/librte_vhost/vhost.c | 12 ++++++++++++
> lib/librte_vhost/vhost.h | 5 +++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
> index 1cbe948f7470..9149770a16f5 100644
> --- a/lib/librte_vhost/vhost.c
> +++ b/lib/librte_vhost/vhost.c
> @@ -27,6 +27,8 @@
>
> struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];
>
> +int vhost_logtype_config, vhost_logtype_data;
> +
> /* Called with iotlb_lock read-locked */
> uint64_t
> __vhost_iova_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq,
> @@ -1457,3 +1459,13 @@ int rte_vhost_extern_callback_register(int vid,
> dev->extern_data = ctx;
> return 0;
> }
> +
> +RTE_INIT(rte_vhost_init_log)
> +{
> + vhost_logtype_config = rte_log_register("lib.vhost.config");
> + if (vhost_logtype_config >= 0)
> + rte_log_set_level(vhost_logtype_config, RTE_LOG_NOTICE);
> + vhost_logtype_data = rte_log_register("lib.vhost.data");
> + if (vhost_logtype_data >= 0)
> + rte_log_set_level(vhost_logtype_data, RTE_LOG_NOTICE);
> +}
> diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
> index 9f11b28a31bf..87ce24991c26 100644
> --- a/lib/librte_vhost/vhost.h
> +++ b/lib/librte_vhost/vhost.h
> @@ -499,8 +499,9 @@ vhost_log_write_iova(struct virtio_net *dev, struct vhost_virtqueue *vq,
> }
>
> /* Macros for printing using RTE_LOG */
> -#define RTE_LOGTYPE_VHOST_CONFIG RTE_LOGTYPE_USER1
> -#define RTE_LOGTYPE_VHOST_DATA RTE_LOGTYPE_USER1
> +extern int vhost_logtype_config, vhost_logtype_data;
> +#define RTE_LOGTYPE_VHOST_CONFIG vhost_logtype_config
> +#define RTE_LOGTYPE_VHOST_DATA vhost_logtype_data
>
> #ifdef RTE_LIBRTE_VHOST_DEBUG
> #define VHOST_MAX_PRINT_BUFF 6072
>
Adrian posted an alternative patch before you to support dynamic
logging. Moreover, Adrian patch makes the data path logs to be compiled
out by default, which is better from performance point of view.
This is last version of Adrian's patch:
http://patches.dpdk.org/patch/63565/
I propose to drop your patch and pick Adrian's instead.
Thanks,
Maxime
@@ -27,6 +27,8 @@
struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];
+int vhost_logtype_config, vhost_logtype_data;
+
/* Called with iotlb_lock read-locked */
uint64_t
__vhost_iova_to_vva(struct virtio_net *dev, struct vhost_virtqueue *vq,
@@ -1457,3 +1459,13 @@ int rte_vhost_extern_callback_register(int vid,
dev->extern_data = ctx;
return 0;
}
+
+RTE_INIT(rte_vhost_init_log)
+{
+ vhost_logtype_config = rte_log_register("lib.vhost.config");
+ if (vhost_logtype_config >= 0)
+ rte_log_set_level(vhost_logtype_config, RTE_LOG_NOTICE);
+ vhost_logtype_data = rte_log_register("lib.vhost.data");
+ if (vhost_logtype_data >= 0)
+ rte_log_set_level(vhost_logtype_data, RTE_LOG_NOTICE);
+}
@@ -499,8 +499,9 @@ vhost_log_write_iova(struct virtio_net *dev, struct vhost_virtqueue *vq,
}
/* Macros for printing using RTE_LOG */
-#define RTE_LOGTYPE_VHOST_CONFIG RTE_LOGTYPE_USER1
-#define RTE_LOGTYPE_VHOST_DATA RTE_LOGTYPE_USER1
+extern int vhost_logtype_config, vhost_logtype_data;
+#define RTE_LOGTYPE_VHOST_CONFIG vhost_logtype_config
+#define RTE_LOGTYPE_VHOST_DATA vhost_logtype_data
#ifdef RTE_LIBRTE_VHOST_DEBUG
#define VHOST_MAX_PRINT_BUFF 6072