DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Umar Farooq <umar1.farooq1@gmail.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] EAL PCI dev problem when using .a file to compile app
Date: Thu, 18 Jun 2015 11:06:18 +0100	[thread overview]
Message-ID: <20150618100618.GC7972@bricha3-MOBL3> (raw)
In-Reply-To: <CALOK9fLSOM4u=f1MRWsnzj97qrmRm-1eX6ybkgJmw4x-THXkGQ@mail.gmail.com>

On Thu, Jun 18, 2015 at 01:07:33PM +0500, Umar Farooq wrote:
> Hi
> 
> I am trying to write an application "abc" using DPDK 2.0.0 that calls
> rte_eal_init to test if EAL is setup correctly. I have run "helloworld" and
> "l2fwd" applications and they run fine on my setup.
> 
> A new thing that i am trying is to create a libdpdk.a file using build
> target "x86_64-native-linuxapp-gcc" and use it to compile my application.
> The application simply calls "rte_eal_init(argc, argv)" and exits. It
> compiles successfully and runs but the EAL doesn't initialize the PCI
> devices.
> 
> The flow is this:
> 
> 1. The method to create libdpdk.a is by using this shell script:
> #bin/bash
> rm -f libdpdk.a
> cp /path_to/dpdk/x86_64-native-linuxapp-gcc/lib/* .
> DPDK_LIBS=$(ls *.a)
> for file in *.a; do
>     ar -x "$file"
> done
> ar -rcs libdpdk.a *.o
> 
> 2. Application is compiled using the command:
> gcc abc.c /path_to/dpdk/libdpdk.a
> -I/path_to/dpdk/x86_64-native-linuxapp-gcc/include -lpthread -lrt -ldl
> -mssse3 -lm -o abc
> 
> 3. After the successful compilation, the app is run using the command:
> ./abc -c c -n 4 -b 00:03.0
> 
> 4. Application calls rte_eal_init(argc, argv), which calls
> rte_eal_pci_probe(), which calls pci_probe_all_drivers().
> 
> 5. In the last function called, pci_probe_all_drivers(struct rte_pci_device
> *dev) in
> dpdk/lib/librte_eal/common/eal_common_pci.c file, the control never enters
> the loop:
> TAILQ_FOREACH(dr, &pci_driver_list, next) {
>                 rc = rte_eal_pci_probe_one_driver(dr, dev);
>                 if (rc < 0)
>                         /* negative value is an error */
>                         return -1;
>                 if (rc > 0)
>                         /* positive value means driver not found */
>                         continue;
>                 return 0;
>         }
> 
> and the function always returns 1.
> 
> If the application is compiled using normal Makefile as used by l2fwd or
> helloworld example apps, this problem doesn't occur and application calls
> the "rte_eal_pci_probe_one_driver(dr, dev)" in "TAILQ_FOREACH" loop.
> 
> The question is what am I missing while creating the libdpdk.a and
> compiling application using it?
> 
> Thanks for your time.
> 
> Regards
> Umar

This may be due to a missing "--no-as-needed" flag in the link stage of your
application. If so, the drivers are not getting registered at startup, so pci
probing fails to find your devices.

/Bruce

  reply	other threads:[~2015-06-18 10:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-18  8:07 Umar Farooq
2015-06-18 10:06 ` Bruce Richardson [this message]
2015-06-19  5:15   ` Umar Farooq

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=20150618100618.GC7972@bricha3-MOBL3 \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=umar1.farooq1@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).