[dpdk-dev,v2,2/2] doc: add a guide doc for cross compiling from x86
Checks
Commit Message
This is guild for cross compiling for ARM64 from X86 hosts.
Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/howto/index.rst | 1 +
.../linux_gsg/cross_build_dpdk_for_arm64.rst | 70 ++++++++++++++++++++++
doc/guides/linux_gsg/index.rst | 1 +
3 files changed, 72 insertions(+)
create mode 100644 doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
Comments
On Mon, May 28, 2018 at 02:53:48AM -0400, Gavin Hu wrote:
> This is guild for cross compiling for ARM64 from X86 hosts.
>
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>
> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
Can you also include details of cross-compiling using meson from the meson
build text file too?
/Bruce
> This is guild for cross compiling for ARM64 from X86 hosts.
>
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>
> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
Hi Gavin,
After reviewing your file in the .rst format it doesn't look good, the whole formatting is wrong and
unreadable. As you have the wrong headers and sections. You have code block and command line arguments
added in everywhere making it not look good. Also you have added an index to a file in the howto that doesn't exist.
dpdk/doc/guides/howto/index.rst:7: WARNING: toctree contains reference to nonexisting document u'howto/ cross_compile_sdk_for_arm64'
dpdk/doc/guides/linux_gsg/index.rst:9: WARNING: toctree contains reference to nonexisting document u'linux_gsg/ cross_build_dpdk_for_arm64'
dpdk/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst: WARNING: document isn't included in any toctree
Id advise you go to this link and familiarize yourself with the proper way of writing in the rst format.
And also try and view the html version of your file before you send it out to make sure it looks ok.
If you adding command line arguments into text use this ``make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n``
http://dpdk.org/doc/guides/contributing/documentation.html
Marko K
-----Original Message-----
From: Bruce Richardson <bruce.richardson@intel.com>
Sent: Monday, May 28, 2018 9:25 PM
To: Gavin Hu <Gavin.Hu@arm.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 2/2] doc: add a guide doc for cross compiling from x86
On Mon, May 28, 2018 at 02:53:48AM -0400, Gavin Hu wrote:
> This is guild for cross compiling for ARM64 from X86 hosts.
>
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>
> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
Can you also include details of cross-compiling using meson from the meson build text file too?
[Gavin Hu] My pleasure, I will work on it, it will be in a separate patch.
/Bruce
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
@@ -8,6 +8,7 @@ HowTo Guides
:maxdepth: 2
:numbered:
+ cross_compile_sdk_for_arm64
lm_bond_virtio_sriov
lm_virtio_vhost_user
flow_bifurcation
new file mode 100644
@@ -0,0 +1,70 @@
+How to cross compile DPDK for ARM64
+-----------------------------------
+
+NOTE: Whilst it is recommended to natively build DPDK on ARM64 (just
+like with x86), it is also possible to cross-build DPDK for ARM64. An
+ARM64 cross compile GNU toolchain is used for this, which currently requires
+the NUMA libraries to be integrated. Following are the steps to follow.
+
+1. Obtain the cross tool chain
+------------------------------
+The latest cross compile tool chain can be downloaded from:
+https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/
+Following is the step to get the version 7.2.1, latest so far.
+$ wget https://releases.linaro.org/components/toolchain/binaries/latest/
+aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
+
+2. Unzip and add into the PATH
+------------------------------
+$ tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
+$ export PATH=$PATH:<install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin
+Note: For the host requirements and other info, refer to the release note section:
+https://releases.linaro.org/components/toolchain/binaries/latest/
+
+3. Getting the prerequisite library
+-----------------------------------
+-- NUMA (Note: Required by most modern machines, not needed for non-NUMA ones)
+--Prerequisite: for compiling NUMA, make sure the installed libtool version >= 2.2
+(run libtool --version to check), otherwise the compilation will fail with errors.
+$ git clone https://github.com/numactl/numactl.git
+$ cd numactl
+$ git checkout v2.0.11 -b v2.0.11
+$ ./autogen.sh
+$ autoconf -i
+$ ./configure --host=x86_64 CC=aarch64-linux-gnu-gcc prefix=<numa install dir>
+$ make install
+You will get numa*.h files under <numa install dir>/include and libnuma.a under <numa install dor>/lib.
+
+4. Augument the cross gcc toolchain with the NUMA header and lib
+----------------------------------------------------------------
+Note: This way is optional, the alternative way is to use extra CFLAGS and LDFLAGS, depicted in Step 6)*
+Copy the NUMA header files to the cross compiler's include directory:
+$ cp <numa install dir>/include/numa*.h <install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/
+Copy the NUMA lib to the cross compiler's lib directory:
+$ cp <numa install dir>/lib/libnuma.a <install dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.2.1/
+
+5. Configuring the DPDK Build
+-----------------------------
+To configure a build, follow the build-sdk-quick.txt file to select one of the target configurations,like
+arm64-dpaa2-linuxapp-gcc and arm64-thunderx-linuxapp-gcc for optimized build specific to target.
+
+$ make config T=arm64-armv8a-linuxapp-gcc
+
+6. Cross Compiling DPDK
+-----------------------
+To cross-compile DPDK for ARM64 target machine, without compiling the kernel modules, use the following
+command:
+$ make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
+
+To cross-compile DPDK for ARM64, including the kernel modules, the kernel source tree is required.
+Set RTE_KERNEL_SRC_ROOTDIR to the kernel source tree folder and use the following command:
+$ make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR=<KERNEL_SRC_ROOTDIR> CROSS_COMPILE=aarch64-linux-gnu-
+
+Note:
+1. If the target machine is non-NUMA, add the following to the command:
+CONFIG_RTE_LIBRTE_VHOST_NUMA=n CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
+2. If Step 4 is skipped and the toolchain was not augumented with the NUMA headers and library.
+Add EXTRA CFLAGS and LDFLAGS for the NUMA header and library. RTE_DEVEL_BUILD has to be disabled, otherwise
+the numa.h file will get a lot of Werror=cast-qual, Werror=strict-prototypes and Werror=old-style-definition
+compiling errors.
+EXTRA_CFLAGS="-I/opt/cccc/include" EXTRA_LDFLAGS="-L<numa install dir>/lib -lnuma" RTE_DEVEL_BUILD=n
@@ -13,6 +13,7 @@ Getting Started Guide for Linux
intro
sys_reqs
build_dpdk
+ cross_build_dpdk_for_arm64
linux_drivers
build_sample_apps
enable_func