Hello OvS DPDK team, I am using OvS 2.13.90 and DPDK 19.11 and wanted to use HPET timer instead of invariant TSC.
Enabled CONFIG_RTE_LIBEAL_USE_HPET=y in DPDK Kernel has CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_HPET=y CONFIG_HPET_MMAP=y CONFIG_HPET_MMAP_DEFAULT=y cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc # cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm OvS crashes at gdb ovsdb-server /core GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html > This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ovsdb-server...done. [New LWP 9729] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `ovsdb-server /usr/local/etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vf'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000560fc6db8ac1 in rte_get_hpet_cycles () (gdb) bt #0 0x0000560fc6db8ac1 in rte_get_hpet_cycles () #1 0x0000560fc6c482b0 in rte_rand_init () #2 0x0000560fc6e125bd in __libc_csu_init () #3 0x00007f5e1f930b28 in __libc_start_main (main=0x560fc6c45940 <main>, argc=14, argv=0x7fff61ae5088, init=0x560fc6e12570 <__libc_csu_init>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff61ae5078) at ../csu/libc-start.c:266 #4 0x0000560fc6c485da in _start () (gdb) quit RTE_INIT(rte_rand_init) { ... } rte_rand_init is defined as initializer, following diffs won't help, diff --git a/lib/dpdk.c b/lib/dpdk.c index 31450d470..f3d3989c8 100644 --- a/lib/dpdk.c +++ b/lib/dpdk.c @@ -405,6 +405,12 @@ dpdk_init__(const struct smap *ovs_other_config) if (result < 0) { VLOG_EMER("Unable to initialize DPDK: %s", ovs_strerror(rte_errno)); return false; + } else { +#ifdef RTE_LIBEAL_USE_HPET + if (rte_eal_hpet_init(1) < 0) { + VLOG_ERR("HPET is not enabled, using TSC as default timer\n"); + } +#endif } if (VLOG_IS_DBG_ENABLED()) { Kindly let me know your inputs on how to overcome this issue. Thanks, Ravi _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
