From: Gavin Hu <Gavin.Hu@arm.com>
To: Bruce Richardson <bruce.richardson@intel.com>,
Jerin Jacob <jerin.jacob@caviumnetworks.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 2/2] doc: add a guide doc for cross compiling from x86
Date: Fri, 25 May 2018 07:00:03 +0000 [thread overview]
Message-ID: <VI1PR08MB316746B8CF1E7EE8CC4EEB6E8F690@VI1PR08MB3167.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <20180524132058.GA11756@bricha3-MOBL.ger.corp.intel.com>
Hi Bruce and Jerin,
Thanks for your comments, some inline feedback for your comments.
Any further comments are welcome.
Best Regards,
Gavin
-----Original Message-----
From: Bruce Richardson <bruce.richardson@intel.com>
Sent: Thursday, May 24, 2018 9:21 PM
To: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Cc: Gavin Hu <Gavin.Hu@arm.com>; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 2/2] doc: add a guide doc for cross compiling from x86
On Thu, May 24, 2018 at 04:47:56PM +0530, Jerin Jacob wrote:
> -----Original Message-----
> > Date: Wed, 23 May 2018 23:38:47 -0400
> > From: Gavin Hu <gavin.hu@arm.com>
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH 2/2] doc: add a guide doc for cross
> > compiling from x86
> > X-Mailer: git-send-email 2.1.4
> >
> > 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>
>
> In addition to comments from Marko,
>
> > ---
> > doc/cross_compiling_sdk.txt | 58
> > +++++++++++++++++++++++++++++++++++++++++++++
>
> I think, instead of keeping it as a orphan document, IMO, it should
> linked with https://dpdk.org/doc/guides/ I think, it can go a new
> section or "HowTo Guides" section, So that in future armv7 and/or
> PowerPC cross compilation details can be added.
>
I can move it to "HowTo Guides", but all the guides are not for compiling.
On the contrary, there are two other docs for compiling in this place
To maintain relevancy and consistency, should we keep it here?
http://dpdk.org/browse/dpdk/tree/doc/build-sdk-meson.txt
http://dpdk.org/browse/dpdk/tree/doc/build-sdk-quick.txt
> > 1 file changed, 58 insertions(+)
> > create mode 100644 doc/cross_compiling_sdk.txt
> >
> > diff --git a/doc/cross_compiling_sdk.txt
> > b/doc/cross_compiling_sdk.txt new file mode 100644 index
> > 0000000..aa08871
> > --- /dev/null
> > +++ b/doc/cross_compiling_sdk.txt
> > @@ -0,0 +1,58 @@
> > +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/aa
> > +rch64-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 ohter info, refer to the release note section:
> > +https://releases.linaro.org/components/toolchain/binaries/latest/
> > +
> > +3. Getting the prerequisite library
> > +-----------------------------------
> > +-- NUMA
> > +--Prequisite: 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 $ make
> > +
> > +4. Install the numa header and lib
> > +----------------------------------
> > +Copy the header files to the cross compiler's include directory:
> > +$ cp numa*.h <install
> > +dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/../aarch
> > +64-linux-gnu/libc/usr/include/ Copy the numa lib to the cross
> > +compiler;s lib directory:
> > +$ cp .libs/libnuma.a <install
> > +dir>/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/lib/gcc/aarc
> > +h64-linux-gnu/7.2.1/
>
> Installing numactrl header files and library files to toolchain area
> does not looks very correct. IMO, You can use --prefix option in
> numactrl to install to separate directory and add the include details
> through EXTRA_CFLAGS and EXTRA_LDFLAGS. This will help in meson for
> pkg-config related case as well.
I simply tried, it did not work out yet, will try again.
> > +
> > +5. Configuring the DPDK Build
> > +-----------------------------
> > +To configure a build, follow the build-sdk-quick.txt file to select
> > +the target configuration.
> > +$ make config T=arm64-armv8a-linuxapp-gcc
>
> IMO, You can mentioned about other armv8 target such as
> defconfig_arm64-dpaa2-linuxapp-gcc/defconfig_arm64-thunderx-linuxapp-g
> cc for optimized build specific to target.
Ok, I will fix it in next version.
> > +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
>
> I think, you could mention to set CONFIG_RTE_LIBRTE_VHOST_NUMA=n and
> CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n for NON numa systems to avoid
> building numactl for single node systems.
Ok, I will fix it in next version.
> > +
> > +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-
>
> You could add meson cross build details too.
>
> export MESON_PARAMS='-Dwerror=true
> -Dexamples=bond,bbdev_app,cmdline,distributor,eventdev_pipeline,exception_path,flow_classify,flow_filtering,helloworld,ip_fragmentation,ip_pipeline,ip_reassembly,ipsec-secgw,ipv4_multicast,kni,l2fwd,l2fwd-crypto,l2fwd-jobstats,l2fwd-keepalive,l3fwd,l3fwd-acl,l3fwd-power,l3fwd-vf,link_status_interrupt,load_balancer,packet_ordering,ptpclient,qos_meter,qos_sched,rxtx_callbacks,service_cores,skeleton,tep_termination,timer,vhost,vhost_scsi,vmdq,vmdq_dcb'
>
This long list of examples can now be shortened to "all", since meson now has each app detecting if it can be compiled or not.
> meson --default-library=static $MESON_PARAMS --cross-file
> config/arm/arm64_armv8_linuxapp_gcc arm64-static-build ninja -C
> arm64-static-build
>
There is already a section for meson cross compiling in http://dpdk.org/browse/dpdk/tree/doc/build-sdk-meson.txt
This doc will cover GNU Makefile cross gcc.
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.
next prev parent reply other threads:[~2018-05-25 7:00 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-24 3:38 [dpdk-dev] [PATCH 0/2] *** gcc cross compile dpdk *** Gavin Hu
2018-05-24 3:38 ` [dpdk-dev] [PATCH 1/2] mk: fix cross build errors Gavin Hu
2018-05-24 13:46 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-05-25 7:53 ` Gavin Hu
2018-05-24 3:38 ` [dpdk-dev] [PATCH 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-24 10:45 ` Kovacevic, Marko
2018-05-24 10:47 ` Kovacevic, Marko
2018-05-24 11:17 ` Jerin Jacob
2018-05-24 13:20 ` Bruce Richardson
2018-05-25 7:00 ` Gavin Hu [this message]
2018-05-24 13:54 ` Thomas Monjalon
2018-05-24 17:16 ` Jerin Jacob
2018-05-24 20:31 ` Thomas Monjalon
2018-05-28 6:53 ` [dpdk-dev] [PATCH v2 1/2] mk: fix cross build errors Gavin Hu
2018-05-28 6:53 ` [dpdk-dev] [PATCH v2 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-28 13:25 ` Bruce Richardson
2018-05-29 1:24 ` Gavin Hu
2018-05-28 16:01 ` Kovacevic, Marko
2018-05-28 13:24 ` [dpdk-dev] [PATCH v2 1/2] mk: fix cross build errors Bruce Richardson
2018-05-29 1:22 ` Gavin Hu
2018-05-29 14:45 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-05-29 15:00 ` Bruce Richardson
2018-05-29 16:20 ` Gavin Hu
2018-05-29 19:53 ` Thomas Monjalon
2018-05-29 6:51 ` [dpdk-dev] [PATCH v3 " Gavin Hu
2018-05-29 6:51 ` [dpdk-dev] [PATCH v3 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 7:21 ` [dpdk-dev] [PATCH v4 0/2] *** cross gcc fix and guide doc *** Gavin Hu
2018-05-29 7:21 ` [dpdk-dev] [PATCH v4 1/2] mk: fix cross build errors Gavin Hu
2018-05-29 7:21 ` [dpdk-dev] [PATCH v4 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 8:39 ` Kovacevic, Marko
2018-05-29 10:43 ` [dpdk-dev] [PATCH v5 0/2] *** cross gcc compile fix and add a guide doc *** Gavin Hu
2018-05-29 10:43 ` [dpdk-dev] [PATCH v5 1/2] mk: fix cross build errors Gavin Hu
2018-05-29 15:09 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-05-29 10:43 ` [dpdk-dev] [PATCH v5 2/2] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-05-29 13:33 ` Kovacevic, Marko
2018-05-30 19:16 ` Thomas Monjalon
2018-05-30 19:35 ` Jerin Jacob
2018-06-04 6:03 ` Gavin Hu
2018-06-04 12:50 ` Jerin Jacob
2018-06-12 1:27 ` Gavin Hu
2018-06-12 12:06 ` Gavin Hu
2018-06-12 12:11 ` Thomas Monjalon
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 0/7] *** fix the cross compile errors *** Gavin Hu
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 1/7] mk: fix cross build errors Gavin Hu
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 2/7] doc: add a guide doc for cross compiling from x86 Gavin Hu
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 3/7] devtools: fix the Exec format error Gavin Hu
2018-06-14 10:34 ` Bruce Richardson
2018-06-15 8:07 ` Gavin Hu
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 4/7] build: fix the meson build warning Gavin Hu
2018-06-14 10:34 ` Bruce Richardson
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-14 10:40 ` Bruce Richardson
2018-06-15 8:08 ` Gavin Hu
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 6/7] build: fix the meson cross compile error Gavin Hu
2018-06-14 10:42 ` Bruce Richardson
2018-06-14 9:51 ` [dpdk-dev] [PATCH v6 7/7] devtools: expand meson cross compiling coverage Gavin Hu
2018-06-14 10:45 ` Bruce Richardson
2018-06-15 8:09 ` Gavin Hu
2018-06-15 10:23 ` Gavin Hu
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=VI1PR08MB316746B8CF1E7EE8CC4EEB6E8F690@VI1PR08MB3167.eurprd08.prod.outlook.com \
--to=gavin.hu@arm.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=jerin.jacob@caviumnetworks.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).