From: Ilya Maximets <i.maximets@ovn.org>
To: Ravi Kerur <rkerur@gmail.com>, Tonghao Zhang <xiangxia.m.yue@gmail.com>
Cc: i.maximets@ovn.org, dev@dpdk.org
Subject: Re: [dpdk-dev] [ovs-dev] OvS DPDK crash when HPET timer enabled
Date: Tue, 14 Apr 2020 01:20:21 +0200 [thread overview]
Message-ID: <b28128fd-c569-9d9a-8071-59f197a433d3@ovn.org> (raw)
In-Reply-To: <CAFb4SLAd68BTMHsxhyy7S9CGC413zNEYZ_8Sasem1maHczuOgQ@mail.gmail.com>
On 4/13/20 5:27 PM, Ravi Kerur wrote:
> On Sun, Apr 12, 2020 at 5:05 AM Tonghao Zhang <xiangxia.m.yue@gmail.com>
> wrote:
>
>> On Sun, Apr 12, 2020 at 7:57 AM Ravi Kerur <rkerur@gmail.com> 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?
Yes. This is a pure DPDK bug. There is no way to fix it from the OVS side.
Adding dpdk-dev in CC, moving ovs-dev to BCC to avoid cross posting.
Actually, looking at the code in DPDK, it's really old. I'm wondering if it
ever worked? Looks like no-one ever tested this configuration.
Best regards, Ilya Maximets.
>
> 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
>>> dev@openvswitch.org
>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
>>
>>
>> --
>> Best regards, Tonghao
>>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
next parent reply other threads:[~2020-04-13 23:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAFb4SLBvP2fVbKM8xjeLN07+zfL29vxDd6FDvMNiNuiv4jtO1Q@mail.gmail.com>
[not found] ` <CAMDZJNVNYLv0E3suXtyTMc+Dwym+HOw+S38BNQHYuBHYV43Sfg@mail.gmail.com>
[not found] ` <CAFb4SLAd68BTMHsxhyy7S9CGC413zNEYZ_8Sasem1maHczuOgQ@mail.gmail.com>
2020-04-13 23:20 ` Ilya Maximets [this message]
2020-04-14 0:32 ` Tonghao Zhang
2020-04-14 21:27 ` Ravi Kerur
2020-04-27 11:06 ` Tonghao Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b28128fd-c569-9d9a-8071-59f197a433d3@ovn.org \
--to=i.maximets@ovn.org \
--cc=dev@dpdk.org \
--cc=rkerur@gmail.com \
--cc=xiangxia.m.yue@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).