From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2F6394333D; Thu, 16 Nov 2023 02:29:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BE35D402C7; Thu, 16 Nov 2023 02:29:10 +0100 (CET) Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by mails.dpdk.org (Postfix) with ESMTP id 6C8B6402C6 for ; Thu, 16 Nov 2023 02:29:09 +0100 (CET) Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-50799fe3422so63400e87.1 for ; Wed, 15 Nov 2023 17:29:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngcopy-com.20230601.gappssmtp.com; s=20230601; t=1700098149; x=1700702949; darn=dpdk.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xPHYPCPb6nYRlc8vEo8E8H2SS0ngQS0eoFwPkei1vm0=; b=0dbQdUe8DyLlUL5CIaFSCeFbqVzAzn7Mb7I0XaA4FG6+3UzNkCzv5IRwYSMVNdnF+P RgcAutWgSniR41prJMLPn0BE8K6d6/E0bPSxPbgXkNFr+N629cNCunkjLO7KvR22KT0T J9SrRimjVgGext2SIsVxauwg9FeGdY+v5EmjqQWRi24yuJymTGwCXDCCz06snq5o12U+ x5zi8OlVc3eWevR/gWoYSi2J2DJuvueb3MzpREDPOyPfYjK7wp6s8ReYmzjocIxi7X68 SaKPqyDW+0sJcDsyb0+tjdaOKLyhWMZcAA5nIK084oZ6CNmOJcr2emnL869BbQrB7GsL FClA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700098149; x=1700702949; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xPHYPCPb6nYRlc8vEo8E8H2SS0ngQS0eoFwPkei1vm0=; b=obQi+BBn0EeexsY+OB1d9anKR8DMKPe/9nNoBjEVCQZGjTQi6+cOfwGCnw5r3bMNma P9t+IpwSo2lIKhpcBOC7TbyzlIzzJkuvO0hwoz6cHHbgM0jyZuawwzE/e70hCchdn0Lj Vf7GDZdbzCAqA45liICjSKTPdkwDqkG7FRfq2nfliS4aXP2PTQvmjdQmcktGztKlARl3 /Bq8H4+0BA9SmrpaSuazGl76Q2I4/LHYbsD2lD0CXa3R8J6e/aKAOQBjSg/UoCikH9mT nrNvKvIFV5rPMCf1GXR1jGyfJguAjTaiiGsBuy04RoCnxl4+kEoua92hSk+7BfYWBPHl F8Xg== X-Gm-Message-State: AOJu0Yxrf4P9jaq122YRuwISPbvBcpjC99/+Nh5z36NGBtq2qIr503Og sCjEIwpPus5odZvDhV7wJrh7kaCr6J3N7YFDD9IyDA== X-Google-Smtp-Source: AGHT+IHzIflykqqc0Sr78k5R4RwU/iiyuWqw31b/mBIk/ACIQQc/TKd/oIVBE+9Hbhio1LxWySGEL4EHVVeDFqf2MR8= X-Received: by 2002:a05:6512:3ca8:b0:508:1a9d:d768 with SMTP id h40-20020a0565123ca800b005081a9dd768mr5022972lfv.4.1700098147765; Wed, 15 Nov 2023 17:29:07 -0800 (PST) MIME-Version: 1.0 References: <20231103040202.2849-1-dave@youngcopy.com> <20231103040202.2849-6-dave@youngcopy.com> In-Reply-To: From: Dave Young Date: Wed, 15 Nov 2023 20:28:55 -0500 Message-ID: Subject: Re: [PATCH v3 5/7] Section 5: Appendix To: Bruce Richardson Cc: dev@dpdk.org, Aaron Conole Content-Type: multipart/alternative; boundary="0000000000002e67bd060a3af2f5" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --0000000000002e67bd060a3af2f5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Bruce, Is the following Linux update correct per your feedback? Linux ----- To run DPDK applications without root privileges on Linux, perform the following steps: 1. **Create a DPDK User Group**: Create a new user group for DPDK and add the desired user to this group. 2. **Set Up Hugepages**: Configure hugepages for the user. 3. **Bind the NIC to a User-Space Driver**: Use the DPDK tool ``dpdk-devbind.py`` to bind the NIC to a user-space driver like ``vfio-pci`` or ``igb_uio``. 4. **Adjust Permissions for Specific Files and Directories**: - VFIO entries in ``/dev``, such as ``/dev/vfio/``, where is the VFIO group to which a device used by DPDK belongs. - The hugepage mount directory, typically ``/dev/hugepages`` on many distributions, or any alternative mount point configured by the user, e.g., ``/mnt/huge``, ``/mnt/huge_1G``. Note: Running DPDK as non-root on Linux requires IOMMU support through vfio. 5. **Run the DPDK Application**: Run the desired DPDK application as the user who has been added to the DPDK group. FreeBSD ------- - The userspace-io device files in ``/dev``, for example, ``/dev/uio0``, ``/dev/uio1``, and so on - The userspace contiguous memory device: ``/dev/contigmem`` Refer to the `DPDK Release Notes < https://doc.dpdk.org/guides/rel_notes/index.html>`_ for supported applications. Thanks! David Young Professional Copywriter/Technical Writer Young Copy +1 (678) 500-9550 https://www.youngcopy.com On Fri, Nov 3, 2023 at 11:24=E2=80=AFAM Bruce Richardson wrote: > I haven't reviewed this whole file in detail, as I assume most content is > copy-pasted from existing docs and so is correct. One comment inline belo= w, > though. > > /Bruce > > On Fri, Nov 03, 2023 at 12:01:51AM -0400, David Young wrote: > > --- > > .../appendix/cross_compile_dpdk.rst | 37 +++ > > .../appendix/dpdk_meson_build_options.rst | 57 ++++ > > .../getting_started_guide/appendix/index.rst | 17 + > > .../running_dpdk_apps_without_root.rst | 36 +++ > > .../appendix/vfio_advanced.rst | 295 ++++++++++++++++++ > > 5 files changed, 442 insertions(+) > > create mode 100644 > doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst > > create mode 100644 > doc/guides/getting_started_guide/appendix/dpdk_meson_build_options.rst > > create mode 100644 doc/guides/getting_started_guide/appendix/index.rst > > create mode 100644 > doc/guides/getting_started_guide/appendix/running_dpdk_apps_without_root.= rst > > create mode 100644 > doc/guides/getting_started_guide/appendix/vfio_advanced.rst > > > > diff --git > a/doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst > b/doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst > > new file mode 100644 > > index 0000000000..3e4efe23a4 > > --- /dev/null > > +++ b/doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst > > @@ -0,0 +1,37 @@ > > +.. SPDX-License-Identifier: BSD-3-Clause > > + Copyright(c) 2010-2025 Intel Corporation. > > + > > +.. _cross_compile_dpdk: > > + > > +Cross-compiling DPDK for Different Architectures on Linux > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > > + > > +Cross-compiling DPDK for different architectures follows a similar > process. Here are the general steps: > > + > > +1. **Get Compiler and Libraries**: Obtain the cross-compiler toolchain > and any required libraries specific to the target architecture. > > + > > +2. **Build Using Cross-File**: Use Meson to set up the build with a > cross-file specific to the target architecture, and then build with Ninja= . > > + > > +Prerequisites > > +------------- > > + > > +- NUMA Library (if required) > > +- Meson and Ninja > > +- pkg-config for the target architecture > > +- Specific GNU or LLVM/Clang toolchain for the target architecture > > + > > +Cross-Compiling DPDK > > +-------------------- > > + > > +1. **Set Up the Cross Toolchain**: Download and extract the toolchain > for the target architecture. Add it to the PATH. > > + > > +2. **Compile Any Required Libraries**: Compile libraries like NUMA if > required. > > + > > +3. **Cross-Compile DPDK with Meson**: > > + > > + .. code-block:: bash > > + > > + meson setup cross-build --cross-file > > > + ninja -C cross-build > > + > > +Refer to the specific sections for ARM64, LoongArch, and RISC-V for > detailed instructions and architecture-specific considerations. > > \ No newline at end of file > > diff --git > a/doc/guides/getting_started_guide/appendix/dpdk_meson_build_options.rst > b/doc/guides/getting_started_guide/appendix/dpdk_meson_build_options.rst > > new file mode 100644 > > index 0000000000..6669f98371 > > --- /dev/null > > +++ > b/doc/guides/getting_started_guide/appendix/dpdk_meson_build_options.rst > > @@ -0,0 +1,57 @@ > > +.. SPDX-License-Identifier: BSD-3-Clause > > + Copyright(c) 2010-2025 Intel Corporation. > > + > > +.. _dpdk_meson_build_options: > > + > > +DPDK Meson Build Configuration Options > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > + > > +DPDK provides a number of build configuration options that can be > adjusted using the Meson build system. These options can be listed by > running ``meson configure`` inside a configured build > > +folder. > > + > > +Changing the Build Type > > +----------------------- > > + > > +To change the build type from the default "release" to a regular > "debug" build, > > +you can either: > > + > > +- Pass ``-Dbuildtype=3Ddebug`` or ``--buildtype=3Ddebug`` to meson whe= n > configuring the build folder initially. > > +- Run ``meson configure -Dbuildtype=3Ddebug`` inside the build folder > after the initial meson run. > > + > > +Platform Options > > +---------------- > > + > > +The "platform" option specifies a set of configuration parameters that > will be used. > > +The valid values are: > > + > > +- ``-Dplatform=3Dnative`` will tailor the configuration to the build > machine. > > +- ``-Dplatform=3Dgeneric`` will use configuration that works on all > machines of the same architecture as the build machine. > > +- ``-Dplatform=3D`` will use configuration optimized for a > particular SoC. > > + > > +Consult the "socs" dictionary in ``config/arm/meson.build`` to see > which SoCs are supported. > > + > > +Overriding Platform Parameters > > +------------------------------ > > + > > +The values determined by the platform parameter may be overwritten. Fo= r > example, > > +to set the ``max_lcores`` value to 256, you can either: > > + > > +- Pass ``-Dmax_lcores=3D256`` to meson when configuring the build fold= er > initially. > > +- Run ``meson configure -Dmax_lcores=3D256`` inside the build folder > after the initial meson run. > > + > > +Building Sample Applications > > +---------------------------- > > + > > +Some of the DPDK sample applications in the examples directory can be > automatically built as > > +part of a meson build. To do so, pass a comma-separated list of the > examples to build to the > > +``-Dexamples`` meson option as below:: > > + > > + meson setup -Dexamples=3Dl2fwd,l3fwd build > > + > > +There is also a special value "all" to request that all example > applications whose dependencies > > +are met on the current system are built. When ``-Dexamples=3Dall`` is = set > as a meson option, > > +meson will check each example application to see if it can be built, > and add all which can be > > +built to the list of tasks in the ninja build configuration file. > > + > > +For a complete list of options, run ``meson configure`` inside your > configured build > > +folder. > > \ No newline at end of file > > diff --git a/doc/guides/getting_started_guide/appendix/index.rst > b/doc/guides/getting_started_guide/appendix/index.rst > > new file mode 100644 > > index 0000000000..23bb1fcf78 > > --- /dev/null > > +++ b/doc/guides/getting_started_guide/appendix/index.rst > > @@ -0,0 +1,17 @@ > > +.. SPDX-License-Identifier: BSD-3-Clause > > + Copyright(c) 2010-2025 Intel Corporation. > > + > > +.. _appendix: > > + > > +Appendix > > +=3D=3D=3D=3D=3D=3D=3D=3D > > + > > +This section covers specific guides related to DPDK. > > + > > +.. toctree:: > > + :maxdepth: 2 > > + > > + dpdk_meson_build_options > > + running_dpdk_apps_without_root > > + vfio_advanced > > + cross_compile_dpdk > > \ No newline at end of file > > diff --git > a/doc/guides/getting_started_guide/appendix/running_dpdk_apps_without_roo= t.rst > b/doc/guides/getting_started_guide/appendix/running_dpdk_apps_without_roo= t.rst > > new file mode 100644 > > index 0000000000..9f214bbdc8 > > --- /dev/null > > +++ > b/doc/guides/getting_started_guide/appendix/running_dpdk_apps_without_roo= t.rst > > @@ -0,0 +1,36 @@ > > +.. SPDX-License-Identifier: BSD-3-Clause > > + Copyright(c) 2010-2025 Intel Corporation. > > + > > +.. _running_dpdk_apps_without_root: > > + > > +Running DPDK Applications Without Root Privileges > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > > + > > +Although applications using the DPDK use network ports and other > hardware resources > > +directly, with a number of small permission adjustments, > > +it is possible to run these applications as a user other than =E2=80= =9Croot=E2=80=9D. > > +To do so, the ownership, or permissions, on the following file system > objects should be > > +adjusted so the user account being used to run the DPDK application ha= s > > +access to them: > > + > > The text above implies that we would just be listing a set of files to > change. For FreeBSD that is the case, but for Linux, not so much! :-) > > I'd change the linux section to be a similar list of files to FreeBSD: > > * VFIO entries in /dev, /dev/vfio/, where id is the VFIO group to whi= ch > a device used by DPDK belongs. > * the hugepage mount directory: /dev/hugepages on many distributions, or > any alternative mount point configured by the user, e.g. /mnt/huge, > /mnt/huge_1G > > We also need to note that to run as non-root on linux, you need to use DP= DK > with iommu support through vfio. > > > +Linux > > +----- > > + > > +1. **Create a DPDK User Group**: Create a new user group for DPDK and > add the desired user to this group. > > + > > +2. **Set Up Hugepages**: Configure hugepages for the user. > > + > > +3. **Bind the NIC to a User-Space Driver**: Use the DPDK tool > ``dpdk-devbind.py`` to bind the NIC to a user-space driver like > ``vfio-pci`` or ``igb_uio``. > > + > > +4. **Set Permissions for UIO/VFIO Devices**: Change the ownership and > permissions of the UIO or VFIO devices to allow access by the DPDK user > group. > > + > > +5. **Run the DPDK Application**: Run the desired DPDK application as > the user who has been added to the DPDK group. > > + > > +FreeBSD > > +------- > > + > > +- The userspace-io device files in ``/dev``, for example, > ``/dev/uio0``, ``/dev/uio1``, and so on > > +- The userspace contiguous memory device: ``/dev/contigmem`` > > + > > + > > +Refer to the `DPDK Release Notes < > https://doc.dpdk.org/guides/rel_notes/index.html>`_ for supported > applications. > > > --0000000000002e67bd060a3af2f5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Bruce,

