From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 84A185A5E for ; Fri, 23 Oct 2015 16:17:41 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP; 23 Oct 2015 07:17:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,186,1444719600"; d="scan'208";a="817870431" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga001.fm.intel.com with ESMTP; 23 Oct 2015 07:17:27 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t9NEHRRt002457; Fri, 23 Oct 2015 15:17:27 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id t9NEHRNQ017692; Fri, 23 Oct 2015 15:17:27 +0100 Received: (from dhunt5@localhost) by sivswdev02.ir.intel.com with id t9NEHR5m017688; Fri, 23 Oct 2015 15:17:27 +0100 From: David Hunt To: dev@dpdk.org Date: Fri, 23 Oct 2015 15:17:02 +0100 Message-Id: <1445609833-17649-1-git-send-email-david.hunt@intel.com> X-Mailer: git-send-email 1.7.4.1 Cc: ben.boren@intel.com Subject: [dpdk-dev] [PATCH 00/11] add armv8 architecture support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Oct 2015 14:17:42 -0000 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 -- 2.1.4