[dpdk-dev] [PATCH 00/11] add armv8 architecture support

Jan Viktorin viktorin at rehivetech.com
Mon Oct 26 17:21:53 CET 2015


Hello David,

thanks for this series. I'am sending few comments to the code as well.
Soon, I will have an ARMv8 board available so I will be able to test it.

Probably, we can just reinclude some headers from arm/ directory for
ARMv8 as they are not different.

Jan

On Fri, 23 Oct 2015 15:17:02 +0100
David Hunt <david.hunt at intel.com> wrote:

> This patch provides support for the ARMv8 architecture. We hope that this will
> encourage the ARM community to contribute PMDs for their SoCs to DPDK.
> 
> For now, we've added Intel engineers to the MAINTAINERS file. We would like to
> encourage the ARM community to take over maintenance of this area in future,
> and to further improve it.
> 
> ACL and LPM libraries have been disabled in the config due to their reliance
> on SSE. 
> 
> This patch was tested on an Applied Micro X-Gene Mustang board (pcap only)
> 
> This patch was also tested with an Intel 82599 NIC on a Gigabyte MP30-AR0
> passing traffic between the two NIC ports using testpmd.
> 
> Notes on DPDK configuration:
> 
>   Did not use igb_uio or kni so the following optionse were disabled in 
>   config/common_linuxapp
> 
>   CONFIG_RTE_EAL_IGB_UIO=n
>   CONFIG_RTE_LIBRTE_KNI=n
>   CONFIG_RTE_KNI_KMOD=n
> 
>   make config T=arm64-native-linuxapp-gcc
>   make install T=arm64-native-linuxapp-gcc
>   
> Notes on arm64 kernel configuration:
> 
>   Using Ubuntu 14.04 LTS with a 4.3.0-rc6 kernel (with modified PCI drivers),
>   and uio_pci_generic.
>   ARM64 kernels do not seem to have functional resource mapping of PCI memory
>   (PCI_MMAP), so the pci driver needs to be patched to enable this. The
>   symptom of this is when /sys/bus/pci/devices/0000:0X:00.Y directory is
>   missing the resource0...N files for mmapping the device memory. Earlier
>   kernels (3.13.x) had these files present, but mmap'ping resulted in a
>   "Bus Error" when the NIC memory was accessed.
>   However, during limited testing with a modified 4.3.0-rc6 kernel, we were
>   able to mmap the NIC memory, and pass traffic between the two ports on a
>   82599 NIC connected via fibre cable. 
>   We have no plans to upstream a kernel patch for this and hope that
>   someone more familiar with the arm architecture can create a proper patch
>   and enable this functionality.
> 
> Benjamin Boren (11):
>   lib: add armv8 rte_atomic.h
>   lib: add armv8 rte_byteorder.h
>   lib: add armv8 rte_cpuflags.h
>   lib: add armv8 rte_cycles.h
>   lib: add armv8 rte_memcpy.h
>   lib: add armv8 rte_prefetch.h
>   lib: add armv8 rte_rwlock.h
>   lib: add armv8 rte_spinlock.h
>   lib: add armv8 rte_vect.h
>   mk: add makefile and config changes for armv8 architecture
>   app: add armv8 cpuflags check to test_cpuflags application
> 
>  MAINTAINERS                                        |   6 +
>  app/test/test_cpuflags.c                           |  17 ++
>  config/defconfig_arm64-native-linuxapp-gcc         |  55 +++++
>  .../common/include/arch/arm64/rte_atomic.h         | 269 +++++++++++++++++++++
>  .../common/include/arch/arm64/rte_byteorder.h      | 157 ++++++++++++
>  .../common/include/arch/arm64/rte_cpuflags.h       | 137 +++++++++++
>  .../common/include/arch/arm64/rte_cycles.h         |  77 ++++++
>  .../common/include/arch/arm64/rte_memcpy.h         | 266 ++++++++++++++++++++
>  .../common/include/arch/arm64/rte_prefetch.h       |  61 +++++
>  .../common/include/arch/arm64/rte_rwlock.h         |  70 ++++++
>  .../common/include/arch/arm64/rte_spinlock.h       | 114 +++++++++
>  .../common/include/arch/arm64/rte_vect.h           | 102 ++++++++
>  mk/arch/arm64/rte.vars.mk                          |  58 +++++
>  mk/machine/armv8-a/rte.vars.mk                     |  57 +++++
>  mk/rte.cpuflags.mk                                 |   9 +
>  15 files changed, 1455 insertions(+)
>  create mode 100644 config/defconfig_arm64-native-linuxapp-gcc
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_atomic.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_byteorder.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_cpuflags.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_cycles.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_memcpy.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_prefetch.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_rwlock.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_spinlock.h
>  create mode 100644 lib/librte_eal/common/include/arch/arm64/rte_vect.h
>  create mode 100644 mk/arch/arm64/rte.vars.mk
>  create mode 100644 mk/machine/armv8-a/rte.vars.mk
> 



-- 
   Jan Viktorin                  E-mail: Viktorin at RehiveTech.com
   System Architect              Web:    www.RehiveTech.com
   RehiveTech
   Brno, Czech Republic


More information about the dev mailing list