DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: <dev@dpdk.org>
Subject: [dpdk-dev]  [PATCH v3 00/14] DPDK armv8-a support
Date: Fri, 6 Nov 2015 15:10:19 +0530	[thread overview]
Message-ID: <1446802833-22265-1-git-send-email-jerin.jacob@caviumnetworks.com> (raw)

This is the v3 patchset for ARMv8 that now sits on top of the v6 patch
(based on upstream 82fb702077f67585d64a07de0080e5cb6a924a72)
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 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.

v1..v2

1) included  "Introduce rte_smp_*mb() for memory barriers to use between lcores"
patch ACK by Konstantin in v2 as
"eal: introduce rte_smp_*mb() for memory barriers to use between lcores"
please superseded the original one

2) defined rte_smp_mb(), rte_smp_wmb(), rte_smp_rmb() for arm
(1) and (2) fixes "Mbuf autotest" stress failure found in version 1

3) fixed white space issues with patch 8,9,10

4) disabled  CONFIG_RTE_LIBRTE_FM10K_PMD, CONFIG_RTE_LIBRTE_I40E_PMD
due to tmmintrin.h depenency or ARM

v2..v3

1) moved disabled  CONFIG_RTE_LIBRTE_FM10K_PMD, CONFIG_RTE_LIBRTE_I40E_PMD
to "mk: add support for armv8 on top of armv7" and
"mk: add support for thunderx machine target based on armv8-a"
to fix compilation issue per patch


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 (14):
  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 on libc memcpy
  eal: arm: ret_vector.h improvements
  app: test_cpuflags: test the new cpu flags added for arm64
  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 on armv8-a
  updated release note for armv8 support for DPDK 2.2
  maintainers: claim responsibility for ARMv8
  eal: introduce rte_smp_*mb() for memory barriers to use between lcores
  eal: arm: define rte_smp_mb(), rte_smp_wmb(), rte_smp_rmb() for arm

 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 +-
 drivers/net/virtio/virtqueue.h                     |   8 +-
 drivers/net/xenvirt/rte_eth_xenvirt.c              |   4 +-
 drivers/net/xenvirt/virtqueue.h                    |   2 +-
 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                      | 289 +++++++++++++++++++++
 lib/librte_acl/rte_acl.c                           |  25 ++
 lib/librte_acl/rte_acl.h                           |   1 +
 .../common/include/arch/arm/rte_atomic.h           |  10 +
 .../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  |  54 ++--
 .../common/include/arch/ppc_64/rte_atomic.h        |   6 +
 .../common/include/arch/tile/rte_atomic.h          |   6 +
 .../common/include/arch/x86/rte_atomic.h           |   6 +
 lib/librte_eal/common/include/generic/rte_atomic.h |  27 ++
 lib/librte_ring/rte_ring.h                         |   8 +-
 mk/arch/arm64/rte.vars.mk                          |  58 +++++
 mk/machine/armv8a/rte.vars.mk                      |  58 +++++
 mk/machine/thunderx/rte.vars.mk                    |  58 +++++
 34 files changed, 1256 insertions(+), 54 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

-- 
1.9.3

             reply	other threads:[~2015-11-06  9:41 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06  9:40 Jerin Jacob [this message]
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 01/14] eal: arm64: add armv8-a version of rte_atomic_64.h Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 02/14] eal: arm64: add armv8-a version of rte_cpuflags_64.h Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 03/14] eal: arm64: add armv8-a version of rte_prefetch_64.h Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 04/14] eal: arm64: add armv8-a version of rte_cycles_64.h Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 05/14] eal: arm64: rte_memcpy_64.h version based on libc memcpy Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 06/14] eal: arm: ret_vector.h improvements Jerin Jacob
2015-11-18 18:56   ` Thomas Monjalon
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 07/14] app: test_cpuflags: test the new cpu flags added for arm64 Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 08/14] acl: arm64: acl implementation using NEON gcc intrinsic Jerin Jacob
2015-11-06  9:52   ` Ananyev, Konstantin
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 09/14] mk: add support for armv8 on top of armv7 Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 10/14] mk: add support for thunderx machine target based on armv8-a Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 11/14] updated release note for armv8 support for DPDK 2.2 Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 12/14] maintainers: claim responsibility for ARMv8 Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 13/14] eal: introduce rte_smp_*mb() for memory barriers to use between lcores Jerin Jacob
2015-11-06  9:40 ` [dpdk-dev] [PATCH v3 14/14] eal: arm: define rte_smp_mb(), rte_smp_wmb(), rte_smp_rmb() for arm Jerin Jacob
2015-11-18 21:48 ` [dpdk-dev] [PATCH v3 00/14] DPDK armv8-a support Thomas Monjalon

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=1446802833-22265-1-git-send-email-jerin.jacob@caviumnetworks.com \
    --to=jerin.jacob@caviumnetworks.com \
    --cc=dev@dpdk.org \
    /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).