bpf/arm: add build infrastructure

Add build infrastructure and documentation
update for arm64 JIT support.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
Jerin Jacob 2019-09-03 16:29:31 +05:30 committed by Thomas Monjalon
parent fc8b96fbc0
commit 6861c01001
8 changed files with 34 additions and 4 deletions

View File

@ -251,6 +251,7 @@ M: Gavin Hu <gavin.hu@arm.com>
F: lib/librte_eal/common/include/arch/arm/*_64.h
F: lib/librte_net/net_crc_neon.h
F: lib/librte_acl/acl_run_neon.*
F: lib/librte_bpf/bpf_jit_arm64.c
F: lib/librte_lpm/rte_lpm_neon.h
F: lib/librte_hash/rte*_arm64.h
F: lib/librte_efd/rte*_arm64.h

View File

@ -30,7 +30,7 @@ The library API provides the following basic operations:
Not currently supported eBPF features
-------------------------------------
- JIT for non X86_64 platforms
- JIT support only available for X86_64 and arm64 platforms
- cBPF
- tail-pointer call
- eBPF MAP

View File

@ -110,6 +110,11 @@ New Features
Added stateful decompression support in the Intel QuickAssist Technology PMD.
Please note that stateful compression is not supported.
* **Added eBPF JIT support for arm64.**
Added eBPF JIT support for arm64 architecture to improve the eBPF program
performance.
Removed Items
-------------

View File

@ -31,6 +31,8 @@ SRCS-$(CONFIG_RTE_LIBRTE_BPF) += bpf_load_elf.c
endif
ifeq ($(CONFIG_RTE_ARCH_X86_64),y)
SRCS-$(CONFIG_RTE_LIBRTE_BPF) += bpf_jit_x86.c
else ifeq ($(CONFIG_RTE_ARCH_ARM64),y)
SRCS-$(CONFIG_RTE_LIBRTE_BPF) += bpf_jit_arm64.c
endif
# install header files

View File

@ -41,8 +41,10 @@ bpf_jit(struct rte_bpf *bpf)
{
int32_t rc;
#ifdef RTE_ARCH_X86_64
#if defined(RTE_ARCH_X86_64)
rc = bpf_jit_x86(bpf);
#elif defined(RTE_ARCH_ARM64)
rc = bpf_jit_arm64(bpf);
#else
rc = -ENOTSUP;
#endif

View File

@ -25,9 +25,8 @@ extern int bpf_validate(struct rte_bpf *bpf);
extern int bpf_jit(struct rte_bpf *bpf);
#ifdef RTE_ARCH_X86_64
extern int bpf_jit_x86(struct rte_bpf *);
#endif
extern int bpf_jit_arm64(struct rte_bpf *);
extern int rte_bpf_logtype;

View File

@ -0,0 +1,19 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(C) 2019 Marvell International Ltd.
*/
#include <errno.h>
#include <rte_common.h>
#include "bpf_impl.h"
/*
* Produce a native ISA version of the given BPF code.
*/
int
bpf_jit_arm64(struct rte_bpf *bpf)
{
RTE_SET_USED(bpf);
return -ENOTSUP;
}

View File

@ -10,6 +10,8 @@ sources = files('bpf.c',
if arch_subdir == 'x86' and dpdk_conf.get('RTE_ARCH_64')
sources += files('bpf_jit_x86.c')
elif dpdk_conf.has('RTE_ARCH_ARM64')
sources += files('bpf_jit_arm64.c')
endif
install_headers = files('bpf_def.h',