Is the following Linu= x update correct per your feedback?

Linux
-----

To run DPD= K applications without root privileges on Linux, perform the following step= s:

1. **Create a DPDK User Group**: Create a new user group for DPDK= and add the desired user to this group.

2. **Set Up Hugepages**: Co= nfigure hugepages for the user.

3. **Bind the NIC to a User-Space Dr= iver**: Use the DPDK tool ``dpdk-devbind.py`` to bind the NIC to a user-spa= ce driver like ``vfio-pci`` or ``igb_uio``.

4. **Adjust Permissions = for Specific Files and Directories**:
=C2=A0 =C2=A0
=C2=A0 =C2=A0- VF= IO entries in ``/dev``, such as ``/dev/vfio/<id>``, where <id> = is the VFIO group to which a device used by DPDK belongs.
=C2=A0 =C2=A0-= The hugepage mount directory, typically ``/dev/hugepages`` on many distrib= utions, or any alternative mount point configured by the user, e.g., ``/mnt= /huge``, ``/mnt/huge_1G``.

=C2=A0 =C2=A0Note: Running DPDK as non-ro= ot on Linux requires IOMMU support through vfio.

5. **Run the DPDK A= pplication**: Run the desired DPDK application as the user who has been add= ed to the DPDK group.

FreeBSD
-------

