| Age | Commit message (Collapse) | Author |
|
The value of RTE_IOVA_IN_MBUF has always been disabled on CNXK
platforms, as IOVA in the mbuf is unnecessary. This update changes that
behavior to respect the value set by the user. A warning message will be
printed if the build is configured to enable IOVA on the CNXK platform.
Signed-off-by: Shijith Thotton <[email protected]>
|
|
if user gives option -Ddrivers_install_subdir= or
-Ddrivers_install_subdir=. to install all the PMDs in
parent directory, The post installation script
"symlink-drivers-solibs.sh" can create invalid library file
named 'librte_*.so*' or meson installation errors:
ln: './librte_*' and './librte_*' are the same file
FAILED: install script '/bin/sh /home/nxa12342/upstream/dpdk/config/.
/buildtools/symlink-drivers-solibs.sh lib/x86_64-linux-gnu .' exit code 1,
stopped
FAILED: meson-install
This patch removes this post-install script execution to symlink
the PMDs libraries when no sub directory is given.
Signed-off-by: Gagandeep Singh <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
Non-prefetchable read setting in the source descriptor may be
required for targets other than local memory. Prefetchable read
setting will offer better performance for misaligned transfers
in the form of fewer transactions and should be set if possible.
This patch also fixes QDMA stall issue due to unaligned
transactions.
Signed-off-by: Jun Yang <[email protected]>
Signed-off-by: Gagandeep Singh <[email protected]>
|
|
ERR050757 on LS104x indicates:
For outbound PCIe read transactions, a completion buffer is used
to store the PCIe completions till the data is passed back to the
initiator. At most 16 outstanding transactions are allowed and
maximum read request is 256 bytes. The completion buffer size
inside the controller needs to be at least 4KB, but the PCIe
controller has 3 KB of buffer. In case the size of pending
outbound read transactions of more than 3KB, the PCIe controller
may drop the incoming completions without notifying the initiator
of the transaction, leaving transactions unfinished. All
subsequent outbound reads to PCIe are blocked permanently.
To avoid qDMA hang as it keeps waiting for data that was silently
dropped, set stride mode for qDMA.
Signed-off-by: Jun Yang <[email protected]>
Signed-off-by: Gagandeep Singh <[email protected]>
|
|
OVS locks all pages to avoid page faults while processing packets.
1M for each lcore translates to allocating 128M with default build
options on x86.
This resulted in OOM while running unit tests in parallel.
At the moment, the more demanding DPDK user of lcore variable is
rte_service, with a 2112 bytes object.
Limit the lcore variable maximum size to 128k which looks more reasonable.
Fixes: 5bce9bed67ad ("eal: add static per-lcore memory allocation facility")
Signed-off-by: David Marchand <[email protected]>
Signed-off-by: Thomas Monjalon <[email protected]>
|
|
Introduce DPDK per-lcore id variables, or lcore variables for short.
An lcore variable has one value for every current and future lcore
id-equipped thread.
The primary <rte_lcore_var.h> use case is for statically allocating
small, frequently-accessed data structures, for which one instance
should exist for each lcore.
Lcore variables are similar to thread-local storage (TLS, e.g., C11
_Thread_local), but decoupling the values' life time with that of the
threads.
Lcore variables are also similar in terms of functionality provided by
FreeBSD kernel's DPCPU_*() family of macros and the associated
build-time machinery. DPCPU uses linker scripts, which effectively
prevents the reuse of its, otherwise seemingly viable, approach.
The currently-prevailing way to solve the same problem as lcore
variables is to keep a module's per-lcore data as RTE_MAX_LCORE-sized
array of cache-aligned, RTE_CACHE_GUARDed structs. The benefit of
lcore variables over this approach is that data related to the same
lcore now is close (spatially, in memory), rather than data used by
the same module, which in turn avoid excessive use of padding,
polluting caches with unused data.
Signed-off-by: Mattias Rönnblom <[email protected]>
Acked-by: Morten Brørup <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
Acked-by: Stephen Hemminger <[email protected]>
|
|
On x86 platforms, max lcores are limited to 128 by default.
On AMD EPYC processors, this limit was adjusted for native builds in
the commit acb34af951cf ("config/x86: increase lcores number for native
AMD EPYC")
As agreed earlier in mailing list, this patch adjusts the limit
for specific AMD EPYC target/cross builds.
Signed-off-by: Sivaprasad Tummala <[email protected]>
Acked-by: Morten Brørup <[email protected]>
|
|
Caught in UNH logs for native compilation on ARM:
Program /...../dpdk/config/arm/armv8_machine.py found: YES
(/...../dpdk/config/arm/armv8_machine.py)
WARNING: Project targeting '>= 0.57' but tried to use feature deprecated
since '0.55.0': ExternalProgram.path. use ExternalProgram.full_path()
instead
There is nothing to search, nor a reason to call the script with an
absolute path.
The script can be directly pointed at with files().
Fixes: 200b88cbe0e6 ("build: detect micro-arch on ARM")
Fixes: 6f3dbd306de0 ("build: increase minimum meson version to 0.57")
Signed-off-by: David Marchand <[email protected]>
Reviewed-by: Robin Jarry <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
|
|
The flag '-Wno-address-of-packed-member' is a global warning flag in
DPDK. Rather than disabling this warning globally, it is better to just
have it enabled for components that may need it. This patch limits the
scope of it in the following ways:
* limit the use of the flag to the drivers subfolder only - all libs and
apps should be buildable without the warning.
* exception is made for the vhost library and the ipsec-secgw example
for now, as making them buildable with the warning enabled is more
complicated. This exception can hopefully be removed in future.
Limiting the scope further within the drivers directory is also left for
future consideration. However, since HW drivers often have to use packed
structures to align with hardware-implemented data layouts, it may be
more practical to keep the warning disabled in the longer term.
Signed-off-by: Bruce Richardson <[email protected]>
Acked-by: Stephen Hemminger <[email protected]>
Acked-by: Morten Brørup <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
|
|
The zero length array warning can be re-enabled.
The zero length marker fields are now removed by
commit 9e152e674c77 ("mbuf: remove marker fields")
in DPDK 24.03.
This reverts the commit
cfacbcb5a23b ("build: disable gcc 10 zero-length-bounds warning")
Signed-off-by: Stephen Hemminger <[email protected]>
Acked-by: Morten Brørup <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
Acked-by: Kevin Traynor <[email protected]>
|
|
Add a 32-bit cross file for x86 for Arch linux.
Signed-off-by: Bruce Richardson <[email protected]>
Acked-by: David Marchand <[email protected]>
|
|
Add cross compilation target for building 32-bit x86 DPDK on Fedora or
RHEL.
Signed-off-by: Bruce Richardson <[email protected]>
Acked-by: David Marchand <[email protected]>
|
|
To simplify building 32-bit binaries on 64-bit system, we can supply a
cross compilation file which provides the relevant compiler flags and
settings needed - '-m32' compile/link flag, and appropriate
PKG_CONFIG_LIBDIR value. This latter setting will depend upon the layout
format of the particular OS/distro in use, so initially add a cross file
with paths set for Debian or Ubuntu systems.
Note, unlike previous cross files, this file has a .ini extension which
means that editors use correct syntax highlighting on it.
Signed-off-by: Bruce Richardson <[email protected]>
Acked-by: Vladimir Medvedkin <[email protected]>
Acked-by: David Marchand <[email protected]>
|
|
The meson function "get_cross_property" is deprecated in meson 0.58 and
should be replaced by "get_external_property".
Signed-off-by: Bruce Richardson <[email protected]>
Reviewed-by: Robin Jarry <[email protected]>
Tested-by: Ferruh Yigit <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
|
|
Since minimum meson version is now 0.57 we can remove all version checks
for versions lower than that.
Signed-off-by: Bruce Richardson <[email protected]>
Reviewed-by: Robin Jarry <[email protected]>
Tested-by: Ferruh Yigit <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
|
|
Add Arm Neoverse N3 part number to build configuration.
Signed-off-by: Wathsala Vithanage <[email protected]>
Reviewed-by: Dhruv Tripathi <[email protected]>
|
|
Rather than having each driver do its own checking for AVX-512 support,
let's do it once in config/x86/meson.build and let all drivers and
libraries reuse that result.
Signed-off-by: Bruce Richardson <[email protected]>
Acked-by: David Marchand <[email protected]>
|
|
Some applications want to omit the trace feature.
Either to reduce the memory footprint, to reduce the exposed attack
surface, or for other reasons.
This patch adds an option in rte_config.h to include or omit trace in the
build.
Trace is included by default.
Omitting trace works by omitting all trace points.
For API and ABI compatibility, the trace feature itself remains.
Furthermore, a public function to determine if trace is build time enabled
is added; mainly for the benefit of the unit tests.
Signed-off-by: Morten Brørup <[email protected]>
Acked-by: Stephen Hemminger <[email protected]>
Acked-by: Jerin Jacob <[email protected]>
|
|
The AmpereOneAC04 is efficient Cloud Native CPU:
Up to 192 Cores
2MB Private L2 Cache per Core
8 channel DDR5
128 lanes PCIe Gen5
Signed-off-by: Yutang Jiang <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
|
|
Starting meson 1.3.0, the pkgconfig variable is deprecated in favor of
pkg-config. Keep both variables as suggested in meson RN.
Link: https://mesonbuild.com/Release-notes-for-1-3-0.html#machine-files-pkgconfig-field-deprecated-and-replaced-by-pkgconfig
Cc: [email protected]
Signed-off-by: David Marchand <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
|
|
Add fallback march for Neoverse V2 to support build with older
compilers that doesn't support mcpu = 'neoverse-v2'.
Signed-off-by: Anoob Joseph <[email protected]>
Acked-by: Jerin Jacob <[email protected]>
|
|
Allow RTE_ARM_USE_WFE to be enabled at meson configuration
time by passing it via c_args instead of modifying
`config/arm/meson.build`.
Example usage:
meson build -Dc_args='-DRTE_ARM_USE_WFE' \
--cross-file config/arm/arm64_cn10k_linux_gcc
Signed-off-by: Pavan Nikhilesh <[email protected]>
Acked-by: Chengwen Feng <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
Reviewed-by: Honnappa Nagarahalli <[email protected]>
Reviewed-by: Wathsala Vithanage <[email protected]>
|
|
Some ARM CPUs have specific march requirements and
are not compatible with the supported march list.
Add fallback march in case the mcpu and the march
advertised in the part_number_config are not supported
by the compiler.
Example
mcpu = neoverse-n2
march = armv9-a
fallback_march = armv8.5-a
mcpu, march not supported
machine_args = ['-march=armv8.5-a']
mcpu, march, fallback_march not supported
least march supported = armv8-a
machine_args = ['-march=armv8-a']
Signed-off-by: Pavan Nikhilesh <[email protected]>
Reviewed-by: Juraj Linkeš <[email protected]>
|
|
Some older compilers don't recognize crypto march feature
for thunderxt83 mcpu.
Explicitly add it to march feature list.
Signed-off-by: Pavan Nikhilesh <[email protected]>
Acked-by: Jerin Jacob <[email protected]>
|
|
Add armv9-a as supported march flag for ARM neoverse
class of processors.
Update supported march list to include armv9-a.
Signed-off-by: Pavan Nikhilesh <[email protected]>
|
|
The compiler options march and mtune are a subset
of mcpu and will lead to conflicts if improper march
is chosen for a given mcpu.
To avoid conflicts, discard part number march when
mcpu is available and is supported by the compiler.
Example:
march = armv9-a
mcpu = neoverse-n2
mcpu supported, march supported
machine_args = ['-mcpu=neoverse-n2']
mcpu supported, march not supported
machine_args = ['-mcpu=neoverse-n2']
mcpu not supported, march supported
machine_args = ['-march=armv9-a']
mcpu not supported, march not supported
machine_args = ['-march=armv8.6-a']
Signed-off-by: Pavan Nikhilesh <[email protected]>
Reviewed-by: Juraj Linkeš <[email protected]>
|
|
Move 'soc_cn9k' above 'soc_cn10k' to have the list alphabetically
sorted.
Signed-off-by: Anoob Joseph <[email protected]>
Reviewed-by: Morten Brørup <[email protected]>
Reviewed-by: Honnappa Nagarahalli <[email protected]>
|
|
The default value for RTE_PKTMBUF_HEADROOM used to be set in
config/rte_config.h. This patch removes it from the file and
instead, a Meson option, pkt_mbuf_headroom, is introduced to make
headroom tunable from the build process.
Signed-off-by: Parthakumar Roy <[email protected]>
|
|
Add meson build configuration for Marvell Odyssey platform with 64-bit
ARM Neoverse V2 cores.
Signed-off-by: Anoob Joseph <[email protected]>
Reviewed-by: Honnappa Nagarahalli <[email protected]>
Reviewed-by: Ruifeng Wang <[email protected]>
|
|
Add meson build configuration for AWS Graviton4 platform
with 64-bit Arm Neoverse V2 cores.
Signed-off-by: Honnappa Nagarahalli <[email protected]>
Reviewed-by: Wathsala Vithanage <[email protected]>
|
|
Add meson build configuration for NVIDIA Grace platform
with 64-bit Arm Neoverse V2 cores.
Signed-off-by: Honnappa Nagarahalli <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
Reviewed-by: Wathsala Vithanage <[email protected]>
|
|
Add generic V2 CPU SoC. This will allow for compiling a binary
that will run on any SoC that uses V2 CPU.
Signed-off-by: Honnappa Nagarahalli <[email protected]>
Reviewed-by: Wathsala Vithanage <[email protected]>
|
|
Add Arm Neoverse V2 CPU part number
Signed-off-by: Honnappa Nagarahalli <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
Reviewed-by: Wathsala Vithanage <[email protected]>
|
|
The platform value would be 'native' only when not cross build.
Move the operation about modifying cpu_instruction_set while
platform equals 'native' to the not cross build branch.
Fixes: bf66003b51ec ("build: use platform for generic and native builds")
Cc: [email protected]
Signed-off-by: Joyce Kong <[email protected]>
Reviewed-by: Ruifeng Wang <[email protected]>
Acked-by: Stephen Hemminger <[email protected]>
Tested-by: Pavan Nikhilesh <[email protected]>
|
|
* Use RTE_USE_C11_MEM_MODEL when building with MSVC.
* When building with MSVC enable building of ring library.
Signed-off-by: Tyler Retzlaff <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
* MSVC now has limited handling of GCC __extension__ keyword when
compiling C so only expand __extension__ empty on MSVC when
building with C++.
* When building with MSVC enable the statement expressions compiler
extension.
* When building with MSVC enable building of eal library.
Signed-off-by: Tyler Retzlaff <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
Add support for running DPDK applications directly on AMD Pensando
embedded HW. The platform exposes the device BARs through UIO. The
UIO code in the common/ionic library walks the sysfs filesystem
to identify the relevant BARs and map them into process memory.
The SoCs are named 'Capri' and 'Elba'.
The vdev device interface code is located in ionic_dev_vdev.c.
Some datapath operations are #ifdef-ed out to save on resources when
running in embedded mode.
Some control path operations are skipped by the ionic_is_embedded()
helper function.
Before ringing the doorbell, use an ARM 'dsb st' barrier. The normal
barrier inside rte_write64() is insufficient on these devices due to
a chip errata.
Signed-off-by: Andrew Boyer <[email protected]>
Signed-off-by: Neel Patel <[email protected]>
Signed-off-by: R Mohamed Shah <[email protected]>
Signed-off-by: Alfredo Cardigliano <[email protected]>
Acked-by: Ferruh Yigit <[email protected]>
Reviewed-by: Honnappa Nagarahalli <[email protected]>
|
|
Stop writing RTE_TOOLCHAIN_XXX macros to rte_build_config.h. When an
application builds it doesn't necessarily use the same toolchain that
DPDK was built with.
Instead evaluate toolchain predefined macros and define
RTE_TOOLCHAIN_XXX macros as appropriate each time rte_config.h is
preprocessed.
Signed-off-by: Tyler Retzlaff <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
The default behaviour of "ld.lld" has changed, so it now prints out
warnings about entries in the version.map file which don't exist in
the current build. Since we use our version.map file simply to filter
out the functions we don't want made public, we include in it all
functions across all OS's and builds that we want public if present.
This causes these ld warnings to be emitted, e.g. on BSD, which is
missing functionality found on Linux. For example:
* hpet functions in EAL
* regexdev enqueue and dequeue burst
* eventdev event_timer functions
Easiest solution, without major rework of how we use our version.map
files, and without dynamically generating them per-build, is to pass
the --undefined-version flag to the linker, to restore the old
behaviour.
Cc: [email protected]
Signed-off-by: Bruce Richardson <[email protected]>
|
|
On x86 platforms, max lcores are limited to 128 by default.
On AMD EPYC processors, this limit was adjusted for native builds in the
commit acb34af951cf ("config/x86: increase lcores number for native AMD EPYC")
As agreed earlier in mailing list, this patch adjusts the limit
for specific AMD EPYC target/cross builds.
Signed-off-by: Sivaprasad Tummala <[email protected]>
Acked-by: Morten Brørup <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
|
|
If building riscv natively with -Dplatform=generic, config/meson.build
will select cpu_instruction_set=riscv.
That was fine because config/riscv/meson.build did override it to valid
values later, but since commit b7676fcccab4 ("config: verify machine arch
flag"), it will break the build as it tries to test -march=riscv which
is not a valid value.
The generic setting used in most cases is rv64gc, set this here
as well.
Fixes: b7676fcccab4 ("config: verify machine arch flag")
Fixes: f22e705ebf12 ("eal/riscv: support RISC-V architecture")
Signed-off-by: Christian Ehrhardt <[email protected]>
Acked-by: Sivaprasad Tummala <[email protected]>
|
|
By default, max lcores are limited to 128 for x86 platforms.
On AMD EPYC processors, this limit needs to be increased to
leverage all the cores.
The patch adjusts the limit specifically for native compilation
on AMD EPYC CPUs.
techboard: https://mails.dpdk.org/archives/dev/2023-October/279672.html
Signed-off-by: Sivaprasad Tummala <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Morten Brørup <[email protected]>
|
|
In order to avoid linking with Libs.private, libarchive
is not added to ext_deps during the meson setup stage.
Since libarchive is not added to ext_deps, cross-compilation
or native compilation with libarchive installed in non-standard
location fails with errors related to "cannot find -larchive"
or "archive.h: No such file or directory". In order to fix the
build failures, user is required to define the 'c_args' and
'c_link_args' with '-I<includedir>' and '-L<libdir>'.
This patch adds libarchive to ext_deps and further would not
require setting c_args and c_link_args externally.
Fixes: 40edb9c0d36b ("eal: handle compressed firmware")
Cc: [email protected]
Signed-off-by: Srikanth Yalavarthi <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
Added additional checks for compiler support of specific cpu arch
flags to fix incorrect error reporting.
Without this patch, meson build reports '__SSE4_2__' not defined
error for x86 builds when the compiler does not support the specified
cpu_instruction_set (or) machine argument.
Signed-off-by: Sivaprasad Tummala <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
The aarch32 with gcc13 fails with:
Compiler for C supports arguments -march=armv8-a: NO
../config/arm/meson.build:714:12: ERROR: Problem encountered: No
suitable armv8 march version found.
This is because we test -march=armv8-a alone (without the -mpfu option),
which is no longer supported in gcc13 aarch32 builds.
The most recent recommendation from the compiler team is to build with
-march=armv8-a+simd -mfpu=auto, which should work for compilers old and
new. The suggestion is to first check -march=armv8-a+simd and only then
check -mfpu=auto.
To address this, add a way to force the architecture (the value of
the -march option).
Cc: [email protected]
Signed-off-by: Juraj Linkeš <[email protected]>
Acked-by: Ruifeng Wang <[email protected]>
Reviewed-by: Paul Szczepanek <[email protected]>
|
|
This patch adds the part number for Cortex-A55 ARM Cores
A55 is used in NXP-i.mx93 SoCs.
Signed-off-by: Hemant Agrawal <[email protected]>
|
|
Added support to configure and close TVMDP library based
on ML device configuration options.
Updated meson build to enable Jansson, TVM runtime, TVMDP
library as build dependencies.
Signed-off-by: Srikanth Yalavarthi <[email protected]>
|
|
Temporarily disable integer truncation and conversion warnings for MSVC
to allow CI pipeline to be established.
Signed-off-by: Tyler Retzlaff <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
|
|
Currently the uncore power management implementation is vendor specific.
Added new vendor agnostic uncore power interface similar to rte_power
and rename specific implementations ("rte_power_intel_uncore") to
"power_intel_uncore" along with functions.
Signed-off-by: Sivaprasad Tummala <[email protected]>
|
|
A collection of event queues linked to an event port can be
associated with a unique identifier called as a link profile, multiple
such profiles can be created based on the event device capability
using the function `rte_event_port_profile_links_set` which takes
arguments similar to `rte_event_port_link` in addition to the profile
identifier.
The maximum link profiles that are supported by an event device
is advertised through the structure member
`rte_event_dev_info::max_profiles_per_port`.
By default, event ports are configured to use the link profile 0
on initialization.
Once multiple link profiles are set up and the event device is started,
the application can use the function `rte_event_port_profile_switch`
to change the currently active profile on an event port. This effects
the next `rte_event_dequeue_burst` call, where the event queues
associated with the newly active link profile will participate in
scheduling.
An unlink function `rte_event_port_profile_unlink` is provided
to modify the links associated to a profile, and
`rte_event_port_profile_links_get` can be used to retrieve the
links associated with a profile.
Using Link profiles can reduce the overhead of linking/unlinking and
waiting for unlinks in progress in fast-path and gives applications
the ability to switch between preset profiles on the fly.
Signed-off-by: Pavan Nikhilesh <[email protected]>
Acked-by: Jerin Jacob <[email protected]>
|