DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: Takeshi Yoshimura <t.yoshimura8869@gmail.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v4] vfio: fix workaround of BAR0 mapping
Date: Tue, 17 Jul 2018 11:08:19 +0100	[thread overview]
Message-ID: <67f6563c-200b-1ec3-899c-83e86fbcf2dd@intel.com> (raw)
In-Reply-To: <20180717082230.3322-1-t.yoshimura8869@gmail.com>

On 17-Jul-18 9:22 AM, Takeshi Yoshimura wrote:
> The workaround of BAR0 mapping gives up and immediately returns an
> error if it cannot map around the MSI-X. However, recent version
> of VFIO allows MSIX mapping (*).
> 
> I fixed not to return immediately but try mapping. In old Linux, mmap
> just fails and returns the same error as the code before my fix . In
> recent Linux, mmap succeeds and this patch enables running DPDK in
> specific environments (e.g., ppc64le with HGST NVMe)

I don't think this applies to BAR0 only - it can be any BAR. Suggested 
rewording:

Currently, VFIO will try to map around MSI-X table in the BARs. When 
MSI-X table (page-aligned) size is equal to (page-aligned) size of BAR, 
VFIO will just skip the BAR.

Recent kernel versions will allow VFIO to map the entire BAR containing 
MSI-X tables (*), so instead of trying to map around the MSI-X vector or 
skipping the BAR entirely if it's not possible, we can now try mapping 
the entire BAR first. If mapping the entire BAR doesn't succeed, fall 
back to the old behavior of mapping around MSI-X table or skipping the BAR.

> 
> (*): "vfio-pci: Allow mapping MSIX BAR",
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
> commit/id=a32295c612c57990d17fb0f41e7134394b2f35f6

I think your link is wrong here - at least i can't find the commit when 
i copypaste the link into my browser.

> 
> Fixes: 90a1633b2347 ("eal/linux: allow to map BARs with MSI-X tables")
> 
> Signed-off-by: Takeshi Yoshimura <t.yoshimura8869@gmail.com>
> ---

<snip>

> +	memreg[0].offset = bar->offset;
> +	memreg[0].size = bar->size;
> +	do {
>   		void *map_addr = NULL;
> +		if (again) {
> +			/*
> +			 * VFIO did not let us map the MSI-X table,
> +			 * but we can map around it.
> +			 */
> +			uint32_t table_start = msix_table->offset;
> +			uint32_t table_end = table_start + msix_table->size;
> +			table_end = (table_end + ~PAGE_MASK) & PAGE_MASK;
> +			table_start &= PAGE_MASK;
> +
> +			if (table_start == 0 && table_end >= bar->size) {
> +				/* Cannot map this BAR */
> +				RTE_LOG(DEBUG, EAL, "Skipping BAR%d\n",
> +						bar_index);
> +				bar->size = 0;
> +				bar->addr = 0;
> +				return 0;

You have reserved space for the BAR earlier but do not unmap it on return.

Once that is fixed,

Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>

-- 
Thanks,
Anatoly

  reply	other threads:[~2018-07-17 10:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-12  2:44 [dpdk-dev] [PATCH] " Takeshi Yoshimura
2018-07-12  3:08 ` [dpdk-dev] [PATCH v2] " Takeshi Yoshimura
2018-07-12  9:10   ` Burakov, Anatoly
2018-07-13 10:11   ` [dpdk-dev] [PATCH v3] " Takeshi Yoshimura
2018-07-13 11:00     ` Burakov, Anatoly
2018-07-13 11:08       ` Burakov, Anatoly
2018-07-17  8:21         ` Takeshi Yoshimura
2018-07-17  8:22   ` [dpdk-dev] [PATCH v4] " Takeshi Yoshimura
2018-07-17 10:08     ` Burakov, Anatoly [this message]
2018-07-20  8:13   ` [dpdk-dev] [PATCH v5] vfio: fix workaround of BAR mapping Takeshi Yoshimura
2018-07-26  9:35     ` Thomas Monjalon
2018-07-29  8:44       ` Jerin Jacob
2018-07-30  8:51         ` Burakov, Anatoly
2018-07-30 10:03           ` Burakov, Anatoly

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=67f6563c-200b-1ec3-899c-83e86fbcf2dd@intel.com \
    --to=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=t.yoshimura8869@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).