[dpdk-dev] [PATCH 1/2] virtio: initialize iopl when device is initialized
David Marchand
david.marchand at 6wind.com
Fri Mar 6 23:04:33 CET 2015
On Fri, Mar 6, 2015 at 5:55 PM, Stephen Hemminger <
stephen at networkplumber.org> wrote:
> No virtio_dev_init is called too late, after interrupt handling
> threads are spawned.
>
> /* Launch threads, called at application init(). */
> int
> rte_eal_init(int argc, char **argv)
> {
> int i, fctret, ret;
> ...
> if (rte_eal_intr_init() < 0)
> rte_panic("Cannot init interrupt-handling thread\n");
> ...
>
> if (rte_eal_dev_init() < 0)
> rte_panic("Cannot init pmd devices\n"
>
There is no "io level" loss when going through fork and/or daemon : this
affirmation contradicts the manual and my test programs.
Now, looking at the problem from scratch, the constructor in virtio pmd
does not call iopl().
It registers a driver with an init function called from rte_eal_dev_init().
So iopl() is not called at "_start" time (in both virtio static or shared
object cases), but in rte_eal_dev_init().
In the end, the fix would be to move rte_eal_intr_init() after
rte_eal_dev_init().
Can you test this ?
Thanks.
--
David Marchand
More information about the dev
mailing list