- The userspace-io d= evice files in ``/dev``, for example, ``/dev/uio0``, ``/dev/uio1``, and so = on
- The userspace contiguous memory device: ``/dev/contigmem``

R= efer to the `DPDK Release Notes <https://doc.dpdk.org/guides/rel_notes/index.html&= gt;`_ for supported applications.

Thanks!
David Young
Professional = Copywriter/Technical Writer
Young Copy
+1 (678) 500-9550


On= Fri, Nov 3, 2023 at 11:24=E2=80=AFAM Bruce Richardson <bruce.richardson@intel.com> wrote:
=
I haven't revie= wed this whole file in detail, as I assume most content is
copy-pasted from existing docs and so is correct. One comment inline below,=
though.

/Bruce

On Fri, Nov 03, 2023 at 12:01:51AM -0400, David Young wrote:
> ---
>=C2=A0 .../appendix/cross_compile_dpdk.rst=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0|=C2=A0 37 +++
>=C2=A0 .../appendix/dpdk_meson_build_options.rst=C2=A0 =C2=A0 =C2=A0|= =C2=A0 57 ++++
>=C2=A0 .../getting_started_guide/appendix/index.rst=C2=A0 |=C2=A0 17 +<= br> >=C2=A0 .../running_dpdk_apps_without_root.rst=C2=A0 =C2=A0 =C2=A0 =C2= =A0 |=C2=A0 36 +++
>=C2=A0 .../appendix/vfio_advanced.rst=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 | 295 ++++++++++++++++++
>=C2=A0 5 files changed, 442 insertions(+)
>=C2=A0 create mode 100644 doc/guides/getting_started_guide/appendix/cro= ss_compile_dpdk.rst
>=C2=A0 create mode 100644 doc/guides/getting_started_guide/appendix/dpd= k_meson_build_options.rst
>=C2=A0 create mode 100644 doc/guides/getting_started_guide/appendix/ind= ex.rst
>=C2=A0 create mode 100644 doc/guides/getting_started_guide/appendix/run= ning_dpdk_apps_without_root.rst
>=C2=A0 create mode 100644 doc/guides/getting_started_guide/appendix/vfi= o_advanced.rst
>
> diff --git a/doc/guides/getting_started_guide/appendix/cross_compile_d= pdk.rst b/doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst<= br> > new file mode 100644
> index 0000000000..3e4efe23a4
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/appendix/cross_compile_dpdk.rst=
> @@ -0,0 +1,37 @@
> +..=C2=A0 SPDX-License-Identifier: BSD-3-Clause
> +=C2=A0 =C2=A0 Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _cross_compile_dpdk:
> +
> +Cross-compiling DPDK for Different Architectures on Linux
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D
> +
> +Cross-compiling DPDK for different architectures follows a similar pr= ocess. Here are the general steps:
> +
> +1. **Get Compiler and Libraries**: Obtain the cross-compiler toolchai= n and any required libraries specific to the target architecture.
> +
> +2. **Build Using Cross-File**: Use Meson to set up the build with a c= ross-file specific to the target architecture, and then build with Ninja. > +
> +Prerequisites
> +-------------
> +
> +- NUMA Library (if required)
> +- Meson and Ninja
> +- pkg-config for the target architecture
> +- Specific GNU or LLVM/Clang toolchain for the target architecture > +
> +Cross-Compiling DPDK
> +--------------------
> +
> +1. **Set Up the Cross Toolchain**: Download and extract the toolchain= for the target architecture. Add it to the PATH.
> +
> +2. **Compile Any Required Libraries**: Compile libraries like NUMA if= required.
> +
> +3. **Cross-Compile DPDK with Meson**:
> +
> +=C2=A0 =C2=A0.. code-block:: bash
> +
> +=C2=A0 =C2=A0 =C2=A0 meson setup cross-build --cross-file <target_= machine_configuration>
> +=C2=A0 =C2=A0 =C2=A0 ninja -C cross-build
> +
> +Refer to the specific sections for ARM64, LoongArch, and RISC-V for d= etailed instructions and architecture-specific considerations.
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/appendix/dpdk_meson_buil= d_options.rst b/doc/guides/getting_started_guide/appendix/dpdk_meson_build_= options.rst
> new file mode 100644
> index 0000000000..6669f98371
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/appendix/dpdk_meson_build_optio= ns.rst
> @@ -0,0 +1,57 @@
> +..=C2=A0 SPDX-License-Identifier: BSD-3-Clause
> +=C2=A0 =C2=A0 Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _dpdk_meson_build_options:
> +
> +DPDK Meson Build Configuration Options
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> +
> +DPDK provides a number of build configuration options that can be adj= usted using the Meson build system. These options can be listed by running = ``meson configure`` inside a configured build
> +folder.
> +
> +Changing the Build Type
> +-----------------------
> +
> +To change the build type from the default "release" to a re= gular "debug" build,
> +you can either:
> +
> +- Pass ``-Dbuildtype=3Ddebug`` or ``--buildtype=3Ddebug`` to meson wh= en configuring the build folder initially.
> +- Run ``meson configure -Dbuildtype=3Ddebug`` inside the build folder= after the initial meson run.
> +
> +Platform Options
> +----------------
> +
> +The "platform" option specifies a set of configuration para= meters that will be used.
> +The valid values are:
> +
> +- ``-Dplatform=3Dnative`` will tailor the configuration to the build = machine.
> +- ``-Dplatform=3Dgeneric`` will use configuration that works on all m= achines of the same architecture as the build machine.
> +- ``-Dplatform=3D<SoC>`` will use configuration optimized for a= particular SoC.
> +
> +Consult the "socs" dictionary in ``config/arm/meson.build``= to see which SoCs are supported.
> +
> +Overriding Platform Parameters
> +------------------------------
> +
> +The values determined by the platform parameter may be overwritten. F= or example,
> +to set the ``max_lcores`` value to 256, you can either:
> +
> +- Pass ``-Dmax_lcores=3D256`` to meson when configuring the build fol= der initially.
> +- Run ``meson configure -Dmax_lcores=3D256`` inside the build folder = after the initial meson run.
> +
> +Building Sample Applications
> +----------------------------
> +
> +Some of the DPDK sample applications in the examples directory can be= automatically built as
> +part of a meson build. To do so, pass a comma-separated list of the e= xamples to build to the
> +``-Dexamples`` meson option as below::
> +
> +=C2=A0 =C2=A0 meson setup -Dexamples=3Dl2fwd,l3fwd build
> +
> +There is also a special value "all" to request that all exa= mple applications whose dependencies
> +are met on the current system are built. When ``-Dexamples=3Dall`` is= set as a meson option,
> +meson will check each example application to see if it can be built, = and add all which can be
> +built to the list of tasks in the ninja build configuration file.
> +
> +For a complete list of options, run ``meson configure`` inside your c= onfigured build
> +folder.
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/appendix/index.rst b/doc= /guides/getting_started_guide/appendix/index.rst
> new file mode 100644
> index 0000000000..23bb1fcf78
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/appendix/index.rst
> @@ -0,0 +1,17 @@
> +..=C2=A0 SPDX-License-Identifier: BSD-3-Clause
> +=C2=A0 =C2=A0 Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _appendix:
> +
> +Appendix
> +=3D=3D=3D=3D=3D=3D=3D=3D
> +
> +This section covers specific guides related to DPDK.
> +
> +.. toctree::
> +=C2=A0 =C2=A0 :maxdepth: 2
> +
> +=C2=A0 =C2=A0 dpdk_meson_build_options
> +=C2=A0 =C2=A0 running_dpdk_apps_without_root
> +=C2=A0 =C2=A0 vfio_advanced
> +=C2=A0 =C2=A0 cross_compile_dpdk
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/appendix/running_dpdk_ap= ps_without_root.rst b/doc/guides/getting_started_guide/appendix/running_dpd= k_apps_without_root.rst
> new file mode 100644
> index 0000000000..9f214bbdc8
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/appendix/running_dpdk_apps_with= out_root.rst
> @@ -0,0 +1,36 @@
> +..=C2=A0 SPDX-License-Identifier: BSD-3-Clause
> +=C2=A0 =C2=A0 Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _running_dpdk_apps_without_root:
> +
> +Running DPDK Applications Without Root Privileges
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D
> +
> +Although applications using the DPDK use network ports and other hard= ware resources
> +directly, with a number of small permission adjustments,
> +it is possible to run these applications as a user other than =E2=80= =9Croot=E2=80=9D.
> +To do so, the ownership, or permissions, on the following file system= objects should be
> +adjusted so the user account being used to run the DPDK application h= as
> +access to them:
> +

