From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: dev@dpdk.org
Subject: Re: [PATCH 1/2] virtio: initialize iopl when device is initialized
Date: Wed, 29 Jul 2015 19:26:17 +0200 [thread overview]
Message-ID: <3368758.BASS8qfG8B@xps13> (raw)
In-Reply-To: <20150306082057.5c505f54@urahara>
2015-03-06 08:20, Stephen Hemminger:
> The issue is that virtio has no place it can do iopl() and have the IRQ thread
> work. It only shows up on real code where application is daemon, not in a toy
> demo or test application.
>
> Right now:
> gcc start
> rte_virtio_pmd_init
> iopl
> main
> daemon
> fork
> fork
> Process is now child of init not original process
>
> rte_eal_init
> fork (pthread) for irq thread
> irq thread
> (no iopl permssion)
> program start
> rte_pmd_virtio_configure
This call tree is wrong.
Below is the right (and more complete) one:
gcc start
driver constructor
rte_eal_driver_register (if .a)
main
rte_eal_init
eal_parse_args
rte_eal_pci_init
rte_eal_memory_init
rte_eal_intr_init
pthread_create
eal_intr_thread_main
eal_intr_handle_interrupts
eal_intr_process_interrupts
virtio_interrupt_handler
dlopen (if .so)
driver constructor
rte_eal_driver_register
rte_eal_dev_init
driver->init
rte_virtio_pmd_init
rte_eal_iopl_init
rte_eth_driver_register
pthread_create
rte_eal_pci_probe
driver->devinit
rte_eth_dev_init
rte_eth_dev_allocate
eth_drv->eth_dev_init
eth_virtio_dev_init
virtio_resource_init
> So the only place where iopl() can be done in the proper context
> so that the IRQ (and other helper threads in future) have the correct
> permissions is in eal_init.
No there are 2 other possible solutions:
1) Move rte_eal_intr_init() after rte_eal_dev_init().
2) Move dlopen() before rte_eal_intr_init() and call iopl in the constructor.
With the second solution, we must also keep an iopl call in rte_virtio_pmd_init()
to return an error if iopl fails.
The second solution was proposed in the series sent by David:
http://dpdk.org/ml/archives/dev/2015-March/014931.html
http://dpdk.org/ml/archives/dev/2015-March/014932.html
next prev parent reply other threads:[~2015-07-29 17:27 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-06 0:45 [PATCH 0/2] virtio: bugfixes Stephen Hemminger
[not found] ` <1425602726-26538-1-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-06 0:45 ` [PATCH 1/2] virtio: initialize iopl when device is initialized Stephen Hemminger
[not found] ` <1425602726-26538-2-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-06 3:41 ` Ouyang, Changchun
[not found] ` <F52918179C57134FAEC9EA62FA2F962511A0C1AF-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-06 16:20 ` Stephen Hemminger
2015-03-06 16:33 ` David Marchand
[not found] ` <CALwxeUuVtO3Dp4Y3UWQU9HtaVtAffOTzV9jnuETMvZ+NSgamfA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-06 16:55 ` Stephen Hemminger
2015-03-06 22:04 ` David Marchand
[not found] ` <CALwxeUuGMh5q2O6zxOEkUaNUyehxmb_0ruvf+hsq_Y7nfNF2-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-06 23:43 ` Stephen Hemminger
2015-03-07 6:53 ` David Marchand
2015-03-09 11:05 ` David Marchand
[not found] ` <CALwxeUuQtv685KnbmpZKCPkrAqmjLs558xeCW7c=-TPTsB423w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-09 14:56 ` [PATCH 0/2] fix virtio interrupt handling David Marchand
[not found] ` <1425912999-13118-1-git-send-email-david.marchand-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-09 14:56 ` [PATCH 1/2] eal/linux: move plugin load to very start of eal init David Marchand
[not found] ` <1425912999-13118-2-git-send-email-david.marchand-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-09 15:21 ` Neil Horman
[not found] ` <20150309152106.GA24326-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2015-03-10 9:08 ` David Marchand
[not found] ` <CALwxeUs4hPbYDPBUfz9u2AoiCoj_wwTsAyj=_1xxzuT6LLW6nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-10 10:55 ` Neil Horman
2015-10-14 0:05 ` Stephen Hemminger
2015-10-14 9:55 ` David Marchand
2015-03-09 14:56 ` [PATCH 2/2] virtio: change io privilege level as early as possible David Marchand
[not found] ` <1425912999-13118-3-git-send-email-david.marchand-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-10 13:14 ` Neil Horman
2015-09-29 19:25 ` Stephen Hemminger
2015-09-30 8:28 ` David Marchand
2015-09-30 14:52 ` Neil Horman
2015-09-30 15:37 ` Thomas Monjalon
2015-09-30 17:26 ` Stephen Hemminger
2015-10-01 11:25 ` Neil Horman
2015-10-12 20:08 ` Stephen Hemminger
2015-10-14 0:07 ` Stephen Hemminger
2015-10-14 8:00 ` David Marchand
2015-10-14 9:49 ` David Marchand
2015-10-14 9:50 ` [PATCH] eal: move interrupt init after device init David Marchand
2015-10-14 11:32 ` David Marchand
2015-10-20 21:22 ` Thomas Monjalon
2015-07-29 17:26 ` Thomas Monjalon [this message]
2015-03-06 0:45 ` [PATCH 2/2] virtio: allow running w/o vlan filtering Stephen Hemminger
[not found] ` <1425602726-26538-3-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-06 3:39 ` Ouyang, Changchun
[not found] ` <F52918179C57134FAEC9EA62FA2F962511A0C194-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-06 16:24 ` Stephen Hemminger
2015-07-29 12:56 ` Thomas Monjalon
2015-07-30 1:23 ` Ouyang, Changchun
2015-08-04 12:51 ` Vincent JARDIN
2015-08-05 1:01 ` Ouyang, Changchun
2015-08-05 1:22 ` Stephen Hemminger
2015-08-05 10:49 ` Vincent JARDIN
2015-10-21 13:58 ` Thomas Monjalon
2017-02-15 8:38 ` Thomas Monjalon
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=3368758.BASS8qfG8B@xps13 \
--to=thomas.monjalon@6wind.com \
--cc=dev@dpdk.org \
--cc=stephen@networkplumber.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.