[dpdk-dev] [PATCH 00/12] DPDK armv8-a support

Jerin Jacob jerin.jacob at caviumnetworks.com
Tue Nov 3 14:09:01 CET 2015


This is the v1 patchset for ARMv8 that now sits on top of the v6 patch
of the ARMv7 code by RehiveTech. It adds code into the same arm include
directory, reducing code duplication.

Tested on an ThunderX arm 64-bit arm server board, with PCI slots. Passes traffic
between two physical ports on an Intel 82599 dual-port 10Gig NIC. Should
work with many other NICS as long as long as there is no unaligned access to
device memory but not yet untested.

Compiles igb_uio, kni and all the physical device PMDs.

An entry has been added to the Release notes.

NOTE:
Part of the work has been taken from David Hunt's v3 patch who was
initiated the armv8 port.

Notes on arm64 kernel configuration:

  Tested on using Ubuntu 14.04 LTS with a 3.18 kernel and igb_uio.
  ARM64 kernels does not 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.

  Following patch fixes the PCI resource mapping issue om armv8.
  Its not yet up streamed.We are in the process of up streaming it.

  http://lists.infradead.org/pipermail/linux-arm-kernel/2015-July/358906.html


Jerin Jacob (12):
  eal: arm64: add armv8-a version of rte_atomic_64.h
  eal: arm64: add armv8-a version of rte_cpuflags_64.h
  eal: arm64: add armv8-a version of rte_prefetch_64.h
  eal: arm64: add armv8-a version of rte_cycles_64.h
  eal: arm64: rte_memcpy_64.h version based libc memcpy
  eal: arm: ret_vector.h improvements
  app: test: added the new cpu flags of arm64 in test_cpuflags test case
  acl: arm64: acl implementation using NEON gcc intrinsic
  mk: add support for armv8 on top of armv7
  mk: add support for thunderx machine target based armv8-a
  updated release note for armv8 support for DPDK 2.2
  maintainers: claim responsibility for ARMv8

 MAINTAINERS                                        |   5 +
 app/test-acl/main.c                                |   4 +
 app/test/test_cpuflags.c                           |  26 ++
 config/defconfig_arm64-armv8a-linuxapp-gcc         |  56 ++++
 config/defconfig_arm64-thunderx-linuxapp-gcc       |  56 ++++
 doc/guides/rel_notes/release_2_2.rst               |   7 +-
 lib/librte_acl/Makefile                            |   5 +
 lib/librte_acl/acl.h                               |   4 +
 lib/librte_acl/acl_run_neon.c                      |  46 ++++
 lib/librte_acl/acl_run_neon.h                      | 290 +++++++++++++++++++++
 lib/librte_acl/rte_acl.c                           |  25 ++
 lib/librte_acl/rte_acl.h                           |   1 +
 .../common/include/arch/arm/rte_atomic.h           |   4 +
 .../common/include/arch/arm/rte_atomic_64.h        |  88 +++++++
 .../common/include/arch/arm/rte_cpuflags.h         |   4 +
 .../common/include/arch/arm/rte_cpuflags_64.h      | 152 +++++++++++
 .../common/include/arch/arm/rte_cycles.h           |   4 +
 .../common/include/arch/arm/rte_cycles_64.h        |  71 +++++
 .../common/include/arch/arm/rte_memcpy.h           |   4 +
 .../common/include/arch/arm/rte_memcpy_64.h        |  93 +++++++
 .../common/include/arch/arm/rte_prefetch.h         |   4 +
 .../common/include/arch/arm/rte_prefetch_64.h      |  61 +++++
 lib/librte_eal/common/include/arch/arm/rte_vect.h  |  58 ++---
 mk/arch/arm64/rte.vars.mk                          |  58 +++++
 mk/machine/armv8a/rte.vars.mk                      |  58 +++++
 mk/machine/thunderx/rte.vars.mk                    |  58 +++++
 26 files changed, 1198 insertions(+), 44 deletions(-)
 create mode 100644 config/defconfig_arm64-armv8a-linuxapp-gcc
 create mode 100644 config/defconfig_arm64-thunderx-linuxapp-gcc
 create mode 100644 lib/librte_acl/acl_run_neon.c
 create mode 100644 lib/librte_acl/acl_run_neon.h
 create mode 100644 lib/librte_eal/common/include/arch/arm/rte_atomic_64.h
 create mode 100644 lib/librte_eal/common/include/arch/arm/rte_cpuflags_64.h
 create mode 100644 lib/librte_eal/common/include/arch/arm/rte_cycles_64.h
 create mode 100644 lib/librte_eal/common/include/arch/arm/rte_memcpy_64.h
 create mode 100644 lib/librte_eal/common/include/arch/arm/rte_prefetch_64.h
 create mode 100644 mk/arch/arm64/rte.vars.mk
 create mode 100644 mk/machine/armv8a/rte.vars.mk
 create mode 100644 mk/machine/thunderx/rte.vars.mk

-- 
2.1.0



More information about the dev mailing list