On Fri, Oct 30, 2015 at 01:49:18PM +0000, David Hunt wrote: > The ARMv8 include files are in the arm directory in > lib/librte_eal/common/include/arch/arm/ with the ARMv7 include files > > Signed-off-by: David Hunt <david.hunt at intel.com> > --- > MAINTAINERS | 3 +- > config/defconfig_arm64-armv8a-linuxapp-gcc | 56 +++++++++++++++++++++++++++++ > doc/guides/rel_notes/release_2_2.rst | 7 ++-- > mk/arch/arm64/rte.vars.mk | 58 > ++++++++++++++++++++++++++++++ > mk/machine/armv8a/rte.vars.mk | 57 +++++++++++++++++++++++++++++ > 5 files changed, 177 insertions(+), 4 deletions(-) > create mode 100644 config/defconfig_arm64-armv8a-linuxapp-gcc > create mode 100644 mk/arch/arm64/rte.vars.mk > create mode 100644 mk/machine/armv8a/rte.vars.mk > > diff --git a/MAINTAINERS b/MAINTAINERS > index a8933eb..4569f13 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -124,8 +124,9 @@ IBM POWER > M: Chao Zhu <chaozhu at linux.vnet.ibm.com> > F: lib/librte_eal/common/include/arch/ppc_64/ > > -ARM v7 > +ARM > M: Jan Viktorin <viktorin at rehivetech.com> > +M: David Hunt <david.hunt at intel.com> > F: lib/librte_eal/common/include/arch/arm/ > > Intel x86 > diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc > b/config/defconfig_arm64-armv8a-linuxapp-gcc > new file mode 100644 > index 0000000..79a9533 > --- /dev/null > +++ b/config/defconfig_arm64-armv8a-linuxapp-gcc > @@ -0,0 +1,56 @@ > +# BSD LICENSE > +# > +# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. > +# All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions > +# are met: > +# > +# * Redistributions of source code must retain the above copyright > +# notice, this list of conditions and the following disclaimer. > +# * Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in > +# the documentation and/or other materials provided with the > +# distribution. > +# * Neither the name of Intel Corporation nor the names of its > +# contributors may be used to endorse or promote products derived > +# from this software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > +# > + > +#include "common_linuxapp" > + > +CONFIG_RTE_MACHINE="armv8a" > + > +CONFIG_RTE_ARCH="arm64" > +CONFIG_RTE_ARCH_ARM64=y > +CONFIG_RTE_ARCH_64=y > +CONFIG_RTE_ARCH_ARM_NEON=y > + > +CONFIG_RTE_TOOLCHAIN="gcc" > +CONFIG_RTE_TOOLCHAIN_GCC=y > + > +CONFIG_RTE_IXGBE_INC_VECTOR=n > +CONFIG_RTE_LIBRTE_VIRTIO_PMD=n > +CONFIG_RTE_LIBRTE_IVSHMEM=n > +CONFIG_RTE_LIBRTE_EAL_HOTPLUG=n > + > +CONFIG_RTE_LIBRTE_LPM=n > +CONFIG_RTE_LIBRTE_ACL=n > +CONFIG_RTE_LIBRTE_TABLE=n > +CONFIG_RTE_LIBRTE_PIPELINE=n > + > +# This is used to adjust the generic arm timer to align with the cpu cycle > count. > +CONFIG_RTE_TIMER_MULTIPLIER=48
Introducing a build-time dependency with cpu clock parameter not a good idea. Either this parameter needs be removed or find out out the multiplier at run-time by introducing a machine specific hook > diff --git a/doc/guides/rel_notes/release_2_2.rst > b/doc/guides/rel_notes/release_2_2.rst > index 5b5bb4c..5aa523b 100644 > --- a/doc/guides/rel_notes/release_2_2.rst > +++ b/doc/guides/rel_notes/release_2_2.rst > @@ -31,10 +31,11 @@ New Features > > * **Added vhost-user multiple queue support.** > > -* **Introduce ARMv7 architecture** > +* **Introduce ARMv7 and ARMv8 architectures** > > - It is now possible to build DPDK for the ARMv7 platform and test with > - virtual PMD drivers. > + * It is now possible to build DPDK for the ARMv7 and ARMv8 platforms. > + * ARMv7 can be tested with virtual PMD drivers. > + * ARMv8 can be tested with virtual and physical PMD drivers. > > > Resolved Issues > diff --git a/mk/arch/arm64/rte.vars.mk b/mk/arch/arm64/rte.vars.mk > new file mode 100644 > index 0000000..3aad712 > --- /dev/null > +++ b/mk/arch/arm64/rte.vars.mk > @@ -0,0 +1,58 @@ > +# BSD LICENSE > +# > +# Copyright(c) 2015 Intel Corporation. All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions > +# are met: > +# > +# * Redistributions of source code must retain the above copyright > +# notice, this list of conditions and the following disclaimer. > +# * Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in > +# the documentation and/or other materials provided with the > +# distribution. > +# * Neither the name of Intel Corporation nor the names of its > +# contributors may be used to endorse or promote products derived > +# from this software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > +# > +# arch: > +# > +# - define ARCH variable (overridden by cmdline or by previous > +# optional define in machine .mk) > +# - define CROSS variable (overridden by cmdline or previous define > +# in machine .mk) > +# - define CPU_CFLAGS variable (overridden by cmdline or previous > +# define in machine .mk) > +# - define CPU_LDFLAGS variable (overridden by cmdline or previous > +# define in machine .mk) > +# - define CPU_ASFLAGS variable (overridden by cmdline or previous > +# define in machine .mk) > +# - may override any previously defined variable > +# > +# examples for CONFIG_RTE_ARCH: i686, x86_64, x86_64_32 > +# > + > +ARCH ?= arm64 > +# common arch dir in eal headers > +ARCH_DIR := arm > +CROSS ?= > + > +CPU_CFLAGS ?= -DRTE_CACHE_LINE_SIZE=64 cache line size can be moved to MACHINE_CFLAGS as its more of machine parameter.so that if machine has different cache line size(based on arm64) can have new target like defconfig_arm64-xxxxxxx-linuxapp-gcc > +CPU_LDFLAGS ?= > +CPU_ASFLAGS ?= -felf > + > +export ARCH CROSS CPU_CFLAGS CPU_LDFLAGS CPU_ASFLAGS > diff --git a/mk/machine/armv8a/rte.vars.mk b/mk/machine/armv8a/rte.vars.mk > new file mode 100644 > index 0000000..b785062 > --- /dev/null > +++ b/mk/machine/armv8a/rte.vars.mk > @@ -0,0 +1,57 @@ > +# BSD LICENSE > +# > +# Copyright(c) 2015 Intel Corporation. All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions > +# are met: > +# > +# * Redistributions of source code must retain the above copyright > +# notice, this list of conditions and the following disclaimer. > +# * Redistributions in binary form must reproduce the above copyright > +# notice, this list of conditions and the following disclaimer in > +# the documentation and/or other materials provided with the > +# distribution. > +# * Neither the name of Intel Corporation nor the names of its > +# contributors may be used to endorse or promote products derived > +# from this software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + > +# > +# machine: > +# > +# - can define ARCH variable (overridden by cmdline value) > +# - can define CROSS variable (overridden by cmdline value) > +# - define MACHINE_CFLAGS variable (overridden by cmdline value) > +# - define MACHINE_LDFLAGS variable (overridden by cmdline value) > +# - define MACHINE_ASFLAGS variable (overridden by cmdline value) > +# - can define CPU_CFLAGS variable (overridden by cmdline value) that > +# overrides the one defined in arch. > +# - can define CPU_LDFLAGS variable (overridden by cmdline value) that > +# overrides the one defined in arch. > +# - can define CPU_ASFLAGS variable (overridden by cmdline value) that > +# overrides the one defined in arch. > +# - may override any previously defined variable > +# > + > +# ARCH = > +# CROSS = > +# MACHINE_CFLAGS = > +# MACHINE_LDFLAGS = > +# MACHINE_ASFLAGS = > +# CPU_CFLAGS = > +# CPU_LDFLAGS = > +# CPU_ASFLAGS = > + > +MACHINE_CFLAGS += -march=armv8-a > -- > 1.9.1 >