From: Thomas Monjalon <thomas@monjalon.net>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>
Cc: "Wang, Xiao W" <xiao.w.wang@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>,
"Zhang, Qi Z" <qi.z.zhang@intel.com>,
"qingfu.cqf@alibaba-inc.com" <qingfu.cqf@alibaba-inc.com>,
"Stojaczyk, Dariusz" <dariusz.stojaczyk@intel.com>,
"stable@dpdk.org" <stable@dpdk.org>,
ferruh.yigit@intel.com
Subject: Re: [PATCH v2] vfio: allow secondary process to query IOMMU type
Date: Mon, 21 Jan 2019 11:21:22 +0100 [thread overview]
Message-ID: <19848055.XTa4X5ecso@xps> (raw)
In-Reply-To: <1b5e395c-1d0e-ffd4-3eb5-8e1d4f77152d@intel.com>
21/01/2019 11:13, Burakov, Anatoly:
> On 19-Jan-19 3:23 AM, Wang, Xiao W wrote:
> > Hi Anatoly,
> >
> > From: Burakov, Anatoly
> >>
> >> It is only possible to know IOMMU type of a given VFIO container
> >> by attempting to initialize it. Since secondary process never
> >> attempts to set up VFIO container itself (because they're shared
> >> between primary and secondary), it never knows which IOMMU type
> >> the container is using, and never sets up the appropriate config
> >> structures. This results in inability to perform DMA mappings in
> >> secondary process.
> >>
> >> Fix this by allowing secondary process to query IOMMU type of
> >> primary's default container at device initialization.
> >>
> >> Note that this fix is assuming we're only interested in default
> >> container.
> >>
> >> Bugzilla ID: 174
> >>
> >> Fixes: 6bcb7c95fe14 ("vfio: share default container in multi-process")
> >> Cc: dariusz.stojaczyk@intel.com
> >> Cc: stable@dpdk.org
> >>
> >> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> >> ---
> >>
> >> Notes:
> >> v2:
> >> - Check if we found our IOMMU type within list of IOMMU types
> >> - Don't request new default container fd as this should have
> >> been done during rte_vfio_enable()
> >>
> >> lib/librte_eal/linuxapp/eal/eal_vfio.c | 88 +++++++++++++++++++
> >> lib/librte_eal/linuxapp/eal/eal_vfio.h | 12 ++-
> >> .../linuxapp/eal/eal_vfio_mp_sync.c | 16 ++++
> >> 3 files changed, 115 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c
> >> b/lib/librte_eal/linuxapp/eal/eal_vfio.c
> >> index 72cc65151..c821e8382 100644
> >> --- a/lib/librte_eal/linuxapp/eal/eal_vfio.c
> >> +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c
> >> @@ -549,6 +549,65 @@ vfio_mem_event_callback(enum rte_mem_event
> >> type, const void *addr, size_t len,
> >> }
> >> }
> >>
> >> +static int
> >> +vfio_sync_default_container(void)
> >> +{
> >> + struct rte_mp_msg mp_req, *mp_rep;
> >> + struct rte_mp_reply mp_reply;
> >> + struct timespec ts = {.tv_sec = 5, .tv_nsec = 0};
> >> + struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
> >> + int iommu_type_id;
> >> + unsigned int i;
> >> +
> >> + /* cannot be called from primary */
> >> + if (rte_eal_process_type() != RTE_PROC_SECONDARY)
> >> + return -1;
> >> +
> >> + /* default container fd should have been opened in rte_vfio_enable()
> >> */
> >> + if (!default_vfio_cfg->vfio_enabled ||
> >> + default_vfio_cfg->vfio_container_fd < 0) {
> >> + RTE_LOG(ERR, EAL, "VFIO support is not initialized\n");
> >> + return -1;
> >> + }
> >> +
> >> + /* find default container's IOMMU type */
> >> + p->req = SOCKET_REQ_IOMMU_TYPE;
> >
> > Since this function is to sync IOMMU type for the default container, should we make the req type as
> > SOCKET_REQ_DEFAULT_IOMMU_TYPE?
>
> Hi,
>
> Sure, that can be done. However, i don't think it warrants a respin
> unless there's more important stuff to fix also. This patch is a
> stop-gap, and this stuff will be rewritten for 19.05, so getting this
> right is not that important :).
Anatoly,
I don't understand what is the use case.
It does not look critical enough to be merged late in 19.02.
next prev parent reply other threads:[~2019-01-21 10:21 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-17 17:30 [PATCH] vfio: allow secondary process to query IOMMU type Anatoly Burakov
2019-01-18 10:13 ` Burakov, Anatoly
2019-01-18 10:24 ` [PATCH v2] " Anatoly Burakov
2019-01-19 3:23 ` Wang, Xiao W
2019-01-21 10:13 ` Burakov, Anatoly
2019-01-21 10:21 ` Thomas Monjalon [this message]
2019-01-21 10:29 ` Burakov, Anatoly
2019-01-21 10:29 ` Stojaczyk, Dariusz
2019-01-21 15:19 ` [dpdk-stable] " 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=19848055.XTa4X5ecso@xps \
--to=thomas@monjalon.net \
--cc=anatoly.burakov@intel.com \
--cc=dariusz.stojaczyk@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=qingfu.cqf@alibaba-inc.com \
--cc=stable@dpdk.org \
--cc=xiao.w.wang@intel.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 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.