From: liujie5@linkdatatechnology.com
To: stephen@networkplumber.org
Cc: dev@dpdk.org, liufeng1 <liufeng1@sugon.com>
Subject: [PATCH v1 0/1] bus/pci: add RTE_PCI_DRV_NEED_IOVA_AS_PA flag
Date: Sat, 10 Oct 2026 17:25:24 +0800 [thread overview]
Message-ID: <20261010092525.2025485-1-liujie5@linkdatatechnology.com> (raw)
From: liufeng1 <liufeng1@sugon.com>
This series adds a new PCI driver flag, RTE_PCI_DRV_NEED_IOVA_AS_PA,
which allows a PCI driver to tell the PCI bus layer that it cannot work
with IOVA as VA and must use IOVA as PA.
The existing RTE_PCI_DRV_NEED_IOVA_AS_VA flag already provides the
opposite requirement. Some PCI devices, however, are managed by a kernel
driver that uses an identity-mapped IOMMU domain (e.g. when the kernel
is booted with iommu=pt). The user-space PMD for such devices must use
IOVA as PA, because the DMA addresses programmed by DPDK must match the
identity mapping programmed by the kernel driver.
Without this flag, a PCI driver bound to a non-VFIO/UIO kernel driver
has no way to force IOVA as PA. pci_device_iova_mode() returns
RTE_IOVA_DC for those devices, and rte_eal_init() then sees an enabled
IOMMU and selects RTE_IOVA_VA, which breaks identity-domain PMDs and
forces users to pass --iova-mode=pa on the command line.
When RTE_PCI_DRV_NEED_IOVA_AS_PA is set, pci_device_iova_mode() returns
RTE_IOVA_PA for the device. The requirement is propagated through
rte_pci_get_iommu_class() to rte_bus_get_iommu_class(), so
rte_eal_init() selects IOVA as PA automatically.
This is a generic mechanism: any PCI driver whose underlying kernel
driver uses an identity IOMMU domain can set the flag.
liufeng1 (1):
bus/pci: add RTE_PCI_DRV_NEED_IOVA_AS_PA flag
drivers/bus/pci/bus_pci_driver.h | 2 ++
drivers/bus/pci/linux/pci.c | 4 ++++
drivers/bus/pci/pci_common.c | 3 +--
3 files changed, 7 insertions(+), 2 deletions(-)
--
2.52.0
next reply other threads:[~2026-10-10 9:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-10 9:25 liujie5 [this message]
2026-10-10 9:25 ` [PATCH v1 1/1] bus/pci: add RTE_PCI_DRV_NEED_IOVA_AS_PA flag liujie5
2026-10-12 7:53 ` Bruce Richardson
2026-10-20 12:03 ` [PATCH v2 0/1] " liujie5
2026-10-20 12:03 ` [PATCH v2 1/1] " liujie5
-- strict thread matches above, loose matches on Subject: below --
2026-06-26 6:49 [PATCH v9 23/23] net/sxe2: update sxe2 feature matrix docs liujie5
2026-10-20 11:50 ` [PATCH v1 0/1] bus/pci: add RTE_PCI_DRV_NEED_IOVA_AS_PA flag liujie5
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=20261010092525.2025485-1-liujie5@linkdatatechnology.com \
--to=liujie5@linkdatatechnology.com \
--cc=dev@dpdk.org \
--cc=liufeng1@sugon.com \
--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.