The text above implies that we would just be listing a set of files to
change. For FreeBSD that is the case, but for Linux, not so much! :-)

I'd change the linux section to be a similar list of files to FreeBSD:<= br>
* VFIO entries in /dev, /dev/vfio/<id>, where id is the VFIO group to= which
=C2=A0 a device used by DPDK belongs.
* the hugepage mount directory: /dev/hugepages on many distributions, or =C2=A0 any alternative mount point configured by the user, e.g. /mnt/huge,<= br> =C2=A0 /mnt/huge_1G

We also need to note that to run as non-root on linux, you need to use DPDK=
with iommu support through vfio.

> +Linux
> +-----
> +
> +1. **Create a DPDK User Group**: Create a new user group for DPDK and= add the desired user to this group.
> +
> +2. **Set Up Hugepages**: Configure hugepages for the user.
> +
> +3. **Bind the NIC to a User-Space Driver**: Use the DPDK tool ``dpdk-= devbind.py`` to bind the NIC to a user-space driver like ``vfio-pci`` or ``= igb_uio``.
> +
> +4. **Set Permissions for UIO/VFIO Devices**: Change the ownership and= permissions of the UIO or VFIO devices to allow access by the DPDK user gr= oup.
> +
> +5. **Run the DPDK Application**: Run the desired DPDK application as = the user who has been added to the DPDK group.
> +
> +FreeBSD
> +-------
> +
> +- The userspace-io device files in ``/dev``, for example, ``/dev/uio0= ``, ``/dev/uio1``, and so on
> +- The userspace contiguous memory device: ``/dev/contigmem``
> +
> +
> +Refer to the `DPDK Release Notes <https://d= oc.dpdk.org/guides/rel_notes/index.html>`_ for supported application= s.

<snip for brevity>
--0000000000002e67bd060a3af2f5--