[dpdk-dev] rte_eal_init() alternative?

Wiles, Keith keith.wiles at intel.com
Thu Sep 3 00:01:54 CEST 2015


On 9/2/15, 4:08 PM, "dev on behalf of Thomas Monjalon"
<dev-bounces at dpdk.org on behalf of thomas.monjalon at 6wind.com> wrote:

>2015-09-02 12:00, Stephen Hemminger:
>> On Wed, 2 Sep 2015 18:17:40 +0000
>> Don Provan <dprovan at bivio.net> wrote:
>> 
>> > Thomas Monjalon:
>> > >Yes but please, do not create an alternative init function.
>> > >We just need to replace panic/exit with error codes and be sure that
>>apps and examples handle them correctly.
>> > 
>> > I understand your concerns, but the panics are really just the tip of
>>the iceberg of the EAL library not realizing it's a library. It really
>>makes no sense to think the library should define the application's
>>command line, or that the PCI bus should be probed without considering
>>whether this application is going to use PCI, and or to insist that EAL
>>work be done on internal EAL threads.
>> > 
>> > So I'd say it's way past time to consider revamping initialization to
>>start the process of ending the DPDK library's tail wagging the
>>application's dog. Naturally this would have to be done while retaining
>>the existing init routine on top of a real library initialization, but
>>that's just an unfortunate artifact of the library's history, not a
>>rational design decision for moving forward.
>> > 
>> > -don provan
>> > 
>> 
>> You are welcome to submit patches with what you are proposing for
>>review.
>> Theoretical requirements discussions will probably only result in more
>>mail,
>> not new code. You know what you want, propose a solution.
>
>+1
>Everybody agree that DPDK should be more flexible.
>We move from a bare metal framework to a real library.
>They are shortcuts in original design which can be changed.

+1
I was also asked at one point, at DPDK summit was, if a structure based
init routine would be better for applications. Instead of passing in
command line argvs he wanted to setup a structure in his application to be
passed into a new API. The old argvs rte_eal_init() would setup a
structure and call into the new rte_eal_struct_init() routine (I guess).

I could see the new API would return ERROR (plus errno) to the application
if called directly or return ERROR to rte_eal_init() to be handle from the
command line.

That stated I am not a big fan of huge structures being passed into a init
routine as that structure would need to be versioned and it will
grow/change. Plus he did not really want to deal in strings, so the
structure would be binary values and strings as required.

He also wanted DPDK to be more dynamic, meaning some of the values we have
in the config files should be more dynamic set via the structure and
possible have APIs to enable/disable or set the values. Each config option
would have to be looked at IMO, as some are not very easy to be dynamic
and maybe not reasonable at all.

I believe looking at the current problem of not doing a exit/panic is the
first step, next step, if everyone wants, is to look at how to initialize
DPDK from an application perspective as compared to a command line one.

>
>> As far as the command line. That is easily managed by realizing the
>>application
>> doesn't have to pass the original command line into EAL. If you just
>>view the
>> command line as a way to pass unstructured options; the application or
>>infrastructure
>> can build up new values and pass it in.
>> 
>> I agree that initialization itself should try and not fail except in the
>> most extreme cases.  "ie I can't find /sys what is wrong" and should try
>> and adapt more "you asked for 128 cpu's but I see only 2, log it and
>>continue"
>> 
>
>
>


‹ 
Regards,
++Keith
Intel Corporation





More information about the dev mailing list