DPDK patches and discussions
 help / color / mirror / Atom feed
From: Arnon Warshavsky <arnon@qwilt.com>
To: Aaron Conole <aconole@redhat.com>
Cc: Thomas Monjalon <thomas@monjalon.net>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>,
	 "Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
	"Doherty, Declan" <declan.doherty@intel.com>,
	 jerin.jacob@caviumnetworks.com,
	Bruce Richardson <bruce.richardson@intel.com>,
	 "Yigit, Ferruh" <ferruh.yigit@intel.com>,
	dev@dpdk.org, Kevin Traynor <ktraynor@redhat.com>
Subject: Re: [dpdk-dev] [PATCH v4 10/11] eal: replace rte_panic instances in init sequence
Date: Fri, 20 Apr 2018 16:55:49 +0300	[thread overview]
Message-ID: <CAKy9EB1Xeogye3GsFXX8Jz_z+RqHpqKH=9EWdVLcmhweYA3gbQ@mail.gmail.com> (raw)
In-Reply-To: <f7ttvs7ytnd.fsf@dhcp-25.97.bos.redhat.com>

 Thanks Aaron

Previously, it wasn't possible for mem_cfg_fd to be reused after a

> failure.  Now it is - please reset it to -1. in these close conditions.
>
> Will do.

>
>
> Again, previously this would have aborted on a failure.  So it needs to
> be reset to a value that allows retry.
>

Same here

>
> >       switch (rte_config.process_type){
> >       case RTE_PROC_PRIMARY:
> > -             rte_eal_config_create();
> > +             if (rte_eal_config_create())
> > +                     return -1;
> >               break;
> >       case RTE_PROC_SECONDARY:
> > -             rte_eal_config_attach();
> > +             if (rte_eal_config_attach())
> > +                     return -1;
> >               rte_eal_mcfg_wait_complete(rte_config.mem_config);
> >               break;
> >       case RTE_PROC_AUTO:
> >       case RTE_PROC_INVALID:
>
> Not for this patch, but I just noticed that this should probably use a
> 'default' case.
>
> Will add this while Im here


>
> Use rte_eal_init_alert to indicate why you are failing the init.
>
Will do

>
> >       if (rte_mp_channel_init() < 0) {
> >               rte_eal_init_alert("failed to init mp channel\n");
> > @@ -652,7 +676,8 @@ static void rte_eal_init_alert(const char *msg)
> >
> >       eal_check_mem_on_local_socket();
> >
> > -     eal_thread_init_master(rte_config.master_lcore);
> > +     if (eal_thread_init_master(rte_config.master_lcore) != 0)
> > +             return -1;
>
> Is it ever possible to recover from this?


Definitely not recoverable, but not different than the other cases where
panic propagate all the way up rather than aborting

> Still needs
> rte_eal_init_alert() call.
>
Will do

>
>
> How are you cleaning up the threads that were spawned?  Lets say this
> loop will execute 5 times, and on the 3rd entry, these errors happen.
> You now leave DPDK 'half-initialized' - you've spun up threads and
> allocated memory.
>
...

>
> I don't see how any of this is better for the user.  In fact, I think
> this is worse because it will make portions of the application stop
> working without any way to move forward.  rte_panic() will at least give
> the process a chance to recover from a potentially ephemeral condition.
>
> As I wrote in a different reply on this patch
I was probably too eager to get rid of this panic taking some wrong
assumptions on the way the library will be called.
Removing the panic from the thread is obviously more complex and also ABI
breaking.
>From my own bw, I will not make it with a proper change to this version, so
I will revert back to panicing on this patchset
and aim for the thread in the next build.


>
> This seems to only exist as a way of triggering the run_once check in
> the eal_init.  It doesn't add anything except one more state variable to
> check against.  What is the purpose?
>

Actually this is not a run-once in purpose, rather an attempt to define a
state for the device
and on the way work around breaking abi on the the void function called
before that.

> +     if (rte_get_panic_state())
> +             return -1;
> +

Please just use run_once.  That's a better way of preventing this.
>


> As stated above - no a run-once
>
> All of the comments from the bsd side apply here.
>

  reply	other threads:[~2018-04-20 13:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-19  6:00 [dpdk-dev] [PATCH v4 00/11] eal: replace calls to rte_panic and refrain from new instances Arnon Warshavsky
2018-04-19  6:00 ` [dpdk-dev] [PATCH v4 01/11] crypto: replace rte_panic instances in crypto driver Arnon Warshavsky
2018-04-19 10:53   ` Trahe, Fiona
2018-04-19 13:49     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 02/11] bond: replace rte_panic instances in bonding driver Arnon Warshavsky
2018-04-19 17:25   ` Kevin Traynor
2018-04-20 13:13     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 03/11] e1000: replace rte_panic instances in e1000 driver Arnon Warshavsky
2018-04-19 17:25   ` Kevin Traynor
2018-04-20 13:14     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 04/11] ixgbe: replace rte_panic instances in ixgbe driver Arnon Warshavsky
2018-04-19 17:26   ` Kevin Traynor
2018-04-20 13:16     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 05/11] eal: replace rte_panic instances in eventdev Arnon Warshavsky
2018-04-19 17:26   ` Kevin Traynor
2018-04-20 13:17     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 06/11] kni: replace rte_panic instances in kni Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 07/11] eal: replace rte_panic instances in hugepage_info Arnon Warshavsky
2018-04-19 14:03   ` Burakov, Anatoly
2018-04-19 14:09     ` Arnon Warshavsky
2018-04-19 14:45       ` Burakov, Anatoly
2018-04-19 14:50         ` Burakov, Anatoly
2018-04-20 13:11           ` Arnon Warshavsky
2018-04-19 14:36   ` Kevin Traynor
2018-04-20 13:12     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 08/11] eal: replace rte_panic instances in interrupts thread Arnon Warshavsky
2018-04-19 17:27   ` Kevin Traynor
2018-04-20 13:18     ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 09/11] eal: replace rte_panic instances in ethdev Arnon Warshavsky
2018-04-19 17:27   ` Kevin Traynor
2018-04-20 13:23     ` Arnon Warshavsky
2018-04-20 13:56       ` Thomas Monjalon
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 10/11] eal: replace rte_panic instances in init sequence Arnon Warshavsky
2018-04-19 14:39   ` Burakov, Anatoly
2018-04-19 14:48     ` Arnon Warshavsky
2018-04-19 14:57       ` Burakov, Anatoly
2018-04-19 17:31         ` Kevin Traynor
2018-04-20 13:32           ` Arnon Warshavsky
2018-04-20 13:31         ` Arnon Warshavsky
2018-04-19 17:48   ` Aaron Conole
2018-04-20 13:55     ` Arnon Warshavsky [this message]
2018-04-20 14:53       ` Aaron Conole
2018-04-23  8:07         ` Arnon Warshavsky
2018-04-19  6:01 ` [dpdk-dev] [PATCH v4 11/11] devtools: prevent new instances of rte_panic and rte_exit Arnon Warshavsky
2018-04-19 17:52   ` Aaron Conole
2018-04-20 14:01     ` Arnon Warshavsky
2018-04-20 15:41       ` Burakov, Anatoly

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='CAKy9EB1Xeogye3GsFXX8Jz_z+RqHpqKH=9EWdVLcmhweYA3gbQ@mail.gmail.com' \
    --to=arnon@qwilt.com \
    --cc=aconole@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=ktraynor@redhat.com \
    --cc=thomas@monjalon.net \
    --cc=wenzhuo.lu@intel.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).