On Mon, Apr 13, 2020 at 11:26 PM Ravi Kerur <[email protected]> wrote: > > > > On Sun, Apr 12, 2020 at 5:05 AM Tonghao Zhang <[email protected]> > wrote: >> >> On Sun, Apr 12, 2020 at 7:57 AM Ravi Kerur <[email protected]> wrote: >> > >> > 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 () >> Hi, >> This is a bug on dpdk, NOT ovs. >> I guess that your kernel does't support getentropy which supported in >> 3.17 and your cpu don't support rdseed. >> and that cause a dpdk bug. To workaround, you change: Not tested, hope >> it's useful for you >> > > You are correct CPU doesn't support RDSEED instruction but RDRAND is > supported. > > It's a RT kernel based on 4.19 + RT patches. > > Setting CONFIG_RTE_LIBEAL_USE_HPET=n which is the default,'Invariant TSC' > will be used. However, I want to use HPET so should I check with DPDK dev? You can change code as I said, and set CONFIG_RTE_LIBEAL_USE_HPET=y. The codes changed as stated above only affect dpdk init. hpet shoud be ok. > Thanks, > Ravi > > >> >> diff --git a/lib/librte_eal/linux/eal_timer.c >> b/lib/librte_eal/linux/eal_timer.c >> index a904a8297cd2..4067e46da534 100644 >> --- a/lib/librte_eal/linux/eal_timer.c >> +++ b/lib/librte_eal/linux/eal_timer.c >> @@ -26,7 +26,7 @@ >> #include "eal_private.h" >> #include "eal_internal_cfg.h" >> >> -enum timer_source eal_timer_source = EAL_TIMER_HPET; >> +enum timer_source eal_timer_source = EAL_TIMER_TSC; >> >> #ifdef RTE_LIBEAL_USE_HPET >> >> >> > (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 >> >> >> >> -- >> Best regards, Tonghao
-- Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
