From: Thomas Monjalon <thomas@monjalon.net>
To: John McNamara <john.mcnamara@intel.com>,
Marko Kovacevic <marko.kovacevic@intel.com>,
Xiaolong Ye <xiaolong.ye@intel.com>
Cc: dev@dpdk.org, dev@dpdk.org,
Bruce Richardson <bruce.richardson@intel.com>,
Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: [dpdk-dev] [PATCH v5] doc: introduce openwrt how-to guide
Date: Sun, 16 Feb 2020 12:04:24 +0100 [thread overview]
Message-ID: <2438326.H8VbNj7W2P@xps> (raw)
In-Reply-To: <20200118054856.18807-1-xiaolong.ye@intel.com>
18/01/2020 06:48, Xiaolong Ye:
> This doc describes how to enable DPDK on Openwrt in both virtual and
> physical x86 environment.
>
> Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
> ---
> --- /dev/null
> +++ b/doc/guides/howto/openwrt.rst
> +Enable DPDK on openwrt
> +======================
> +
> +This document describes how to enable Data Plane Development Kit (DPDK) on
> +Openwrt in both a virtual and physical x86 environment.
Please take care of the uppercases in OpenWrt.
> +
> +Introduction
> +------------
> +
> +The OpenWrt project is a Linux operating system targeting embedded devices.
> +Instead of trying to create a single, static firmware, OpenWrt provides a fully
> +writable filesystem with package management. This frees the user from the
> +application selection and configuration provided by the vendor and allows users
> +to customize the device through the use of packages to suit any application. For
> +developers OpenWrt is the framework to build an application without having to
> +build a complete firmware around it. For users is offers full customization
> +to use the device in ways never envisioned.
Why doing marketing for OpenWrt in DPDK doc?
It is a copy paste from https://openwrt.org/
I think it is enough to say OpenWrt is a source-based router OS with package management.
> +
> +Pre-requisites
> +~~~~~~~~~~~~~~
> +
> +You need gcc, binutils, bzip2, flex, python3.5+, perl, make, find, grep, diff,
> +unzip, gawk, getopt, subversion, libz-dev and libc headers installed.
These are prerequisites for building, so should be in section below.
Maybe we can just provide a link to the official doc instead.
> +
> +Build OpenWrt
> +-------------
> +
> +You can obtain OpenWrt image through https://downloads.openwrt.org/releases. To
Please take the habit of splitting lines after a punctuation.
> +fully customize your own OpenWrt, it is highly recommended to build it from
> +the source code. You can clone the OpenWrt source code as follows:
> +
> +.. code-block:: console
> +
> + git clone https://git.openwrt.org/openwrt/openwrt.git
> +
> +OpenWrt configuration
> +~~~~~~~~~~~~~~~~~~~~~
> +
> +* Select ``x86`` in ``Target System``
> +* Select ``x86_64`` in ``Subtarget``
> +* Select ``Build the OpenWrt SDK`` for cross-compilation environment
> +* Select ``Use glibc`` in ``Advanced configuration options (for developers)``
> + then ``ToolChain Options`` and ``C Library implementation``
> +
> +Kernel configuration
> +~~~~~~~~~~~~~~~~~~~~
> +
> +The following configurations should be enabled:
> +
> +* ``CONFIG_UIO=y``
No, UIO is not recommended anymore.
> +* ``CONFIG_HUGETLBFS=y``
> +* ``CONFIG_HUGETLB_PAGE=y``
> +* ``CONFIG_PAGE_MONITOR=y``
Why PAGE_MONITOR?
> +
> +Build steps
> +~~~~~~~~~~~
> +
> +For detailed OpenWrt build steps, please refer to the
> +`OpenWrt build guide
> +<https://openwrt.org/docs/guide-developer/build-system/use-buildsystem>`_.
> +
> +After the build is completed, you can find the images and sdk in
> +``<OpenWrt Root>/bin/targets/x86/64-glibc/``.
s/sdk/SDK/
[...]
> + [binaries]
> + c = 'x86_64-openwrt-linux-gcc'
> + cpp = 'x86_64-openwrt-linux-cpp'
> + ar = 'x86_64-openwrt-linux-ar'
> + strip = 'x86_64-openwrt-linux-strip'
> +
> + meson builddir --cross-file openwrt-cross
This is really a good example why meson should allow to override the toolchain prefix.
Please work with meson on this topic.
[...]
> +To cross compile with make:
> +
> +.. code-block:: console
> +
> + export STAGING_DIR=<OpenWrt sdk>/glibc/openwrt-sdk-x86-64_gcc-8.3.0_glibc.Linux-x86_64/staging_dir
> + export RTE_SDK=`pwd`
> + export RTE_KERNELDIR=<OpenWrt Root>/build_dir/target-x86_64_glibc/linux-x86_64/linux-4.19.81/
> + make config T=x86_64-native-linuxapp-gcc
> + make -j 100 CROSS=x86_64-openwrt-linux-gnu-
The make build system should not be documented as it is going to be deprecated.
> +
> +Running DPDK application on OpenWrt
> +-----------------------------------
> +
> +Virtual machine
> +~~~~~~~~~~~~~~~
> +
> +* Extract the boot image
> +
> +.. code-block:: console
> +
> + gzip -d openwrt-x86-64-combined-ext4.img.gz
> +
> +* Launch Qemu
> +
> +.. code-block:: console
> +
> + qemu-system-x86_64 \
> + -cpu host \
> + -smp 8 \
> + -enable-kvm \
> + -M q35 \
> + -m 2048M \
> + -object memory-backend-file,id=mem,size=2048M,mem-path=/tmp/hugepages,share=on \
> + -drive file=<Your OpenWrt images folder>/openwrt-x86-64-combined-ext4.img,id=d0,if=none,bus=0,unit=0 \
> + -device ide-hd,drive=d0,bus=ide.0 \
> + -net nic,vlan=0 \
> + -net nic,vlan=1 \
> + -net user,vlan=1 \
> + -display none \
> +
> +
> +Physical machine
> +~~~~~~~~~~~~~~~~
> +
> +If you are using a Windows PC, you can use an image writer application such as
> +``Win32 Disk Imager`` and ``Etcher`` to write the OpenWrt image
> +(openwrt-x86-64-combined-ext4.img) to a USB flash driver or SDcard.
If you just built a DPDK for Linux, you are not running Windows,
except if you are using a Linux server for compilation.
Anyway, we should not try to document such procedure in my opinion.
I'm sure you can refer to the OpenWrt documentation for flashing the image.
> +
> +If you are using Linux, you can use the ``dd`` tool to write the OpenWrt image
> +to the drive you want to write the image on.
> +
> +.. code-block:: console
> +
> + dd if=openwrt-18.06.1-x86-64-combined-squashfs.img of=/dev/sdX
> +
> +Where sdX is name of the drive. (You can find it though ``fdisk -l``)
> +
> +Running DPDK
> +~~~~~~~~~~~~
> +
> +More detailed info about how to run a DPDK application please refer to
> +``Running DPDK Applications`` section of :ref:`the DPDK documentation <linux_gsg>`.
> +
> +.. note::
> +
> + You need to install pre-built numa libraries (including soft link)
s/numa/NUMA/
> + to /usr/lib64 in OpenWrt.
libnuma is not packaged in OpenWrt?
> --- a/doc/guides/rel_notes/release_20_02.rst
> +++ b/doc/guides/rel_notes/release_20_02.rst
> @@ -116,6 +116,10 @@ New Features
>
> Added support for ESP rte_flow patterns to the testpmd application.
>
> +* **Added OpenWrt howto guide.**
> +
> + Added document describes how to enable DPDK on OpenWrt in both virtual and
> + physical machine.
>
> Removed Items
> -------------
You miss a doubled blank line before this title.
next prev parent reply other threads:[~2020-02-16 11:04 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-29 8:19 [dpdk-dev] [PATCH] doc: introduce openwrt how-to guide Xiaolong Ye
2019-11-29 10:09 ` Bruce Richardson
2019-11-29 15:03 ` Ye Xiaolong
2019-11-29 16:59 ` Stephen Hemminger
2019-12-01 11:30 ` Ye Xiaolong
2019-12-02 6:34 ` [dpdk-dev] [PATCH v2] " Xiaolong Ye
2019-12-02 7:31 ` Jerin Jacob
2019-12-02 8:09 ` Ye Xiaolong
2019-12-12 2:25 ` [dpdk-dev] [PATCH v3] " Xiaolong Ye
2019-12-16 3:01 ` [dpdk-dev] [PATCH v4] " Xiaolong Ye
2019-12-19 6:05 ` Zhang, Xiao
2020-01-17 13:46 ` Mcnamara, John
2020-01-18 1:52 ` Ye Xiaolong
2020-01-18 5:48 ` [dpdk-dev] [PATCH v5] " Xiaolong Ye
2020-01-22 12:34 ` Mcnamara, John
2020-02-16 11:04 ` Thomas Monjalon [this message]
2020-02-16 17:29 ` Ye Xiaolong
2020-02-16 18:02 ` Thomas Monjalon
2020-02-17 1:18 ` Ye Xiaolong
2020-02-17 3:12 ` Dmitry Kozlyuk
2020-02-17 6:21 ` Ye Xiaolong
2020-02-17 2:47 ` [dpdk-dev] [PATCH v6] " Xiaolong Ye
2020-02-17 15:08 ` Ray Kinsella
2020-02-17 15:44 ` Ye Xiaolong
2020-02-17 15:49 ` Ray Kinsella
2020-02-18 8:26 ` Mcnamara, John
2020-02-18 9:12 ` Ray Kinsella
2020-02-18 9:32 ` Thomas Monjalon
2020-02-18 9:49 ` Ye Xiaolong
2020-02-18 10:08 ` Ray Kinsella
2020-02-21 21:08 ` 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=2438326.H8VbNj7W2P@xps \
--to=thomas@monjalon.net \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=stephen@networkplumber.org \
--cc=xiaolong.ye@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.