From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C2DB8A0577; Tue, 14 Apr 2020 02:33:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1112F1C02D; Tue, 14 Apr 2020 02:33:17 +0200 (CEST) Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by dpdk.org (Postfix) with ESMTP id 1DE2D1C027 for ; Tue, 14 Apr 2020 02:33:15 +0200 (CEST) Received: by mail-qv1-f67.google.com with SMTP id v18so451391qvx.9 for ; Mon, 13 Apr 2020 17:33:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=q+eCkQKGyAJhwzH08QK5OzFP2mLGEvGozEzJjnwIQqQ=; b=c8SaIkRXxqPcoLxAcI5HjqJSLLzbJ2oYK9KLEjcN4XIA1AmiycFxMpDXikBTf65iMk Ic6HbOzeOcQQtFJ8BNO+4rL/B/EDI9FUXcA71I+eXUkDsDJQSOVaTmS3ets4XG+c9bdo OLl6WpbUQxooY/xlrE/NBycLxdTLrldDlJR67ZRPfA6vpyyHT0OJSeif0D5scWkJla2Z 5av1+a1J2wj9iAnQgIVcqSBrpbeZxhuQQa7Pkpf6Zzjte1vizhTC2x9xftFTiJcBvQEH bmcp0Nu7OqGoGXbIRGRLrTD5q3Ml4qKquefJuTTNnIOH5I+fKi3zssy0Q3IEqe867Rrf yDbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=q+eCkQKGyAJhwzH08QK5OzFP2mLGEvGozEzJjnwIQqQ=; b=bpczZQ0FRNOzNy6Yf6R5mZNKlpQkgd+tdK7CeOz8bgwz5Ce5DYx0/jZcpwK7X8hDK+ Yw/ztLj/NhkqfZnoA69c/Io2jK4/oSgUe5dezkQsvmNmggFHDVQ+kmBHRO3fJ+uUZLeH 16rV7ZPjNhcPTF+Gi8VGntdY4/DFMvMSf1EGt8BdikuW3bpigmvfbAGwWFOHhl0LCFZQ HdN3barSLTwYXt0Q49m5l/jeU2OcJJDft30PTUqb3RgBa2eD2kF1pE6T2ahJ7d4FOGj+ cXy0N752lGESdO4DYdK9AxxTgTYc2Zwn+cxvjiYilNeq11AM6zoW5+qVXIrb1oj+FJpW PDCg== X-Gm-Message-State: AGi0PuaB6b3wVQo9Gi7xKoWEMERT3SRi1PTveHaFCpey+sCExfAgBmlu 9Mj1Vnm3BiL1+MN/Acb35MS5LB+tVA3/zhu0zhg= X-Google-Smtp-Source: APiQypIFfLAnB2vIRtDe6mX1/x+Dct/5uaZlOo4tzUfV6umi/FetBAp78iPt+ORtdXt6Wwhc+k3yFTmeMDv/hKtHvZE= X-Received: by 2002:a0c:f242:: with SMTP id z2mr19737027qvl.183.1586824394318; Mon, 13 Apr 2020 17:33:14 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Tonghao Zhang Date: Tue, 14 Apr 2020 08:32:38 +0800 Message-ID: To: Ilya Maximets Cc: Ravi Kerur , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [ovs-dev] OvS DPDK crash when HPET timer enabled X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Apr 14, 2020 at 7:20 AM Ilya Maximets wrote: > > On 4/13/20 5:27 PM, Ravi Kerur wrote: > > On Sun, Apr 12, 2020 at 5:05 AM Tonghao Zhang > > wrote: > > > >> On Sun, Apr 12, 2020 at 7:57 AM Ravi Kerur 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: > >>> . > >>> Find the GDB manual and other documentation resources online at: > >>> . > >>> 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. Hi Ilya I sent a patch to dpdk, but not applied. If applied, I feedback to this thread. > 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
, > >>> argc=14, argv=0x7fff61ae5088, init=0x560fc6e12570 <__libc_csu_init>, > >>> fini=, rtld_fini=, > >>> 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 > > > -- Best regards, Tonghao