[dpdk-dev] [PATCH v2] eal: don't call RTE_LOG before init

David Marchand david.marchand at redhat.com
Wed Oct 16 09:42:00 CEST 2019


On Thu, Sep 19, 2019 at 3:31 PM Stephen Hemminger
<stephen at networkplumber.org> wrote:
>
> rte_init_alert is called before rte_log is initialized.

rte_eal_init_alert*

> Therefore RTE_LOG() should not be used (only stderr).

There should be nothing disastrous when calling RTE_LOG() before
rte_eal_log_init has been called.
RTE_LOG -> rte_vlog with rte_logs.file == default_log_stream == NULL
=> it should end up writing to stderr in such a case.

And I understand this is the issue you wanted to fix because we write
the same messages twice on stderr.

>
> For VFIO, it is initialized after rte_log_init therefore,
> use RTE_LOG.

What about all the other calls after the vfio setup step?
Now with this change, they would only be passed to stderr even if the
log subsystem is initialised.

Can we have a "log initialised" boolean here and use it in rte_eal_init_alert?

>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>  lib/librte_eal/linux/eal/eal.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
> index 946222ccdb7a..6f54a8b2133f 100644
> --- a/lib/librte_eal/linux/eal/eal.c
> +++ b/lib/librte_eal/linux/eal/eal.c
> @@ -950,7 +950,6 @@ static int rte_eal_vfio_setup(void)
>  static void rte_eal_init_alert(const char *msg)
>  {
>         fprintf(stderr, "EAL: FATAL: %s\n", msg);
> -       RTE_LOG(ERR, EAL, "%s\n", msg);
>  }
>
>  /*
> @@ -1175,7 +1174,7 @@ rte_eal_init(int argc, char **argv)
>
>  #ifdef VFIO_PRESENT
>         if (rte_eal_vfio_setup() < 0) {
> -               rte_eal_init_alert("Cannot init VFIO");
> +               RTE_LOG(ERR, EAL, "Cannot init VFIO\n");
>                 rte_errno = EAGAIN;
>                 rte_atomic32_clear(&run_once);
>                 return -1;
> --
> 2.17.1
>


-- 
David Marchand


More information about the dev mailing list